Rails en producción - Parte 4 - Servidor web nginx
ruby, rails, sysadmin Deja un comentarioEl servidor web que vamos a utilizar es nginx. Lo instalaremos compilando el código fuente de la última versión estable. Yo he utilizado la versión 0.6.32.
Primeramente, instalaremos varios paquetes de debian que son necesarios:
$ sudo aptitude install libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev
En el directorio sources que creamos anteriormente para compilar Rubygems, nos descargamos nginx y hacemos el configure con la opción with-http_ssl_module:
$ sudo aptitude install libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev $ cd ~/sources $ wget http://sysoev.ru/nginx/nginx-0.6.32.tar.gz $ tar xvf nginx-0.6.32.tar.gz $ cd nginx-0.6.32 $ ./configure --with-http_ssl_module
La salida del configure es muy extensa. Al final nos aparecerá un resumen con el path de los ejecutables y los ficheros de configuración:
Configuration summary + using system PCRE library + OpenSSL library is not used + md5 library is not used + sha1 library is not used + using system zlib library nginx path prefix: "/usr/local/nginx" nginx binary file: "/usr/local/nginx/sbin/nginx" nginx configuration prefix: "/usr/local/nginx/conf" nginx configuration file: "/usr/local/nginx/conf/nginx.conf" nginx pid file: "/usr/local/nginx/logs/nginx.pid" nginx error log file: "/usr/local/nginx/logs/error.log" nginx http access log file: "/usr/local/nginx/logs/access.log" nginx http client request body temporary files: "/usr/local/nginx/client_body_temp" nginx http proxy temporary files: "/usr/local/nginx/proxy_temp" nginx http fastcgi temporary files: "/usr/local/nginx/fastcgi_temp"
Después del configure, ejecutamos make para compilar y make install para instalar:
$ make $ sudo make install
Para probar que funciona arrancamos el demonio:
$ sudo /usr/local/nginx/sbin/nginx
Esto habrá arrancado el servidor web en el puerto 80. En un navegador podemos teclear la URL:
http://IP/
Siendo IP, claro está, la IP de nuestro servidor. Nos deberá aparecer la página de bienvenida a nginx.
Paramos el proceso que hemos arrancado:
$ sudo kill `cat /usr/local/nginx/logs/nginx.pid`
Creamos el fichero de arranque de nginx /etc/init.d/nginx con el siguiente contenido:
#! /bin/sh ### BEGIN INIT INFO # Provides: nginx # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts the nginx web server # Description: starts nginx using start-stop-daemon ### END INIT INFO PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/local/nginx/sbin/nginx NAME=nginx DESC=nginx test -x $DAEMON || exit 0 # Include nginx defaults if available if [ -f /etc/default/nginx ] ; then . /etc/default/nginx fi set -e case "$1" in start) echo -n "Starting $DESC: " start-stop-daemon --start --quiet --pidfile /usr/local/nginx/logs/nginx.pid \ --exec $DAEMON -- $DAEMON_OPTS echo "$NAME." ;; stop) echo -n "Stopping $DESC: " start-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/nginx.pid \ --exec $DAEMON echo "$NAME." ;; restart|force-reload) echo -n "Restarting $DESC: " start-stop-daemon --stop --quiet --pidfile \ /usr/local/nginx/logs/nginx.pid --exec $DAEMON sleep 1 start-stop-daemon --start --quiet --pidfile \ /usr/local/nginx/logs/nginx.pid --exec $DAEMON -- $DAEMON_OPTS echo "$NAME." ;; reload) echo -n "Reloading $DESC configuration: " start-stop-daemon --stop --signal HUP --quiet --pidfile /usr/local/nginx/logs/nginx.pid \ --exec $DAEMON echo "$NAME." ;; *) N=/etc/init.d/$NAME echo "Usage: $N {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0
Le damos permisos de ejecución y lo añadimos al arranque de la máquina:
$ sudo chmod +x /etc/init.d/nginx $ sudo /usr/sbin/update-rc.d -f nginx defaults
Editamos el fichero de configuración /usr/local/nginx/conf/nginx.conf. El usuario encargado de ejecutar nginx será el usuario no privilegiado que hemos creado anteriomente. También podemos ajustar el número de procesos que atenderán peticiones:
user usuario usuario;
worker_processes 4;Para arrancarlo y pararlo ya podemos hacer:
$ sudo /etc/init.d/nginx start $ sudo /etc/init.d/nginx stop
Tutorial completo
- Rails en producción - Parte 1 - Introducción
- Rails en producción - Parte 2 - Configuración del servidor debian
- Rails en producción - Parte 3 - MySQL, Ruby y Rails
- Rails en producción - Parte 4 - Servidor web nginx
- Rails en producción - Parte 5 - Mongrels e instalación de nuestra aplicación
- Rails en producción - Parte 6 - Cluster de mongrels
![Validate my RSS feed [Valid RSS]](/wp-content/themes/javiervidal/images/valid-rss.png)
3 de Agosto de 2008 a las 20:32
[...] Rails en producción - Parte 4 - Servidor web nginx | Javier Vidal Postigo #! /bin/sh ### BEGIN INIT INFO # Provides: nginx # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts the nginx web server # Description: starts nginx using start-stop-daemon ### END INI [...]