Instalar Nginx en Centos

Instalar Nginx en CentosNginx es un servidor web moderno que esta teniendo un gran éxito últimamente. En nuestro caso lo necesitábamos coexistiendo en un servidor con Plesk junto a Apache, pero en otro puerto. Si además queremos que pueda ejecutar php es necesario añadir un módulo llamado php-fpm.

Para instalar nginx en centos  utilizaremos los repositorios atomic y epel que lo tienen disponible. Estos repositorios necesitan ser instalados con sus respectivos scripts:

wget -q -O - http://www.atomicorp.com/installers/atomic | sh
rpm -Uvh http://mirror.uv.es/mirror/fedora-epel/6/i386/epel-release-6-7.noarch.rpm

Una vez instalados para utilizarlos debemos activarlos o bien en el fichero .repo o bien directamente en el gestor de paquetes yum:

yum --enablerepo=atomic --enablerepo=epel install nginx php-fpm

Si va todo bien solo nos quedará configurarlos. Primero necesitamos saber el hostname de la máquina, podemos averiguarlo con:

hostname

Con este nombre hay que modificar el fichero /etc/nginx/conf.d/default.conf.

vim /etc/nginx/conf.d/default.conf

Aquí dentro debemos cambiar el puerto, si es queremos hacerlo, el server_name, y añadir los parámetros para la conexión con php-fpm. En nuestro caso queda tal que así pero cambiando el hostname:

server {
      listen       81;
      server_name  hostname;
      #charset koi8-r;
      #access_log  logs/host.access.log  main;
      location / {
          root   /usr/share/nginx/html;
          index  index.php index.html index.htm;
          location ~ \.php$ {
              root           /usr/share/nginx/html;
              fastcgi_pass   127.0.0.1:9000;
              fastcgi_index  index Find Out More.php;
              fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
              include        fastcgi_params;
          }
      }

Una vez modificado es necesario además cambiar el parámetro cgi.fix_pathinfo a 0 en nuestra configuración php existente, esto se hace en el php.ini general:

vim /etc/php.ini

Modificamos:

cgi.fix_pathinfo=0

Ahora pasamos a configurar el php-fpm, es necesario modificar el usuario y grupo por nginx:

vim  /etc/php-fpm.d/www.conf
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

Ahora añadimos los dos nuevos demonios al arranque automatico utilizando la herramienta chkconfig:

chkconfig nginx --add
chkconfig nginx on --level 235
chkconfig nginx --list
nginx          	0:desactivado	1:desactivado	2:activo	3:activo	4:desactivado	5:activo	6:desactivado
chkconfig php-fpm --add
chkconfig php-fpm on --level 235
chkconfig php-fpm --list
php-fpm        	0:desactivado	1:desactivado	2:activo	3:activo	4:desactivado	5:activo	6:desactivado

Y los activamos:

service php-fpm start
service nginx start

Si todo ha ido bien tendremos los servicios corriendo en sus respectivos puertos, el 9000 para php-fpm:

]#lsof -i :9000
COMMAND   PID  USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
php-fpm 17986  root    7u  IPv4 462059545      0t0  TCP localhost.localdomain:cslistener (LISTEN)
php-fpm 17987 nginx    0u  IPv4 462059545      0t0  TCP localhost.localdomain:cslistener (LISTEN)
php-fpm 17988 nginx    0u  IPv4 462059545      0t0  TCP localhost.localdomain:cslistener (LISTEN)
php-fpm 17989 nginx    0u  IPv4 462059545      0t0  TCP localhost.localdomain:cslistener (LISTEN)
php-fpm 17990 nginx    0u  IPv4 462059545      0t0  TCP localhost.localdomain:cslistener (LISTEN)
php-fpm 17991 nginx    0u  IPv4 462059545      0t0  TCP localhost.localdomain:cslistener (LISTEN)

Y el 81 en nuestro caso para nginx.

]# lsof -i :81
COMMAND   PID  USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
nginx   10496  root    6u  IPv4 462010368      0t0  TCP *:81 (LISTEN)
nginx   10497 nginx    6u  IPv4 462010368      0t0  TCP *:81 (LISTEN)

Y con esto ya damos por concluida la entrada de instalar nginx en centos.

Un saludo!