Escrito el 2 febrero 2016 por Luis Ignacio Díaz Martínez
Tabla de contenidos
Como alternativa al gran ‘Apache’ instalaremos Nginx… software de servicio web que está pegando fuerte últimamente. Actualmente nos interesa por su bajo consumo de memoria y su no dependencia con los recursos de hardware. Su instalación no es muy complicada, y su implantación es rápida. ¿Quieres probarlo?
Lo esencial, como siempre… será instalar los paquetes necesarios!
1 |
apt-get install nginx php5-fpm php5-cli php5-gd php5-mysql mysql-server |
Pero como no todo es tan fácil… tocará configurar algunas cosillas…
Como hemos podido ver su instalación no ha sido muy complicada,.. ahora bien, su configuración tampoco va más allá!
Primero de todo crearemos el directorio ‘/var/www’ si no existe por defecto. El cual, utilizaremos como raíz para nuestro servidor web.
1 |
mkdir /var/www |
A continuación, realizaremos una copia del fichero original (llamado ‘__default’) para no perderlo y crearemos otro nuevo con la configuración adecuada para ejecutar código ‘PHP’.
1 2 |
mv /etc/nginx/sites-available/{default,__default} nano /etc/nginx/sites-available/default |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
server { listen 80; listen [::]:80 default_server ipv6only=on; root /var/www; index index.php index.html index.htm; server_name localhost; location / { } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } location ~ /\.ht { deny all; } } |
Guardamos el documento y a continuación seguimos con más parámetros de configuración.
Ahora habilitaremos la compresión GZIP. Este módulo consume más procesamiento, eso quiere decir que tirará más de CPU, pero que a su vez, mejoraremos considerablemente la transferencia de datos hacia nuestros clientes ya que la información será de menor tamaño, y así su transmisión será más rápida.
Para realizar esto, tendremos que descomentar las siguientes líneas del fichero de configuración de ‘nginx’.
1 |
nano /etc/nginx/nginx.conf |
1 2 3 4 5 6 7 8 9 10 11 |
[...] gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; [...] |
Una vez hemos realizado estas modificaciones guardamos el documento.
Para poder correr PHP en nuestro servidor Nginx deberemos de cambiar primero de todo la opción ‘cgi.fix_pathinfo’ de nuestro fichero de configuración, para ello… realizaremos lo siguiente:
1 |
sed -i -e 's/;cgi.fix_pathinfo=1$/cgi.fix_pathinfo=0/' /etc/php5/fpm/php.ini |
Una vez hemos realizado este cambio en el ‘php.ini’ reiniciaremos ambos servicios:
1 2 |
/etc/init.d/php5-fpm reload /etc/init.d/nginx reload |
Una vez los servicios han sido reiniciados (o recargados) haremos unas pruebas para ver si está todo funcionando correctamente.
Para probar que nuestro servidor esté aceptando código ‘php’ crearemos un pequeño documento:
1 |
nano /var/www/test.php |
1 2 3 |
<?php phpinfo(); ?> |
1 |
chmod 777 /var/www/test.php |
Ahora, nos dirigiremos a nuestro navegador, introduciendo la dirección IP (o DNS) de donde se ejecuta el servidor web, en mi casa, por ejemplo sería «http://localhost/test.php».
Si por algún motivo no te funciona Nginx o tu navegador no te muestra absoluetamente nada… te recomiendo que observes los logs del sistema… que en mi caso sería…
1 |
cat /var/log/nginx/error.log |
Observando el log a mi me aparece el siguiente error…
1 |
socket() [::]:80 failed (97: Address family not supported by protocol) |
Esto es debido sencillamente a que mi servidor tiene desactivada la IPv6 y una de las escuchas que realiza Nginx por defecto es por este protocolo.
La solución es sencillamente desactivar esta escucha editando el fichero de configuración del site en concreto…
1 |
nano /etc/nginx/sites-available/default |
1 2 3 |
[...] listen 80; #listen [::]:80 default_server ipv6only=on; [...] |
Una vez tengamos el documento editado recargamos el servicio…
1 |
/etc/init.d/nginx reload |
Y ya está! todo debería de estar funcionando correctamente!
Esta es la referencia principal que he utilizado…