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.

publicidad

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