Antes de comenzar con el tutorial técnico, primero revisemos las tecnologías involucradas en esta guía de Ruby + Passenger + Nginx en CentOS Linux.
Ruby es un lenguaje de código abierto ágil y dinámico centrado en la escritura y lectura de código fácil y natural, manteniendo una sintaxis simple agradable y elegante.
Passenger es un servidor de aplicaciones que se utiliza para aplicaciones de servidor escritas en lenguaje Ruby. Para poner sus aplicaciones ruby en línea, debe integrar Passenger en un servidor web, en nuestro caso, nuestro amado Nginx.
Este tutorial se basa en CentOS 6.x 64 bits, pero también debería funcionar en RHEL 6.x.
Requisitos
Instalemos algunas herramientas de desarrollo que podamos necesitar
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'
Requisitos de Kernel y Selinux
Si SELinux está habilitado, Passenger requiere kernel>=2.6.39. Si su kernel no es lo suficientemente reciente, puede desactivar Selinux:
nano -w /etc/selinux/config
Luego configura SELINUX=deshabilitado y reinicie su servidor.
O también puede actualizar su kernel, usando dnf
dnf update kernel*
¿Cómo puedo instalar Ruby + Passenger + Nginx en CentOS?
Instalar Ruby, Passenger e integrar Passenger en Nginx no es nada difícil, pero debe seguir los pasos cuidadosamente y analizar cada error si ve algo.
Instalación de Rubí
Instalemos RVM y Ruby 2.2.2, ejecute los siguientes comandos:
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
Verifique su instalación de Ruby
Ahora revisa tu versión de Ruby, debería ser 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]
Instalar Pasajero
gem install passenger
si eso no funciona o muestra algún error, intente esto:
/usr/local/rvm/rubies/ruby-2.2.2/bin/gem install passenger
Instalación de Nginx + módulo de pasajeros
wget http://nginx.org/download/nginx-1.11.6.tar.gz tar -xvpzf nginx-1.11.6.tar.gz cd nginx-1.11.6
Tomemos el directorio Nginx dentro del pasajero y configuremos la variable global, ya que la necesitaremos para agregar soporte para pasajeros en Nginx.
Verifique cuál es su directorio fuente de Nginx dentro de la instalación del pasajero usando este comando:
passenger-config about nginx-addon-dir
Luego configúrelo como se ve a continuación, en mi caso, el directorio de origen era /src/nginx_module.
PASSENGER_NGINX_DIR=`passenger-config --root`/src/nginx_module
Asegúrese de tener los permisos correctos en el directorio /tmp, de lo contrario, el pasajero no compilará:
chmod 1777 /tmp -v
Ahora configuraremos Nginx y al final de la línea de configuración agregaremos esto
--add-module=$PASSENGER_NGINX_DIR
El comando completo se vería así. Asegúrese de agregar sus propios módulos Nginx requeridos y configure sus rutas para satisfacer sus propias necesidades, este es solo un ejemplo genérico:
./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
Luego ejecute make y make install
make make install
Configurar módulo Nginx para pasajeros
nano -w /etc/nginx/conf.d/passenger.conf
Pegue esto 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;
Habilite Rails y Passenger dentro de su host virtual Nginx
Agregue estas dos líneas dentro de su configuración de vhost:
passenger_enabled on; rails_env production;
Debería verse así:
### 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;
Reinicie Nginx para aplicar los cambios:
service nginx restart
Conclusión
Eso es todo, en este punto deberías tener Ruby, Passenger y Nginx funcionando completamente. Háganos saber si tiene algún error o problema siguiendo los pasos proporcionados en este tutorial.
Cómo implementar Ruby + Passenger + Nginx en CentOS Linux was last modified:febrero 7th, 2017 by Esteban Borges