Απαιτήσεις
Στοίβα που χρησιμοποιείται σε αυτόν τον οδηγό
Εγκατάσταση
Προαιρετικά πακέτα
Εγκαταστήστε τον διακομιστή MariaDB
Εγκαταστήστε τα Rbenv και Ruby
Το Ruby on Rails είναι ένα δημοφιλές διαδικτυακό πλαίσιο για τη Ruby που αναπτύχθηκε για να αυξήσει την παραγωγικότητα ενός προγραμματιστή. Ωστόσο, το να συνεργαστούν διάφορα πετράδια και εξαρτήσεις μπορεί να είναι δύσκολο μερικές φορές. Αυτός ο οδηγός θα σας βοηθήσει να δημιουργήσετε ένα πλήρες περιβάλλον Rails έτοιμο για παραγωγή, συμπεριλαμβανομένων των κοινώς χρησιμοποιούμενων πολύτιμων λίθων και εξαρτήσεων.
Απαιτήσεις
- Στιγμιότυπο Vultr με τουλάχιστον 512 MB μνήμης RAM (1024 MB προτιμάται).
- Παράδειγμα Vultr που εκτελεί το Ubuntu 17.04.
Στοίβα που χρησιμοποιείται σε αυτόν τον οδηγό
- Nginx : ένας γρήγορος και ισχυρός διακομιστής ιστού. (έκδοση 1.10.3)
- Passenger : ένας διακομιστής εφαρμογών που θα βοηθήσει το Nginx να εξυπηρετήσει την εφαρμογή Ruby σας. (έκδοση 1.5.1.8)
- Rbenv : ένας διαχειριστής εκδόσεων Ruby. (έκδ. 1.1.1-2)
- Ruby : (έκδοση 2.4.1)
- MariaDB : ένας κλάδος ανοιχτού κώδικα του διακομιστή MySQL (έκδοση 10.2)
- Πιστοποιητικό SSL από το Let's Encrypt
Εγκατάσταση
Προσθήκη χρήστη Sudo
Σημείωση : Συνιστάται ιδιαίτερα να μην εγκαταστήσετε καμία από αυτές τις υπηρεσίες ως root, καθώς ενδέχεται να εκτεθείτε σε επίθεση. Η ρύθμιση ενός χρήστη deployή ενός appχρήστη είναι μια κοινή σύμβαση:
sudo adduser deploy
sudo adduser deploy sudo
su deploy
Ενημέρωση και αναβάθμιση συστήματος
Βεβαιωθείτε ότι εκτελείτε όλα τα πιο πρόσφατα πακέτα στο Ubuntu VM σας:
sudo apt-get update && sudo apt-get upgrade -y
Εγκαταστήστε το Build System
Για να μπορέσετε να μεταγλωττίσετε το Ruby χρησιμοποιώντας rbenv και άλλους πολύτιμους λίθους, πρέπει να εγκαταστήσετε διάφορα πακέτα. Ανάλογα με την έκδοση του Ruby που θα χρειαστείτε, ορισμένα από τα πακέτα ενδέχεται να μην χρειάζονται.
Σύνταξη
sudo apt-get install -y curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev
sudo apt-get install -y libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev
sudo apt-get install -y python-software-properties libffi-dev
sudo apt-get install -y build-essential openssl libreadline6 libreadline6-dev libreadline-dev
sudo apt-get install -y automake libtool bison pkg-config bison autoconf libc6-dev ncurses-dev
sudo apt-get install -y libapr1-dev libaprutil1-dev libx11-dev libffi-dev tcl-dev tk-dev
Πακέτα για υποστήριξη SSL
Αυτά είναι απαραίτητα για τη συλλογή πολλών πολύτιμων λίθων, όπως το Passenger:
sudo apt-get install -y zlib1g zlib1g-dev libssl-dev libyaml-dev libcurl4-openssl-dev libruby
Εκδόσεις
Η κοινότητα της Ruby χρησιμοποιεί το Git ως SCM επιλογής. αλλά επιπλέον, όπως Mercurial ή Subversion, μπορούν επίσης να εγκατασταθούν:
sudo apt-get install -y git git-core
Προγράμματα οδήγησης βάσεων δεδομένων για MySQL / MariaDB
sudo apt-get install -y libmysqld-dev mysql-client libmysqlclient-dev
Nokogiri
Απαιτείται για πολλά δημοφιλή πετράδια που χρειάζονται εγγενή lib XML:
sudo apt-get install -y libxml2-dev libxslt-dev
Node.js
Προσθέστε επίσημα αποθετήρια από το Node με την πιο πρόσφατη έκδοση ως προεπιλεγμένα αποθετήρια του Ubuntu τείνουν να υστερούν σε μερικές σημαντικές εκδόσεις:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
Προαιρετικά πακέτα
Αυτά τα πακέτα δεν απαιτούνται για την εκτέλεση του συστήματος, αλλά είναι καλό να τα έχετε εάν χρειαστεί να χρησιμοποιήσετε ορισμένα πετράδια.
Γραφήματα και εικόνες
Αυτές οι βιβλιοθήκες δεν είναι απαραίτητες και μπορούν να παραβλεφθούν εκτός και αν σκοπεύετε να χρησιμοποιήσετε πολύτιμους λίθους χειρισμού εικόνων. όπως το Rmagick:
sudo apt-get install -y imagemagick libmagickwand-dev libvips-dev
Προγράμματα οδήγησης βάσεων δεδομένων για SQLite και PostgreSQL
Εγκαταστήστε προγράμματα οδήγησης για SQLite ή PostgreSQL εάν χρειάζεται να συνδεθείτε σε άλλες βάσεις δεδομένων ή προτιμάτε ένα απλό, τοπικό DB:
sudo apt-get install -y libsqlite3-dev sqlite3 libpq-dev postgresql postgresql-contrib
Εργαλεία
Βοηθητικά προγράμματα που συνήθως δεν είναι προεγκατεστημένα σε μια νέα εγκατάσταση του Ubuntu. Μη διστάσετε να εγκαταστήσετε τον επεξεργαστή κειμένου της επιλογής σας:
sudo apt-get install -y iotop htop nano vim
Εγκαταστήστε τον διακομιστή MariaDB
Το MariaDB είναι ένας ισχυρός σχεσιακός διακομιστής SQL, ο οποίος είναι πλήρως συμβατός με τη MySQL. Ο ευκολότερος τρόπος εγκατάστασης της πιο πρόσφατης έκδοσης του MariaDB είναι η χρήση επίσημων αποθετηρίων:
sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386] http://ftp.utexas.edu/mariadb/repo/10.2/ubuntu zesty main'
sudo apt update
sudo apt install -y mariadb-server
Ακολουθήστε τις οδηγίες και ορίστε έναν κωδικό πρόσβασης root. Στη συνέχεια, βεβαιωθείτε ότι έχετε πρόσβαση στη νέα σας εγκατάσταση:
mysql -V
Θα εμφανίσει μια γραμμή παρόμοια με αυτήν:
mysql Ver 15.1 Distrib 10.2.8-MariaDB, for debian-linux-gnu (x86_64) using readline 5
Συνδεθείτε στο κέλυφος της MySQL:
mysql -h localhost -u root -p
Σημείωση : χρησιμοποιήστε το \qγια έξοδο.
Εγκαταστήστε τα Rbenv και Ruby
Rbenv
Εγκαταστήστε το Rbenv χρησιμοποιώντας το git. Αυτή είναι η απλούστερη μέθοδος εγκατάστασης και επιτρέπει εύκολες ενημερώσεις αργότερα. Επίσης, εγκαταστήστε το ruby-build, είναι υπεύθυνο για τη δημιουργία διαφορετικών εκδόσεων του Ruby:
cd
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
Σημείωση : Όταν χρειάζεται να ενημερώσετε απλά cd ~/.rbenvκαι git pull.
Κάντε Rbenv και Ruby-build διαθέσιμα στο κέλυφος. Για να διασφαλίσετε ότι οι γραμμές εξαγωγής εισάγονται στην αρχή του .bashrcαρχείου, κάτι που είναι σημαντικό για μη διαδραστικές εντολές bash, χρησιμοποιήστε αυτές τις γραμμές:
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.temp_bashrc
echo 'eval "$(rbenv init -)"' >> ~/.temp_bashrc
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.temp_bashrc
cat ~/.temp_bashrc ~/.bashrc > ~/.combined_bashrc && mv ~/.combined_bashrc ~/.bashrc && rm ~/.temp_bashrc
exec $SHELL
Ελέγξτε εάν τα Rbenv και Ruby-build έχουν εγκατασταθεί και είναι διαθέσιμα σε κέλυφος:
rbenv install --list
Εάν rbenvδεν αναγνωρίζεται, αποσυνδεθείτε και συνδεθείτε ξανά στο κέλυφος.
Δημιουργήστε ένα ~/.bash_profileαρχείο και τοποθετήστε το στην πηγή του ~/.bashrcαρχείου σας . Εάν χρειάζεται να εκτελέσετε εντολές μη διαδραστικού κελύφους από την εφαρμογή Rails, όπως τη ρύθμιση των εργασιών cron από το whenevergem, θα χρησιμοποιήσει την ίδια έκδοση του Ruby με το διαδραστικό σας κέλυφος. Αυτό μπορεί να βοηθήσει στην αποφυγή περίεργων σφαλμάτων. Προσθέστε αυτή τη γραμμή στο ~/.bash_profileαρχείο:
if [ -f $HOME/.bashrc ]; then
source $HOME/.bashrc
fi
Ρουμπίνι
Εγκαταστήστε το Ruby 2.4.1:
rbenv install 2.4.1
Σημείωση : Αυτή η διαδικασία μπορεί να διαρκέσει 5-15 λεπτά ανάλογα με τους πόρους στο VM σας και δεν υπάρχει γραμμή προόδου.
Κάντε το Rbenv διαθέσιμο παντού.
rbenv global 2.4.1
Επιβάτης και Nginx
Προσθέστε το κλειδί PGP και την υποστήριξη HTTPS για το apt:
sudo apt-get install -y dirmngr gnupg
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
sudo apt-get install -y apt-transport-https ca-certificates
Προσθέστε το αποθετήριο επιβατών:
sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger zesty main > /etc/apt/sources.list.d/passenger.list'
sudo apt-get update
Εγκαταστήστε τις μονάδες Passenger + Nginx:
sudo apt-get install -y nginx
sudo apt-get install -y libnginx-mod-http-passenger
Επισκεφτείτε την παρουσία του Vultr χρησιμοποιώντας το όνομα τομέα ή την IP του για να τα δοκιμάσετε σε αυτό το σημείο. Εάν λειτουργούν, η σελίδα σας θα εμφανίζει την προεπιλεγμένη σελίδα καλωσορίσματος Nginx.
Ρυθμίστε το Rails, την εφαρμογή και διαμορφώστε τον επιβάτη
Εγκαταστήστε το Bundler and Rails:
gem install bundler rails --no-ri --no-rdoc
Η σύμβαση Ubuntu/Debian είναι να ρυθμίσετε την εφαρμογή σας σε /var/www. Από προεπιλογή μπορεί να εγγραφεί μόνο μέσω root. Για να λειτουργήσει η ρύθμιση, δώστε την κυριότητα στον χρήστη sudo deploy:
sudo chown deploy:deploy /var/www -R
Δημιουργήστε την εφαρμογή rails στο /var/www/. Εάν έχετε ήδη μια εφαρμογή που θέλετε να αναπτύξετε, git cloneτην εδώ και μετά εκτελέστε bundle:
cd /var/www
rails new example --database=mysql
Διαμορφώστε το Passenger για να δείχνει προς την εφαρμογή.
Προετοιμασία Nginx.
sudo nano /etc/nginx/nginx.conf
Αλλαγή χρήστη σε deploy.
user deploy;
Στην httpενότητα της διαμόρφωσης, θα πρέπει να υπάρχει μια γραμμή που θα λέει στο Nginx να φορτώσει μονάδες, συμπεριλαμβανομένων των επιβατών. Εάν λείπει, μπορείτε να το προσθέσετε αμέσως μετά τον Virtual Host Configsτίτλο, αλλά πριν από sites-enabled.
include /etc/nginx/conf.d/*.conf;
Επεξεργασία/δημιουργία του passenger.confαρχείου.
sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
Πείτε στον επιβάτη να χρησιμοποιήσει τη ρύθμιση Rbenv. Μπορεί να περιέχει μια γραμμή που δείχνει την έκδοση Ruby που περιλαμβάνεται στο Passenger, απλώς διαγράψτε την ή σχολιάστε την.
passenger_ruby /home/deploy/.rbenv/shims/ruby;
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
Ρυθμίστε τον εικονικό κεντρικό υπολογιστή για να δείχνει την εφαρμογή στο /var/www/example/.
sudo nano /etc/nginx/sites-enabled/example.conf
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example/public;
passenger_enabled on;
# When you are ready to switch to production mode - change this to `production`
passenger_app_env development; # <-- !important
}
Επανεκκινήστε το Nginx.
sudo service nginx restart
Σε αυτό το σημείο η εφαρμογή σας είναι έτοιμη για χρήση σε λειτουργία ανάπτυξης. Για να μεταβείτε στη λειτουργία παραγωγής, πρέπει να επιστρέψετε στη διαμόρφωση Nginx και να αλλάξετε τη rails_envρύθμιση σε production.
Πριν μεταβείτε στη λειτουργία παραγωγής, θα πρέπει ακόμα να ρυθμίσετε τη βάση δεδομένων παραγωγής σας example_production, database.ymlκαι το μυστικό κλειδί. Ελέγξτε ένα εργαλείο όπως το Capistrano ή το Mina για να επιταχύνετε τη διαδικασία ανάπτυξης της εφαρμογής σας. Είναι καλή πρακτική να χρησιμοποιείτε μεταβλητές ENV με ένα στολίδι όπως το dotenv, και να μην δεσμεύετε τους κωδικούς πρόσβασης, τα μυστικά κλειδιά και άλλα παρόμοια στο αποθετήριο git σας.
Ρύθμιση SSL
Υπάρχουν πολλές υπηρεσίες εκεί έξω που προσφέρουν πιστοποιητικά SSL για τον τομέα σας, πολλές πληρώνονται και μερικές είναι δωρεάν. Ρυθμίστε το SSL ανεξάρτητα από την υπηρεσία που χρησιμοποιείτε. Το Let's Encrypt είναι πολύ εύκολο και δωρεάν στη χρήση. Το Let's Encrypt είναι ένας μη κερδοσκοπικός οργανισμός που υποστηρίζεται από πολλούς τεχνολογικούς γίγαντες.
Εγκατάσταση
Εκτελέστε τις ακόλουθες εντολές και ακολουθήστε τις οδηγίες.
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx
sudo certbot --nginx
sudo certbot renew --dry-run
Εάν μεταβείτε στην παρουσία σας Vultr τώρα χρησιμοποιώντας το HTTPS, θα δείτε έναν ασφαλή ιστότοπο.
Ανανέωση
Το πιστοποιητικό σας που εκδόθηκε πρόσφατα θα λήξει και θα πρέπει να ανανεώνεται περιοδικά. Ο ευκολότερος τρόπος για να το κάνετε αυτό είναι να δημιουργήσετε μια εργασία cron.
sudo crontab -e
30 2 * * 1 /usr/bin/certbot renew
Ως τελευταίο, αλλά προαιρετικό βήμα, επανεκκινήστε το VM σας και βεβαιωθείτε ότι όλες οι υπηρεσίες ξεκινούν όπως αναμένεται.