Kërkesat
Stack i përdorur në këtë udhëzues
Instalimi
Paketat Opsionale
Instaloni serverin MariaDB
Instaloni Rbenv dhe Ruby
Ruby on Rails është një kornizë e njohur në internet për Ruby që u zhvillua për të rritur produktivitetin e një programuesi. Megjithatë, marrja e gurëve të çmuar dhe varësive të ndryshme për të punuar së bashku mund të jetë e ndërlikuar ndonjëherë. Ky udhëzues do t'ju ndihmojë të krijoni një mjedis të plotë të Rails gati për prodhimin, duke përfshirë gurët e çmuar dhe vartësitë e përdorura zakonisht.
Kërkesat
- Shembull Vultr me të paktën 512 MB RAM (preferohen 1024 MB).
- Shembull Vultr që ekzekuton Ubuntu 17.04.
Stack i përdorur në këtë udhëzues
- Nginx : një server i shpejtë dhe i fuqishëm në internet. (versioni 1.10.3)
- Pasagjeri : një server aplikacioni që do të ndihmojë Nginx të shërbejë aplikacionin tuaj Ruby. (versioni 1.5.1.8)
- Rbenv : një menaxher i versionit Ruby. (vergjet 1.1.1-2)
- Rubin : (versioni 2.4.1)
- MariaDB : një degë me burim të hapur të serverit MySQL (ver 10.2)
- Certifikata SSL nga Let's Encrypt
Instalimi
Shto përdorues Sudo
Shënim : Rekomandohet shumë të mos instaloni asnjë nga këto shërbime si root, pasi mund të ekspozoheni ndaj një sulmi. Vendosja e një deployose një apppërdoruesi është një konventë e zakonshme:
sudo adduser deploy
sudo adduser deploy sudo
su deploy
Përditësoni dhe përmirësoni sistemin
Sigurohuni që po ekzekutoni të gjitha paketat më të fundit në Ubuntu VM tuaj:
sudo apt-get update && sudo apt-get upgrade -y
Instaloni Build System
Për të qenë në gjendje të përpiloni Ruby duke përdorur rbenv dhe gurë të tjerë të çmuar, duhet të instalohen paketa të ndryshme. Në varësi të versionit të Ruby që ju nevojitet, disa nga paketat mund të mos nevojiten.
Përpilimi
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
Paketa për mbështetje SSL
Këto janë të nevojshme për të përpiluar disa gurë të çmuar, si pasagjerët:
sudo apt-get install -y zlib1g zlib1g-dev libssl-dev libyaml-dev libcurl4-openssl-dev libruby
Versionimi
Komuniteti Ruby po përdor Git si një SCM të zgjedhur; por ato shtesë, si Mercurial ose Subversion, mund të instalohen gjithashtu:
sudo apt-get install -y git git-core
Drejtuesit e bazës së të dhënave për MySQL / MariaDB
sudo apt-get install -y libmysqld-dev mysql-client libmysqlclient-dev
Nokogiri
Kërkohet për disa gurë të çmuar të njohur që kanë nevojë për libs amtare XML:
sudo apt-get install -y libxml2-dev libxslt-dev
Nyja.js
Shtoni depo zyrtare nga Node me versionin më të fundit si depot e paracaktuara të Ubuntu priren të mbeten prapa disa versioneve kryesore:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
Paketat Opsionale
Këto paketa nuk kërkohen që sistemi të funksionojë, por është mirë t'i keni nëse keni nevojë të përdorni disa gurë të çmuar.
Grafikët dhe Imazhet
Këto biblioteka nuk janë të nevojshme dhe mund të anashkalohen nëse nuk planifikoni të përdorni gurë të çmuar të manipulimit të imazheve; të tilla si Rmagick:
sudo apt-get install -y imagemagick libmagickwand-dev libvips-dev
Drejtuesit e bazës së të dhënave për SQLite dhe PostgreSQL
Instaloni drejtuesit për SQLite ose PostgreSQL nëse keni nevojë të lidheni me baza të tjera të të dhënave ose preferoni një DB të thjeshtë, lokal:
sudo apt-get install -y libsqlite3-dev sqlite3 libpq-dev postgresql postgresql-contrib
Mjetet
Shërbimet që zakonisht nuk vijnë të para-instaluara në një instalim të ri të Ubuntu. Mos ngurroni të instaloni redaktuesin e tekstit të zgjedhur:
sudo apt-get install -y iotop htop nano vim
Instaloni serverin MariaDB
MariaDB është një server i fuqishëm relacional SQL, që është plotësisht i pajtueshëm me MySQL. Mënyra më e lehtë për të instaluar versionin më të fundit të MariaDB është përdorimi i depove zyrtare:
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
Ndiqni kërkesat dhe vendosni një fjalëkalim rrënjësor. Pas kësaj, verifikoni që mund të përdorni instalimin tuaj të ri:
mysql -V
Do të shfaqë një rresht të ngjashëm me këtë:
mysql Ver 15.1 Distrib 10.2.8-MariaDB, for debian-linux-gnu (x86_64) using readline 5
Hyni në guaskën MySQL:
mysql -h localhost -u root -p
Shënim : përdorni \qpër të dalë.
Instaloni Rbenv dhe Ruby
Rbenv
Instaloni Rbenv duke përdorur git. Kjo është metoda më e thjeshtë e instalimit dhe mundëson përditësime të lehta më vonë. Gjithashtu instaloni ruby-build, ai është përgjegjës për përpilimin e versioneve të ndryshme të Ruby:
cd
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
Shënim : Kur duhet të përditësoni thjesht cd ~/.rbenvdhe git pull.
Bëni Rbenv dhe Ruby-build të disponueshme në guaskë. Për të siguruar që linjat e eksportit të futen në fillim të .bashrcskedarit, gjë që është e rëndësishme për komandat bash jo-ndërvepruese, përdorni këto rreshta:
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
Kontrolloni nëse Rbenv dhe Ruby-build janë instaluar dhe janë të disponueshëm në shell:
rbenv install --list
Nëse rbenvnuk njihet, dilni dhe hyni përsëri në guaskë.
Krijoni një ~/.bash_profileskedar dhe drejtojeni atë në burimin e ~/.bashrcskedarit tuaj . Nëse ju duhet të ekzekutoni ndonjë komandë jo-interaktive të guaskës nga aplikacioni juaj Rails, si p.sh. konfigurimi i cron jobs nga whenevergur i çmuar, ai do të përdorë të njëjtin version të Ruby si guaska juaj interaktive. Kjo mund të ndihmojë në parandalimin e gabimeve të çuditshme. Shtoni këtë rresht në ~/.bash_profileskedar:
if [ -f $HOME/.bashrc ]; then
source $HOME/.bashrc
fi
Rubin
Instaloni Ruby 2.4.1:
rbenv install 2.4.1
Shënim : Ky proces mund të zgjasë 5-15 minuta në varësi të burimeve në VM-në tuaj dhe nuk ka asnjë shirit progresi.
Bëjeni Rbenv të disponueshëm kudo.
rbenv global 2.4.1
Pasagjeri dhe Nginx
Shtoni çelësin PGP dhe mbështetjen HTTPS për 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
Shtoni depon e pasagjerëve:
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
Instaloni modulet Passenger + Nginx:
sudo apt-get install -y nginx
sudo apt-get install -y libnginx-mod-http-passenger
Vizitoni shembullin tuaj Vultr duke përdorur emrin e domenit ose IP-në e tij për t'i testuar këto në këtë pikë. Nëse ata janë duke punuar, faqja juaj do të shfaqë faqen e paracaktuar të mirëseardhjes Nginx.
Konfiguro Rails, Aplikacionin dhe Konfiguro Pasagjerin
Instaloni Bundler dhe Rails:
gem install bundler rails --no-ri --no-rdoc
Konventa e Ubuntu/Debian është të konfiguroni aplikacionin tuaj në /var/www. Si parazgjedhje mund të shkruhet vetëm me rrënjë. Që konfigurimi të funksionojë, jepini pronësinë përdoruesit sudo deploy:
sudo chown deploy:deploy /var/www -R
Gjeneroni aplikacionin rails në /var/www/. Nëse tashmë keni një aplikacion që dëshironi të vendosni, git cloneatë këtu dhe më pas ekzekutoni bundle:
cd /var/www
rails new example --database=mysql
Konfiguro Pasagjerin që të tregojë te aplikacioni.
Përgatitni Nginx.
sudo nano /etc/nginx/nginx.conf
Ndrysho përdoruesin në deploy.
user deploy;
Në httpseksionin e konfigurimit, duhet të ketë një linjë që i thotë Nginx të ngarkojë modulet duke përfshirë pasagjerin. Nëse mungon, mund ta shtoni menjëherë pas Virtual Host Configstitullit, por përpara sites-enabled.
include /etc/nginx/conf.d/*.conf;
Redakto/krijo passenger.confskedarin.
sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
Thuaji pasagjerit të përdorë konfigurimin tonë të Rbenv. Mund të përmbajë një rresht që tregon versionin Ruby të përfshirë me Passenger, thjesht fshijeni ose komentoni atë.
passenger_ruby /home/deploy/.rbenv/shims/ruby;
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
Konfiguro hostin virtual për të treguar aplikacionin në /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
}
Rinisni Nginx.
sudo service nginx restart
Në këtë pikë aplikacioni juaj është gati për t'u përdorur në modalitetin e zhvillimit. Për të kaluar në modalitetin e prodhimit, duhet të ktheheni te konfigurimi juaj Nginx dhe të ndryshoni rails_envcilësimin në production.
Para se të kaloni në mënyrë të prodhimit, ju ende do të duhet të setup bazës së të dhënave tuaj të prodhimit example_production, database.ymldhe çelës sekret. Shikoni një mjet si Capistrano ose Mina për të shpejtuar procesin e vendosjes së aplikacionit tuaj. Është një praktikë e mirë të përdorni variablat ENV me një gur të çmuar si dotenv, dhe të mos i vendosni fjalëkalimet tuaja, çelësat sekretë dhe të tilla në depon tuaj të git.
Konfiguro SSL
Ka shumë shërbime atje që ofrojnë certifikata SSL për domenin tuaj, shumë janë me pagesë dhe një çift janë falas. Konfiguro SSL-në pavarësisht se çfarë shërbimi përdorni. Let's Encrypt është shumë e lehtë dhe falas për t'u përdorur. Let's Encrypt është një organizatë jofitimprurëse e mbështetur nga shumë gjigantë të teknologjisë.
Instalimi
Ekzekutoni komandat e mëposhtme dhe ndiqni udhëzimet.
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
Nëse shkoni te shembulli juaj Vultr tani duke përdorur HTTPS, do të shihni një uebsajt të sigurt.
Rinovimi
Certifikata juaj e sapo lëshuar do të skadojë dhe do të duhet të rinovohet periodikisht. Mënyra më e lehtë për ta bërë këtë është të konfiguroni një punë cron.
sudo crontab -e
30 2 * * 1 /usr/bin/certbot renew
Si hap i fundit, por opsional, rinisni VM-në tuaj dhe sigurohuni që të gjitha shërbimet të rifillojnë siç pritej.