Követelmények
Az útmutatóban használt köteg
Telepítés
Választható csomagok
Telepítse a MariaDB szervert
Telepítse az Rbenv-t és a Rubyt
A Ruby on Rails egy népszerű webes keretrendszer a Ruby számára, amelyet a programozók termelékenységének növelésére fejlesztettek ki. Azonban a különféle drágakövek és függőségek összevonása néha bonyolult lehet. Ez az útmutató segít egy teljes, gyártásra kész Rails-környezet beállításában, beleértve a gyakran használt drágaköveket és függőségeket.
Követelmények
- Vultr példány legalább 512 MB RAM-mal (1024 MB előnyben).
- Ubuntu 17.04-et futtató Vultr példány.
Az útmutatóban használt köteg
- Nginx : egy gyors és hatékony webszerver. (verzió 1.10.3)
- Passenger : egy alkalmazásszerver, amely segít az Nginxnek a Ruby alkalmazás kiszolgálásában. (verzió 1.5.1.8)
- Rbenv : Ruby verziókezelő. (verzió 1.1.1-2)
- Ruby : (2.4.1-es verzió)
- MariaDB : a MySQL szerver nyílt forráskódú ága (verzió 10.2)
- SSL- tanúsítvány a Let's Encrypt-től
Telepítés
Sudo-felhasználó hozzáadása
Megjegyzés : Erősen ajánlott, hogy ne telepítse ezeket a szolgáltatásokat rootként, mert támadásnak teheti ki magát. A deployvagy a appfelhasználó beállítása egy általános konvenció:
sudo adduser deploy
sudo adduser deploy sudo
su deploy
Rendszer frissítése és frissítése
Győződjön meg arról, hogy az összes legújabb csomagot futtatja Ubuntu virtuális gépén:
sudo apt-get update && sudo apt-get upgrade -y
Telepítse a Build System rendszert
Ahhoz, hogy le tudjuk fordítani a Rubyt az rbenv és más drágakövek használatával, különféle csomagokat kell telepíteni. Attól függően, hogy a Ruby melyik verziójára lesz szüksége, előfordulhat, hogy egyes csomagokra nincs szükség.
Összeállítás
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-támogatási csomagok
Ezekre több drágakő összeállításához van szükség, mint például az Utas:
sudo apt-get install -y zlib1g zlib1g-dev libssl-dev libyaml-dev libcurl4-openssl-dev libruby
Verziószámítás
A Ruby közösség a Git-et használja választott SCM-ként; de továbbiak is telepíthetők, mint például a Mercurial vagy a Subversion:
sudo apt-get install -y git git-core
Adatbázis-illesztőprogramok a MySQL / MariaDB számára
sudo apt-get install -y libmysqld-dev mysql-client libmysqlclient-dev
Nokogiri
Számos népszerű gyöngyszemhez szükséges, amelyekhez natív XML libre van szükség:
sudo apt-get install -y libxml2-dev libxslt-dev
Node.js
Adjon hozzá hivatalos adattárakat a Node-ból a legújabb verzióval, mivel az alapértelmezett Ubuntu-lerakatok általában lemaradnak néhány nagyobb verziótól:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
Választható csomagok
Ezek a csomagok nem szükségesek a rendszer működéséhez, de jó, ha rendelkezünk, ha bizonyos gyöngyszemeket kell használni.
Grafikonok és képek
Ezek a könyvtárak nem szükségesek, és kihagyhatók, hacsak nem tervezi képmanipulációs drágakövek használatát; mint például Rmagick:
sudo apt-get install -y imagemagick libmagickwand-dev libvips-dev
Adatbázis-illesztőprogramok SQLite és PostgreSQL számára
Telepítse az SQLite vagy PostgreSQL illesztőprogramjait, ha más adatbázisokhoz kell csatlakoznia, vagy egy egyszerű, helyi DB-t szeretne:
sudo apt-get install -y libsqlite3-dev sqlite3 libpq-dev postgresql postgresql-contrib
Eszközök
Olyan segédprogramok, amelyek általában nem érkeznek előre telepítve egy friss Ubuntu-telepítésre. Nyugodtan telepítse a kívánt szövegszerkesztőt:
sudo apt-get install -y iotop htop nano vim
Telepítse a MariaDB szervert
A MariaDB egy erőteljes relációs SQL szerver, amely teljes mértékben kompatibilis a MySQL-lel. A MariaDB legújabb verziójának telepítésének legegyszerűbb módja a hivatalos adattárak használata:
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
Kövesse az utasításokat, és állítson be root jelszót. Ezt követően ellenőrizze, hogy hozzáfér-e a friss telepítéshez:
mysql -V
Egy ehhez hasonló sort fog megjeleníteni:
mysql Ver 15.1 Distrib 10.2.8-MariaDB, for debian-linux-gnu (x86_64) using readline 5
Jelentkezzen be a MySQL shellbe:
mysql -h localhost -u root -p
Megjegyzés : használja \qa kilépéshez.
Telepítse az Rbenv-t és a Rubyt
Rbenv
Telepítse az Rbenv-t a git segítségével. Ez a legegyszerűbb telepítési módszer, és lehetővé teszi a későbbi egyszerű frissítéseket. Telepítse továbbá ruby-builda Ruby különböző verzióinak tényleges fordítását:
cd
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
Note: When you need to update simply cd ~/.rbenv and git pull.
Make Rbenv and Ruby-build available in the shell. To ensure that the export lines get inserted at the beginning of the .bashrc file, which is important for non-interactive bash commands, use these lines:
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
Check if Rbenv and Ruby-build installed and are available in shell:
rbenv install --list
If rbenv is not recognized, log out and log back into the shell.
Create a ~/.bash_profile file and point it to source your ~/.bashrc file. If you need to run any non-interactive shell commands from your Rails app, such as cron jobs setup by the whenever gem, it will use the same version of Ruby as your interactive shell. This can help prevent strange errors. Add this line to the ~/.bash_profile file:
if [ -f $HOME/.bashrc ]; then
source $HOME/.bashrc
fi
Ruby
Install Ruby 2.4.1:
rbenv install 2.4.1
Megjegyzés : Ez a folyamat 5-15 percig tarthat a virtuális gép erőforrásaitól függően, és nincs folyamatjelző sáv.
Tegye elérhetővé az Rbenv-t mindenhol.
rbenv global 2.4.1
Utas és Nginx
Adja hozzá a PGP-kulcsot és a HTTPS-támogatást az apt-hoz:
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
Adja hozzá az utastárat:
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
Telepítse a Passenger + Nginx modulokat:
sudo apt-get install -y nginx
sudo apt-get install -y libnginx-mod-http-passenger
Látogassa meg Vultr-példányát annak tartománynevével vagy IP-címével, hogy tesztelje ezeket ezen a ponton. Ha működnek, az oldalon az alapértelmezett Nginx üdvözlőoldal jelenik meg.
Setup Rails, az App és Configure Passenger
Bundler és sínek telepítése:
gem install bundler rails --no-ri --no-rdoc
Az Ubuntu/Debian konvenció szerint az alkalmazást itt kell beállítani /var/www. Alapértelmezés szerint csak root által írható. A beállítás működéséhez adja át a tulajdonjogot a sudo felhasználónak deploy:
sudo chown deploy:deploy /var/www -R
A sínek alkalmazás létrehozása itt: /var/www/. Ha már rendelkezik egy alkalmazással, amelyet telepíteni szeretne, git cloneitt futtassa bundle:
cd /var/www
rails new example --database=mysql
Állítsa be az Utast úgy, hogy az alkalmazásra mutasson.
Nginx előkészítése.
sudo nano /etc/nginx/nginx.conf
Felhasználó módosítása erre: deploy.
user deploy;
A httpkonfiguráció részében egy sornak kell lennie, amely megmondja az Nginx-nek, hogy töltse be a modulokat, beleértve az utasokat is. Ha hiányzik, hozzáadhatja közvetlenül a Virtual Host Configscím után , de előtte sites-enabled.
include /etc/nginx/conf.d/*.conf;
Szerkessze/hozza létre a passenger.conffájlt.
sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
Mondja meg az Utasnak, hogy használja az Rbenv-beállításunkat. Tartalmazhat egy sort, amely a Passengerhez mellékelt Ruby verzióra mutat, csak töröld vagy írd megjegyzésbe.
passenger_ruby /home/deploy/.rbenv/shims/ruby;
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
Állítsa be a virtuális gazdagépet, hogy az alkalmazásra mutasson /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
}
Indítsa újra az Nginxet.
sudo service nginx restart
Ezen a ponton az alkalmazás készen áll a fejlesztési módban való használatra. Az éles módra váltáshoz vissza kell térnie az Nginx konfigurációjához, és módosítania kell a rails_envbeállítást a következőre production.
Mielőtt éles módba váltana, be kell állítania éles adatbázisát example_production, database.yml, és titkos kulcsát. Tekintse meg az olyan eszközöket, mint a Capistrano vagy a Mina az alkalmazástelepítési folyamat felgyorsításához. Jó gyakorlat az ENV-változók használata olyan drágakővel, mint a dotenv, és ne hagyd a jelszavaidat, titkos kulcsaidat és hasonlókat a git-tárhelyedben.
SSL beállítása
Számos szolgáltatás kínál SSL-tanúsítványokat az Ön domainjéhez, sok fizetős, néhány pedig ingyenes. Állítsa be az SSL-t, függetlenül attól, hogy milyen szolgáltatást használ. A Let's Encrypt nagyon egyszerűen és ingyenesen használható. A Let's Encrypt egy non-profit szervezet, amelyet számos technológiai óriás támogat.
Telepítés
Futtassa a következő parancsokat, és kövesse az utasításokat.
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
Ha most a Vultr-példányhoz lép a használatával HTTPS, egy biztonságos webhelyet fog látni.
Megújítás
Az újonnan kiállított tanúsítvány lejár, és rendszeresen meg kell újítani. Ennek legegyszerűbb módja egy cron feladat beállítása.
sudo crontab -e
30 2 * * 1 /usr/bin/certbot renew
Utolsó, de nem kötelező lépésként indítsa újra a virtuális gépet, és győződjön meg arról, hogy minden szolgáltatás a várt módon újraindul.