Prima di iniziare il tutorial tecnico, esaminiamo innanzitutto le tecnologie coinvolte in questa guida Ruby + Passenger + Nginx su CentOS Linux.
Ruby è un linguaggio open source agile e dinamico incentrato sulla scrittura e lettura di codice facile e naturale, pur mantenendo una sintassi semplice piacevole ed elegante.
Il passeggero è un server di app utilizzato per server di app scritte in linguaggio Ruby. Per portare le tue app Ruby online, devi integrare Passenger in un server web, nel nostro caso il nostro amato Nginx.
Questo tutorial è basato su CentOS 6.x 64 bit ma dovrebbe funzionare anche su RHEL 6.x.
Requisiti
Installiamo alcuni strumenti di sviluppo di cui potremmo aver bisogno
yum install gcc g++ make automake autoconf curl curl-devel openssl-devel zlib-devel httpd-devel apr-devel apr-util pygpgme yum groupinstall 'Development Tools'
Requisiti kernel e Selinux
Se SELinux è abilitato, allora Passenger richiede kernel>=2.6.39. Se il tuo kernel non è abbastanza recente, allora puoi disabilitare Selinux:
nano -w /etc/selinux/config
Quindi imposta SELINUX=disabled e riavvia il server.
Oppure puoi aggiornare anche il tuo kernel, usando dnf
dnf update kernel*
Come posso installare Ruby + Passenger + Nginx su CentOS?
Installare Ruby, Passenger e integrare Passenger in Nginx non è affatto difficile, ma devi seguire attentamente i passaggi e analizzare ogni errore se vedi qualcosa.
Installazione di Ruby
Installiamo RVM e Ruby 2.2.2, eseguiamo i seguenti comandi:
curl -L https://get.rvm.io | bash -s stable source /etc/profile.d/rvm.sh rvm install 2.2.2 rvm use 2.2.2 --default
Controlla la tua installazione di Ruby
Ora controlla la tua versione di Ruby, dovrebbe essere 2.2.2
[[email protected]:~]which ruby /usr/local/rvm/rubies/ruby-2.2.2/bin/ruby [[email protected]:~]ruby --version ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
Installa Passeggero
gem install passenger
se non funziona o mostra errori, prova questo:
/usr/local/rvm/rubies/ruby-2.2.2/bin/gem install passenger
Installazione di Nginx + Modulo Passeggero
wget http://nginx.org/download/nginx-1.11.6.tar.gz tar -xvpzf nginx-1.11.6.tar.gz cd nginx-1.11.6
Prendiamo Nginx dir all'interno del passeggero e impostiamo la variabile globale, poiché ci servirà per aggiungere il supporto del passeggero in Nginx.
Controlla qual è la tua directory di origine Nginx all'interno dell'installazione del passeggero usando questo comando:
passenger-config about nginx-addon-dir
Quindi impostalo come vedi sotto, nel mio caso la directory di origine era /src/nginx_module.
PASSENGER_NGINX_DIR=`passenger-config --root`/src/nginx_module
Assicurati di avere i permessi corretti sulla directory /tmp, altrimenti il passeggero non compilerà:
chmod 1777 /tmp -v
Ora configureremo Nginx e alla fine della riga di configurazione lo aggiungeremo
--add-module=$PASSENGER_NGINX_DIR
Il comando completo sarebbe simile a questo. Assicurati di aggiungere i tuoi moduli Nginx richiesti e di configurare i tuoi percorsi in base alle tue esigenze, questo è solo un esempio generico:
./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --with-http_geoip_module --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-http_v2_module --with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --add-module=$PASSENGER_NGINX_DIR
Quindi esegui make e make install
make make install
Configura il modulo Passenger Nginx
nano -w /etc/nginx/conf.d/passenger.conf
Incollalo dentro:
passenger_root /usr/local/rvm/gems/ruby-2.2.2/gems/passenger-5.0.30; passenger_ruby /usr/local/rvm/rubies/ruby-2.2.2/bin/ruby; passenger_instance_registry_dir /var/run/passenger-instreg;
Abilita Rails e Passenger all'interno del tuo host virtuale Nginx
Aggiungi queste due righe all'interno della tua configurazione vhost:
passenger_enabled on; rails_env production;
Dovrebbe assomigliare a questo:
### yourdomain.com server { access_log off; log_not_found off; error_log logs/yourdomain.com-error_log info; listen 80; server_name yourdomain.com www.yourdomain.com; # activate passenger & rails support passenger_enabled on; rails_env production;
Riavvia Nginx per applicare le modifiche:
service nginx restart
Conclusione
Questo è tutto, a questo punto dovresti avere Ruby, Passenger e Nginx completamente funzionanti. Facci sapere se riscontri errori o problemi seguendo i passaggi forniti in questo tutorial.
Come distribuire Ruby + Passenger + Nginx su CentOS Linux Ultima modifica:7 febbraio 2017 da Esteban Borges