Instalar PHP FPM y Nginx en Ubuntu 16.04 LTS

nginx php-fpm

Cada vez es más fácil instalar y configurar un entorno para servir documentos en web, si bien lo normal es tener una combinación LAMP (Linux, Apache, MySQL y PHP) en últimos años ha cobrado popularidad Nginx como servidor web por la velocidad y rendimiento para servir contenido.

Una vez que tenemos una instalación de Ubuntu, estando en consola instalamos los paquetes, si no queremos apache y ya estuviera instalado lo quitamos:

sudo apt-get purge apache2*

Luego, instalamos los paquetes que nos interesan:

sudo apt-get install php mysql-server nginx php-fpm php-curl php-mbstring 
# opcionalmente si queremos convertir imágenes, mysql-server en el comando anterior también es opcional.
sudo apt-get install convert

Eso es todo, ahora vamos a configurar nginx para que pueda procesar los archivos .php, editamos el archivo /etc/nginx/sites-enabled/default y buscamos las líneas que aparecen y se refieren a php, quitamos el comentario (símbolo #), quedando algo similar a:

location ~ \.php$ {
          include snippets/fastcgi-php.conf;
          fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

Reiniciamos PHP con service nginx restart si ya todo está bien, podemos entrar a nuestra página web en su ip local, hasta aquí estrictamente ya debemos tener todo un entorno para servir contenido dinámico en nuestro servidor, sin embargo vamos a ver algunas consideraciones después de recién instalado

Fecha e idioma:

Para que PHP tome correctamente la hora debe estar bien configurada en el servidor, podemos reconfigurar la zona horaria con e instalar el idioma español, además de indicarle al sistema que vamos a utilizar el idioma de Cervantes en todo el sistema.

dpkg-reconfigure tzdata # reconfigura locale
echo "export TERM=xterm && export LC_ALL=es_MX.UTF-8 && export EDITOR=vim" >> /etc/bash.bashrc

En caso que nuestro servidor no tenga la hora adecuadamente, la podemos actualizar (si tiene red) con el comando ntpdate pool.ntp.org.

En el caso de PHP si lo vamos a usar en línea de comandos y como módulo FPM en nginx (por default al instalar php-fpm y nginx), buscamos en ambos archivos - en  /etc/php/7.0/fpm/php.ini eb caso de FPM- la línea que dice: ;date.timezone, quitamos el comentario y la establecemos y dejamos así;

date.timezone = America/Mexico_City

... o la zona horaria que nos corresponda, en http://php.net/manual/es/timezones.php hay una lista de zonas horarias.

Además, en los mismos archivos de configuración buscamos los límites de subida de archivos, por ejemplo si vamos a subir imágenes de una cámara digital podrían ser archivos de 25 o 30 MB, así que vamos a establecer que pueda recibir archivos de hasta 64MB, para eso buscamos y dejamos las siguientes líneas de configuración de la siguiente forma:

post_max_size = 64M
upload_max_filesize = 64M

... y en la configuración de nginx, añadimos al archivo de configuración de nuestro servidor (por ahora sites-enabled/default)

client_max_body_size 64m;

Ahora reiniciamos nginx y PHP-FPM (service nginx restart && /etc/init.d/php7.0-fpm restart). De todas formas siempre podemos probar la configuración de nginx antes de reiniciar para ver si está bien con algo como:

nginx -c /etc/nginx/nginx.conf -t

Si hubiese un error, ahí se nos mostraría en la consola.

Eso es todo lo básico, hay opciones de configurar el rendimiento de PHP y de nginx, pero son temas para otro post.

nota: para muchos comandos se utiliza sudo, si vamos a hacer varias configuraciones de una sola vez lo mejor es estar como administrador ese lapso de tiempo, ejecutamos en consola "sudo -s" y eso nos dejará como root toda la sesión.

sudo

También tendríamos que pensar en instalar un certificado SSL con letsencrypt, es gratis.

nginx, PHP, Linux, MySQL

por Jorge Martínez Mauricio :)

¿Algo que comentar?


Populares estos días

    Suscríbete por correo electrónico, recibirás los nuevos escritos antes que nadie y es gratis 😊


    tar.mx es un blog personal de Jorge Martínez Mauricio