Avant de commencer le didacticiel technique, passons d'abord en revue les technologies impliquées dans ce guide Ruby + Passenger + Nginx sur CentOS Linux.
Ruby est un langage open source agile et dynamique axé sur l'écriture et la lecture de code simples et naturelles, tout en conservant une syntaxe simple et élégante.
Passenger est un serveur d'applications utilisé pour héberger des applications écrites en langage Ruby. Afin de mettre vos applications ruby en ligne, vous devez intégrer Passenger dans un serveur Web, dans notre cas notre bien-aimé Nginx.
Ce tutoriel est basé sur CentOS 6.x 64 bits mais il devrait également fonctionner sur RHEL 6.x.
Exigences
Installons quelques outils de développement dont nous pourrions avoir besoin
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'
Conditions requises pour le noyau et Selinux
Si SELinux est activé, alors Passenger nécessite un noyau>=2.6.39. Si votre noyau n'est pas assez récent, vous pouvez désactiver Selinux :
nano -w /etc/selinux/config
Ensuite, définissez SELINUX=disabled et redémarrez votre serveur.
Ou vous pouvez également mettre à jour votre noyau en utilisant dnf
dnf update kernel*
Comment puis-je installer Ruby + Passenger + Nginx sur CentOS ?
Installer Ruby, Passenger et intégrer Passenger dans Nginx n'est pas difficile du tout, mais vous devez suivre attentivement les étapes et analyser chaque erreur si vous voyez quelque chose.
Installer Ruby
Installons RVM et Ruby 2.2.2, exécutez les commandes suivantes :
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
Vérifiez votre installation Ruby
Vérifiez maintenant votre version de ruby, elle devrait être 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]
Installer le passager
gem install passenger
si cela ne fonctionne pas ou affiche une erreur, essayez ceci :
/usr/local/rvm/rubies/ruby-2.2.2/bin/gem install passenger
Installer Nginx + Module passager
wget http://nginx.org/download/nginx-1.11.6.tar.gz tar -xvpzf nginx-1.11.6.tar.gz cd nginx-1.11.6
Prenons Nginx dir à l'intérieur du passager et définissons la variable globale, car nous en aurons besoin pour ajouter la prise en charge des passagers dans Nginx.
Vérifiez quel est votre répertoire source Nginx dans l'installation du passager à l'aide de cette commande :
passenger-config about nginx-addon-dir
Ensuite, définissez-le comme vous le voyez ci-dessous, dans mon cas, le répertoire source était /src/nginx_module.
PASSENGER_NGINX_DIR=`passenger-config --root`/src/nginx_module
Assurez-vous d'avoir les bonnes permissions sur le répertoire /tmp, sinon le passager ne compilera pas :
chmod 1777 /tmp -v
Nous allons maintenant configurer Nginx et à la fin de la ligne de configuration nous ajouterons ceci
--add-module=$PASSENGER_NGINX_DIR
La commande complète ressemblerait à ceci. Assurez-vous d'ajouter vos propres modules Nginx requis et de configurer vos chemins pour qu'ils correspondent à vos propres besoins, ceci n'est qu'un exemple générique :
./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
Lancez ensuite make et make install
make make install
Configurer le module passager Nginx
nano -w /etc/nginx/conf.d/passenger.conf
Collez ceci à l'intérieur :
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;
Activez Rails et Passenger à l'intérieur de votre hôte virtuel Nginx
Ajoutez ces deux lignes dans votre configuration vhost :
passenger_enabled on; rails_env production;
Cela devrait ressembler à ceci :
### 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;
Redémarrez Nginx pour appliquer les modifications :
service nginx restart
Conclusion
C'est tout, à ce stade, Ruby, Passenger et Nginx devraient fonctionner pleinement. Veuillez nous faire savoir si vous rencontrez des erreurs ou des problèmes en suivant les étapes fournies dans ce didacticiel.
Comment déployer Ruby + Passenger + Nginx sur CentOS Linux dernière modification :7 février 2017 par Esteban Borges