Configurarea unui server Rails și implementarea cu Capistrano pe Fedora de la Scratch

Acest articol și tutorialul video vă vor învăța cum să configurați un server Fedora de bază pentru implementările Rails și PostgreSQL. În primul rând, vom configura Apache și PostgreSQL. Apoi vom folosi phpPgAdmin pentru a crea utilizatorii și bazele de date ale aplicației noastre. După aceasta, vom configura platforma Ruby utilizând Passenger pentru a rula aplicația noastră. Odată ce toate componentele sunt instalate, vom pregăti aplicația noastră pentru implementare utilizând Capistrano.

Vă voi arăta cum să utilizați Capistrano pentru a automatiza sarcinile la distanță și pentru a profita de alte caracteristici.


Cu spectacolul


Înțelegerea procesului de implementare

Există întotdeauna o mare confuzie în ceea ce privește implementarea aplicațiilor Rails. Acest tutorial speră să sorteze o parte din asta. Majoritatea oamenilor știu LAMP: Linux, Apache, MySQL și PHP. Vom configura LAPR: Linux, Apache, PostgreSQL și Ruby. Configurarea unui server LAPR este foarte asemănătoare cu crearea unui server LAMP. Singura zbârcitură îl face pe Rails să vorbească cu Apache. Din fericire, există un pasager cunoscut sub numele de "modă". Pasagerul este ca mod \ _php. Face ca aplicațiile Rails să ruleze ușor ca plăcintă. Pentru a rula o aplicație Rails prin Apache, creați o gazdă virtuală orientată spre rădăcina documentului în directorul public de aplicații și veți călători pe șine.

Capistrano este o altă parte pe care oamenii nu o cunosc. Capistrano este o bijuterie Ruby concepută pentru a executa sarcini pe una sau mai multe mașini de la distanță. Veți avea nevoie de acces SSH pentru a utiliza Capistrano. Capistrano, afectiv cunoscut sub numele de Cap, automatizează procesul de implementare. Putem folosi capacul pentru a lua codul nostru de la un repo și a-l împinge la server, opriți / porniți / reporniți serverul, scriem sarcini personalizate cerute de aplicația noastră (credeți că ați instalat pietre prețioase) sau dezactivați / activați o pagină de întreținere. Utilizarea capacului nu este obligatorie, dar sigur bate folosind FTP pentru a copia toate fișierele în jur! Capul real al Capului vine de la capacitatea de a scrie sarcini personalizate în Ruby pentru a manipula serverul. Am scris o mulțime de aplicații care permit încărcarea fișierelor de utilizator. Apoi, pe partea de server, trebuie creat un director cu permisiuni corespunzătoare pentru ca încărcările să reușească. Este suficient să scrieți o sarcină pentru a crea directorul și a stabili permisiunile. Apoi, dacă schimbați vreodată serverele, puteți rula pur și simplu sarcina capului pentru a configura din nou serverul. Există multe lucruri pe care le puteți face cu Capistrano. Puteți chiar să automatizați întregul tutorial pentru a configura oricând un număr de mașini!


Tutorial Nisip

Pentru a finaliza acest tutorial, veți avea nevoie de accesul SSH + sudo. Dacă nu aveți un server de rezervă în jur, puteți crea unul în VirtualBox. Puteți crea cu ușurință un VM nou și îl puteți conecta la sistemul dvs. gazdă. Am făcut asta pentru tutorial. Când porniți mașina dvs. virtuală, asigurați-vă că utilizați un adaptor prins, astfel încât VM-ul dvs. primește o IP pe aceeași subrețea. Am inceput cu o noua instalare fara nici o personalizare. Dacă aveți acces la un VPS, cum ar fi SliceHost, puteți utiliza și aceste instrucțiuni.

Asigurați-vă că vizualizați ecranul înainte de a analiza codul de mai jos.


Crearea Deployer-ului

 $ sudo adduser -m implementator $ sudo passwd deployer $ sudo visudo deployer ALL = (ALL) NOPASSWD: ALL $ deployer $ mkdir ~ / .ssh $ touch ~ / .ssh / authorized_keys2 $ chmod -R 0700 ~ / .ssh # copy cheia dvs. publică și inserați-o în fișierul authorized_keys2 $ service sshd start

Configurarea Postgres

 $ sudo yum groupinstall "Bază de date PostgreSQL" $ sudo serviciu postgresql initdb $ sudo serviciu postgresql începe $ su - postgres $ psql -d șablon1 $ alter utilizator postgres cu parola 'yourpostgresuserpassword'; $ \ q # Înlocuiți ident în /var/usr/lib/pgsql/data/pg_hba.conf cu md5 $ passwd postgres # setați securitate suplimentară în /etc/phpPgAdmin/config.inc.php false # add 'Permiteți de la YOUR_IP_HERE' la vhost în /etc/httpd/conf.d/phpPgAdmin.conf # activați http în firewall $ sudo yum instala httpd $ sudo serviciu httpd start $ sudo service postgresql restart

Configurarea Ruby, RubyGems și Passenger

 $ sudo yum groupinstall Ruby $ sudo yum instalare rubygems $ sudo gem instalare gemcutter sudo yum instalare postgresql-devel $ sudo gem instalare pg $ sudo gem instalați pasager $ yum instalare gcc-c ++ httpd-devel apr- apache2-module # creați acest fișier /etc/http/conf.d/passenger.conf cu aceste conținuturi: LoadModule pasager_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.9/ext/apache2/mod_passenger. astfel încât PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.9 PassengerRuby / usr / bin / ruby ​​$ sudo setenforce 0 $ sudo serviciu httpd restart

Crearea folderului Deployer

 $ sudo mkdir / var / www / html / aplicații $ sudo chown deployer: apache / var / www / html / apps $ sudo yum instalați git # în acest moment, creați bazele de date în phpPgAdmin

Configurarea Apache

 # echo "Include vhost.d / * .vhost" >> /etc/httpd/conf/httpd.conf $ sudo mkdir /etc/httpd/vhost.d $ sudo touch /etc/httpd/vhost.d/nettuts-demo .vhost # actualizează fișierele care conțin:  Numele serverului www.nettuts-demo.com DocumentRoot / var / www / html / apps / nettuts-demo / curent / public  Opțiuni FollowSymLinks Permiteți din toate opțiunile -MultiViews  RewriteEngine pe RewriteCond% DOCUMENT_ROOT /system/maintenance.html -f RewriteCond% SCRIPT_FILENAME! Maintenance.html RewriteRule $ /system/maintenance.html [R = 302, L] 

Complet fișier Cap

 set: aplicație, set "nettuts-demo": depozit, "git: //github.com/Adman65/Nettuts-Capistrano-Deployments.git" set: utilizator,: set de deployer: deploy_to "/ var / www / html / apps / # application "set: use_sudo, set fals: scm,: git rol: web," 192.168.1.112 "# Server HTTP, Apache / etc role: app" 192.168.1.112 " ca rolul serverului dvs. Web: db, "192.168.1.112",: primary => true # Aceasta este locul unde migrațiile Rails vor rula: db, "192.168.1.112" default_run_options [: pty] = true namespace: : începeți; sarcina finală: opriți; end_replace: restart:: roluri =>: app,: excepție => : no_release => true nu se execută "# try_sudo atingeți # File.join (curent_path,'tmp ' "end desc" instalează pietre necesare "sarcină: pietre,: roluri =>: aplicație execută" cd # current_path && sudo rake pietre: instalează RAILS_ENV = producție "după" implementare: setup " "implementați", "implementați: web: dezactivați" după ce "implementați", "implementați: web: activați" sfârșitul
Cod