Αυτό το άρθρο θα σας καθοδηγήσει στην ανάπτυξη της εφαρμογής Meteor σε ένα Vultr VPS που εκτελεί το Ubuntu 14.04. Μπορεί επίσης να λειτουργήσει σε άλλες διανομές Linux (προσπάθεια με δική σας ευθύνη).
Ένας έξυπνος συνεργάτης ονόματι Arunoda Susiripala, ο οποίος είναι αρκετά ενεργός στην κοινότητα του Meteor, έχει αναπτύξει ένα εργαλείο ανάπτυξης που ονομάζεται mupx (συντομογραφία του "Meteor Up X"), το οποίο καθιστά εξαιρετικά εύκολη την ανάπτυξη της εφαρμογής Meteor σε έναν απομακρυσμένο διακομιστή μέσω ssh. Το Mupx είναι ο διάδοχος του mup. Θα σας καθοδηγήσουμε στη διαδικασία από την αρχή μέχρι το τέλος. Ο Mup κάνει το μεγαλύτερο μέρος της άρσης βαρέων, ευτυχώς, οπότε αυτό θα είναι ένα αεράκι!
Το πρώτο μας βήμα είναι να εγκαταστήσουμε το mupx. Αυτό θα το κάνετε στον σταθμό εργασίας ανάπτυξης, όχι στον διακομιστή VPS! Βεβαιωθείτε ότι έχετε ήδη εγκαταστήσει το Node.js και εκτελέστε:
$ npm install -g mupx
Αφού ολοκληρωθεί η εγκατάσταση, μεταβείτε στον φάκελο του έργου Meteor, π.χ. /projects/myApp, και εκτελέστε τις ακόλουθες εντολές:
$ mkdir .deploy
$ cd $_
$ mupx init
Για όσους δεν είναι εξοικειωμένοι με τη $_σύνταξη, είναι μια συντόμευση για το τελευταίο όρισμα που χρησιμοποιείται σε μια εντολή. Έτσι, σε αυτήν την περίπτωση, cd $_εκτελείται ως cd .deploy.
Θα δείτε την ακόλουθη έξοδο:
Meteor Up: Production Quality Meteor Deployments
------------------------------------------------
Configuration file : mup.json
Settings file : settings.json
Empty Project Initialized!
Η διαδικασία προετοιμασίας δημιουργεί δύο αρχεία mup.jsonκαι settings.json. Θα αφήσουμε τον τελευταίο φάκελο μόνο του αμέσως τώρα. Προχωρήστε και ανοίξτε mup.json. Κατά τη στιγμή της σύνταξης αυτού του άρθρου, η προεπιλογή mup.jsonμοιάζει με αυτό:
{
// Server authentication info
"servers": [
{
"host": "hostname",
"username": "root",
"password": "password",
// or pem file (ssh based authentication)
// WARNING: Keys protected by a passphrase are not supported
//"pem": "~/.ssh/id_rsa"
// Also, for non-standard ssh port use this
//"sshOptions": { "port" : 49154 },
// server specific environment variables
"env": {}
}
],
// Install MongoDB on the server. Does not destroy the local MongoDB on future setups
"setupMongo": true,
// Application name (no spaces).
"appName": "meteor",
// Location of app (local directory). This can reference '~' as the users home directory.
// i.e., "app": "~/Meteor/my-app",
// This is the same as the line below.
"app": "/path/to/the/app",
// Configure environment
// ROOT_URL must be set to your correct domain (https or http)
"env": {
"PORT": 80,
"ROOT_URL": "http://myapp.com"
},
// Meteor Up checks if the app comes online just after the deployment.
// Before mup checks that, it will wait for the number of seconds configured below.
"deployCheckWaitTime": 15,
// show a progress bar while uploading.
// Make it false when you deploy using a CI box.
"enableUploadProgressBar": true
}
Πρέπει να αλλάξουμε μερικά πράγματα για να λειτουργήσει η διαδικασία εγκατάστασης.
Πρώτα, φροντίστε να ορίσετε hostτη διεύθυνση IP VPS σας, για παράδειγμα:
"host": "123.123.123.123",
Εάν χρειάζεται να χρησιμοποιήσετε έναν αριθμό θύρας διαφορετικό από τον προεπιλεγμένο 22, μπορείτε να το κάνετε χρησιμοποιώντας το sshOptionsπεδίο, για παράδειγμα:
"host": "123.123.123.123",
"sshOptions": { "port": 9876 },
Ορίστε την usernameτιμή σε οποιονδήποτε χρήστη θέλετε να είναι κάτοχος της εγκατάστασης της εφαρμογής Meteor. Συνιστώ να αφαιρέσετε τη γραμμή κωδικού πρόσβασης και να χρησιμοποιήσετε ένα κλειδί SSH, για λόγους ασφαλείας. Καταργήστε το σχόλιο της γραμμής με την pemτιμή και βεβαιωθείτε ότι δείχνει στο μυστικό κλειδί SSH που αντιστοιχεί στο δημόσιο κλειδί SSH που έχετε εγκαταστήσει στο VPS σας (σε /root/.ssh/authorized_keys). Βεβαιωθείτε ότι έχετε προσθέσει κόμμα μετά τη γραμμή κωδικού πρόσβασης! Εάν το κλειδί σας SSH έχει μια φράση πρόσβασης συνδεδεμένη σε αυτό, αφαιρέστε pemεντελώς τη γραμμή και βεβαιωθείτε ότι το ιδιωτικό κλειδί SSH είναι αποθηκευμένο στην κρυφή μνήμη σε έναν πράκτορα ssh (π.χ. σε Mac, ssh-add <path to ssh private key>).
Αφήστε τη setupMongoρύθμιση στην προεπιλεγμένη τιμή.
Αλλάξτε appNameτο όνομα της εφαρμογής Meteor. Στην περίπτωσή μας:
"appName": "myApp",
... και ορίστε επίσης τη θέση της εφαρμογής, σε σχέση με αυτόν τον φάκελο ανάπτυξης:
"app": "..",
Τέλος, ορίστε το ROOT_URLστην καθορισμένη διεύθυνση URL για την εφαρμογή σας. Ρυθμίστε ρητά έναν αριθμό θύρας στην τυπική θύρα HTTP.
// Configure environment
"env": {
"ROOT_URL": "http://myapp.com",
"PORT": 80
},
Αυτό είναι! Αποθηκεύστε το mup.jsonαρχείο και μετά εκτελέστε:
$ mupx setup
Σε αυτό το σημείο, το mupx θα εισέλθει στο VPS σας, θα εγκαταστήσει το Docker, θα ρυθμίσει το περιβάλλον και θα τραβήξει τις κατάλληλες εικόνες Docker. Τώρα αναπτύξτε την εφαρμογή σας:
$ mupx deploy
Τώρα, αν μεταβείτε στο http://123.123.123.123, η εφαρμογή σας θα εμφανιστεί όταν φορτώσει η σελίδα.
Υποστήριξη πολλαπλών πυρήνων
Εάν το VPS σας έχει πολλούς πυρήνες, η εφαρμογή Meteor μπορεί να το εκμεταλλευτεί. Θα πρέπει απλώς να κάνουμε μερικές γρήγορες αλλαγές.
Αρχικά, θα χρειαστεί να εγκαταστήσετε το πακέτο συμπλέγματος. Μεταβείτε στο φάκελο της εφαρμογής Meteor (σε αυτό το παράδειγμα, /projects/myApp) και πληκτρολογήστε:
$ meteor add meteorhacks:cluster
Τώρα επεξεργαστείτε το mup.jsonαρχείο σας και τροποποιήστε την ενότητα της μεταβλητής περιβάλλοντος ως εξής:
// Configure environment
"env": {
"ROOT_URL": "http://myapp.com",
"PORT": 80,
"CLUSTER_WORKERS_COUNT": "auto"
},
Δεδομένου ότι έχουμε προσθέσει ένα νέο πακέτο στην εφαρμογή σας, θα πρέπει να το επανατοποθετήσετε.
$ mupx setup && mupx deploy
Εάν θέλετε ποτέ να αλλάξετε τις μεταβλητές του περιβάλλοντος mup.jsonχωρίς να χρειάζεται να αναπτύξετε ολόκληρη την εφαρμογή, απλώς χρησιμοποιήστε την εντολή reconfigure. Αυτό είναι χρήσιμο όταν δεν έγιναν αλλαγές στην εφαρμογή.
$ mupx reconfig
Συγχαρητήρια, η εφαρμογή Meteor είναι τώρα σε λειτουργία! Επίσης, η εφαρμογή σας θα ξεκινά αυτόματα κάθε φορά που το VPS σας επανεκκινεί. Έχετε το νου σας για μελλοντικά άρθρα σχετικά με την ανάπτυξη και τη διαχείριση του Meteor.