Compilando Nginx 1.5.X en un CentOS 6 x86_64

Esta pequeña guía nos permitira instalar Nginx en su ultima versión en un servidor con CentOS 6 bajo arquitectura de 64bit. Entre las ventajas que tiene compilar e instalar Nginx desde las fuentes es que podemos agregar/remover el soporte a modulos de 3eros así como también de los modulos principales, actualizar a la ultima versión, modificar valores por defecto, entre otros. Primero instalaremos los paquetes necesarios para compilar la ultima versión de nginx:

yum install gcc gcc-c++ make zlib zlib-devel pcre pcre-devel openssl openssl-devel -y

Luego descargaremos la ultima versión desde el sitio oficial de Nginx , al momento de escribir esta pequeña guía ha sido la versión 1.5.9, por lo que la descargamos, desempaquetamos y entramos dentro del directorio donde nos prepararemos para compilar:

wget -c http://nginx.org/download/nginx-1.5.9.tar.gz
tar -xvzf nginx-1.5.9.tar.gz
cd nginx-1.5.9

Ahora bien la parte divertidad, agregar el soporte a ciertos modulos deseados,  para ello ejecutamos lo siguiente:

./configure \
--user=nginx \
--group=nginx \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--http-client-body-temp-path=/var/lib/nginx/body \
--http-proxy-temp-path=/var/lib/nginx/proxy \
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
--http-scgi-temp-path=/var/lib/nginx/scgi \
--with-http_addition_module \
--with-http_sub_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_ssl_module \
--with-http_realip_module \
--with-http_auth_request_module \
--with-ipv6 \
--with-pcre \
--with-file-aio

Una vez terminado de hacer ./configure ejecutaremos make y make install para que posterior  a esto, agregaremos el usuario nginx a nuestro CentOS de la siguiente forma:

useradd -r nginx

Crearemos los siguientes directorios, usados como temporales para los modulos cargados para nginx:

mkdir /var/run/nginx; mkdir /var/log/nginx
mkdir -p /var/lib/nginx/{body,fastcgi,proxy,scgi,usgi,uwsgi}/

Comprobamos que nginx esta correctamente instalado:

nginx -v
nginx version: nginx/1.5.9

Para arrancar los servicios podemos usar el init-script que he tomado de la versión compilada de Nginx para CentOS 6, para comodidad de muchos el script lo he subido a Gist Github, lo descargamos en /etc/init.d y le damos permisos de ejecución:

wget -O /etc/init.d/nginx https://gist.github.com/zokeber/8701803/raw/065c655ae90f45c05b3b681da7f049ead5a77fad/nginx-init
chmod u+x /etc/init.d/nginx

Arrancamos los servicios ejecutando:

/etc/init.d/nginx start
Starting nginx:   [  OK  ]

Agregamos los servicios al runlevel de CentOS 6:

chkconfig --add nginx
chkconfig --level 345 nginx on

Si todo ha marchado bien, al ingresar por nuestra dirección ip / dominio, veremos el mensaje de bienvenida de nginx 1.5.9, es de recordar que toda la configuración se encuentra en el directorio /etc/nginx .  Un parametro importante para conocer la lista de modulos compilados es ejecutar  nginx -V . Hasta acá de momento, esta pequeña guía.