Hoy vamos a ver cómo instalar Ngnix, con la versión más reciente de PHP. PHP 7.3 la versión más reciente a fecha de publicación de este post.
Antes que nada vamos a hacer sobre estos 2 protagonistas. Aunque si ya los conoces... Y has entrado a este post únicamente para saber cómo instalarlos, te animo que hagas scroll hasta el titular de Instalación paso a paso de Ngnix + PHP 7.3.
Sobre nginx
Nginx es bastante más que un
servidor web veloz. Aunque es más conocido por ser un servidor web, también puede ser configurado como proxy inverso e incluso un proxy para protocolos de mail. Para nuestra fortuna, es software libre y el código esta disponible para quien quiera consultarlo, ya que es de código abierto, bajo Licencia BSD. Aunque también existe una versión comercial bastante más completa, llamada
nginx plus.
Sobre PHP
PHP (del inglés PHP Hypertext Processor). Aunque inicialmente el nombre provenía de (Personal Home Page Tools). PHP es uno, de los diferentes lenguajes de programación Web, del lado del servidor. El código no es compilado, sino interpretado por un servidor web, con un módulo procesador de PHP. Además debido a su evolución, PHP puede ser ejecutado a través de una interfaz de línea de comandos.
Instalación paso a paso de ngnix + PHP 7.3
Ahora que ya sabemos ligeramente sobre estos 2 aliados, vamos a instalarlos y ponerlos a punto. Primero que todo vamos a necesitar
tener instalado Centos 7, sobre nuestra VPS o servidor dedicado. Ahora que tenemos nuestro Centos 7 preparado... ¡Vamos a ello!
Instalación de nginx
Primero que todo vamos a actualizar todos los paquetes instalados actualmente en nuestro Centos 7.
yum update -y
Instalamos el repositorio EPEL, para posteriormente instalar nginx.
yum install epel-release -y
Instalamos el paquete nginx.
yum -y install nginx
Arrancamos nuestro servidor nginx, ya instalado.
service nginx start
Vamos a habilitar el servicio nginx, para que arranque automáticamente al arrancar nuestro servidor Centos.
systemctl enable
Vamos a arrancar el servicio nginx.
systemctl start nginx
Toca comprobar el estado del servicio nginx.
systemctl status nginx
Que si hasta aquí lo hemos hecho correctamente, veremos el servicio como active (running):
Vamos a habilitar las peticiones HTTP y HTTPS en nuestro firewall
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
Vamos a "recargar" el firewall para aplicar las nuevas reglas añadidas
firewall-cmd --reload
Vamos a comprobar que el servidor nginx este funcionando
Para ello, vamos a abrir un navegador, vamos a introducir la IP de nuestro servidor. Y si hemos completado todos los pasos correctamente, deberíamos ver una pantalla similar a esta:
Instalación de PHP 7.3
Lo primero es lo primero, así que vamos a instalar el repositorio de Remi.
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Antes de pasar al siguiente paso, debemos activar la colección de utilidades de yum
yum install -y yum-utils --enablerepo="base"
Acto seguido, vamos a habilitar el repositorio de Remi, anteriormente instalado
yum-config-manager --enable remi-php73
Vamos a actualizar de nuevo, todos nuestros paquetes instalados.
yum update -y
Instalamos PHP 7.3, nuestro bien más preciado.
yum install -y php73
Vamos a instalar php73-php-fpm (PHP FastCGI Process Manager) conjuntamente con los módulos de PHP más utilizados
yum install -y php73-php-fpm php73-php-gd php73-php-json php73-php-mbstring php73-php-mysqlnd php73-php-xml php73-php-xmlrpc php73-php-opcache
Comprobamos la versión de PHP instalada
php73 -v
Si todo ha ido bien hasta este punto, deberías ver algo similar a esto:
PHP 7.3.4 (cli) (built: Apr 2 2019 13:48:50) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.4, Copyright (c) 1999-2018, by Zend Technologies
Vamos a comprobar los módulos de PHP instalados en nuestro servidor
php73 --modules
Del mismo modo que hemos hecho con nginx... vamos a habilitar el servicio nginx en el arranque del sistema
systemctl enable php73-php-fpm.service
Arrancamos el servicio nginx
systemctl start php73-php-fpm.service
Comprovamos el estado del servicio nginx
systemctl status php73-php-fpm.service
Enlazar nginx con PHP7.3
Ahora viene lo más importante, vamos a "enlazar" nuestro servidor Web nginx, con PHP 7.3.
Vamos a comprobar que usuario del sistema, utiliza nuestro servidor nginx
egrep '^(user|group)' /etc/nginx/nginx.conf
Cuyo resultado será similar a este:
[root@bender ~]# egrep '^(user|group)' /etc/nginx/nginx.conf
user nginx;
Es decir, el usuario que estábamos buscando, en mi caso, y seguramente en el tuyo... es nginx.
Modificamos la configuración de nuestro PHP FPM, para definir el usuario Unix de procesos FPM
vi /etc/opt/remi/php73/php-fpm.d/www.conf
Quedando el fichero de configuración, de la siguiente manera:
...
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...
Reiniciamos el servicio PHP FPM para aplicar los cambios
systemctl restart php73-php-fpm.service
Ahora ya sólo nos queda acabar de realizar las últimas pinceladas en la configuración de nginx
Vamos a editar el fichero de configuración de nginx, para indicarle, que debe hacer con nuestros ficheros PHP. ¡Pasarlos por el interprete!
vi /etc/nginx/nginx.conf
La modificación se realizará dentro del aparatado "server" dentro del fichero de configuración. Quedando de esta manera, nuestra configuración.
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
Acto seguido, reiniciaremos nuestro servicio nginx, para aplicar los cambios anteriormente realizados en nginx
service nginx restart
Vamos a crear un fichero PHP para comprobar que nginx es capaz de interpretarlo correctamente con la ayuda de PHP FPM
vi /usr/share/nginx/html/p.php
Cuyo contenido del fichero, os recomiendo que sea lanzar la instrucción phpinfo(); para poder comprobar la versión de PHP ejecutada, juntamente con los módulos activos.
<?php
phpinfo();
Accederemos mediante nuestro navegador Web, a la dirección http://IP de nuestro servidor/p.php y si todo ha funcionado correctamente, ya tendremos funcionando nuestro servidor nginx juntamente con la última versión de PHP 7.3
Fecha: 07/04/2019