nginx en Centos 7

En un primer momento había montado el servidor desde el que sirvo el blog utilizando un entorno LAMP (Linux, Apache, MySQL, Php) pero hoy me he decidido a cambiar apache por nginx y convertirlo en un LEMP (Linux, /E/nginx, MySQL, Php)

La verdad es que el cambio no ha resultado ser muy traumático, me esperaba que fuese algo más complicado.

Como nginx no existe en los repos oficiales de CentOS lo primero que tenemos que hacer configurar el repositorio de nginx en el servidor. Para ello creamos el fichero

  • /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

Para instalar el servidor nginx. ejecutamos:

yum install nginx

Como hasta este momento tenía instalado apache, tenemos que parar el servicio web

systemctl stop httpd

Como motor de php utilizo php-fpm y hasta el momento lo tenía con la configuración por defecto escuchando por el puerto 9000 pero ya que me he puesto hacer cambios en el servidor, he decidido ulilizar un socket unix en lugar de un puerto tcp. Para ello editamos el fichero

  • /etc/php-fpm.d/www.conf

y sustituimos la linea

listen = 127.0.0.1:9000

por

listen = /var/run/php-fpm/php-fpm.sock

Finalmente reiniciamos el servicio

systemctl restart php-fpm

Ahora tenemos que configurar el servidor de nginx. En mi caso lo que he hecho es dejar un fichero de configuración más o menos estandar en la ruta /etc/nginx/nginx.conf y crear un fichero de configuración especifico para cada virtual host dentro del directorio /etc/nginx/vhost/.

Lógicamente, deberemos hacer referencia a los ficheros de los virtual host desde el fichero /etc/nginx/nginx.conf con la directiva

include /etc/nginx/vhosts/*.conf;

A continuación os pongo un ejemplo de fichero de configuración de un virtualhost que podeis utilizar y retocar como mejor os parezca

server {
    listen       80;

    server_name  dominio.com www.dominio.com;

    root   {path de sistema de vuestro dominio};
    index  index.php index.html index.htm;

    location / {
	try_files $uri $uri/ /index.php?q=$request_uri;
    }
    location ~ \.php$ {
	try_files $uri =404;
       	fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
       	fastcgi_index index.php;
       	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       	include fastcgi_params;
    }

}

Por último solo nos queda arrancar y configurar el servicio para que levante en el inicio del sistema. Para ello:

systemctl start nginx
systemctl enable nginx

En próximos artículos hablare de como configurar el servidor para servir contenido a través de https y de como tratar de securizar nuestra instalación de nginx.