LNMP – Linux, Nginx, MariaDB y PHP
Es un servidor web/proxy inverso ligero de alto rendimiento y un proxy para protocolos de correo electrónico (IMAP/POP3)
Es software libre y de código abierto, licenciado bajo la Licencia BSD simplificada; también existe una versión comercial distribuida bajo el nombre de Nginx Plus. Es multiplataforma, por lo que corre en sistemas tipo Unix (GNU/Linux, BSD, Solaris, Mac OS X, etc.) y Windows.
Nginx fue inicialmente desarrollado con el fin explícito de superar el rendimiento ofrecido por el servidor web Apache. Sirviendo archivos estáticos, Nginx usa dramáticamente menos memoria que Apache, y puede manejar aproximadamente cuatro veces más solicitudes por segundo. Este aumento de rendimiento viene con un costo de disminuida flexibilidad, como por ejemplo la capacidad de anular las configuraciones de acceso del sistema por archivo (Apache logra esto con un archivo .htaccess, mientras que Nginx no tiene desarrollada tal funcionalidad).
Instalacion de NGINX
# yum -y install epel-release # yum -y install nginx # systemctl start nginx # systemctl enable nginx
Ahora para poder tener acceso al servidor web debemos asegurarnos que el puerto 80 esté abierto; por defecto el firewall lo bloquea entonces:
Verifiquemos el estado del firewall (firewalld)
# systemctl status firewalld
Luego Detenmos al firewall (firewalld)
# systemctl stop firewalld
Y si lo que queremos es Deshabilitar el firewall (firewalld); es decir que No se cargue al iniciar linux
# systemctl disable firewalld
Donde esta los archivos de aplicaciones web de NGINX ?
# cd /usr/share/nginx/html/
Desactivamos el SElinux
Editamos el:
# nano /etc/selinux/config
y dentro cambiamos :
SELINUX=disabled
Luego reiniciamos el servidor
# reboot
Instalacion de MariaDB
# yum -y install mariadb-server
En vista de que la version de mariaDB es menor a 5.7 hay que ajustar el server para que separe los archivos de bases de datos en ves de que los mismos se encuentren tos dentro de uno solo.
Para eso debemos editar el archivo server.cf y agregar la siguiente línea
# nano /etc/my.cnf.d/server.cnf
localizamos la etiqueta [mysql], debajo de ella colocamos
innodb_file_per_table = 1
# systemctl start mariadb # systemctl enable mariadb
Ó podemos en una sola línea ejecutar el siguiente comando que hatra las dos cosas a lavez, ejecuta y activar en el arranque
# systemctl enable --now mariadb
Aseguramiento del motor de base de datos
con el fin de poder asegurar el servicio de bases de datos mariaDB, ejecutamos el siguiente comadno en la línea de comandos:
# mysql_secure_installation
En la primera pregunta solo damos enter puesto que aún no tiene clave alguna, es decir recien esta instalado, luego nos preguntara si queremos poner una clave al root, se nos pedira la clave con la que queremos asegurar; coloquemos una clave fuerte para evitar contratiempos futuros.
Luego a las siguientes preguntas respondemos que si con Y
Instalacion de PHP
# yum -y install php-fpm php-xml php-mbstring php-json php-zip php-apcu php-opcache php-mysqlnd
Luego ejecutamos y fijamos al arranque de linux el php-fpm, pesto que es el programa o dependecia que se encargará de enlazar e interpretar las instrucciones PHP para ello digitamos:
# systemctl start php-fpm # systemctl enable php-fpm
Enlazar NGINX con PHP
La idea ahora es que NGINX sepa que cuando se procesen páginas escritas en PHP, el sepa en que IP (generalmente localhost – o lo que es lo mismo 127.0.0.1) y en que puerto (por lo general el 9000) debe enviar y escuchar las peticiones PHP, entonces para facilitar el trabajo nos movemos al directorio de configuracion de NGINX
# cd /etc/nginx/conf.d/ # nano w11.conf
server { listen 80; server_name w11.paulbernal.org; root /usr/share/nginx/w11; location ~* \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; } }
Ahora reiniciamos el NGINX para que tomen efecto los cambios
# systemctl restart nginx
Como habiamos indicado a NGINX que el directorio donde serviria a los archivos .php es /w11, debemos crerarla
# mkdir /usr/share/nginx/w11
Certificado TLS – SSH LetsEncript
Para crerar un certificado que permita navegar por https en el sitio podemos hacerlo con el cliente cerbot, el cual es una aplicacion escrita en python que se encraga de generar y colocar el certificado TLS en el sitio web:
https://certbot.eff.org/instructions
y seguir los pasos que ahi se indican.
Actualizar a PHP 7.3 desde el repositorio “oficial” CSL
El repositorio puede ser revisado para referencias en el sitio de CSL https://www.softwarecollections.org, sin embargo como nuestra practicas hemos realizado bajo Centos 7 que por defecto trae la version 5.4 de PHP; es quizá necesario actualizar a una version mas nueva, para eso debemos instalar el repositorio:
# yum install centos-release-scl
Posterior a esto instalamos el PHP como tal en la version 7.3 , por ejemplo:
# yum install rh-php73
y luego indicamos que vamos a usar esta distribusion o version con:
# scl enable rh-php73 bash
Si queremos ver cuales otras dependecias o aplicaiones podemos instalar basta con ejecutar la siguiente linea de comando:
# yum list rh-php73\*
Finalmente para verificar la version instalada solo ejecutamos
# php -v
Y listo..! hemos actualizado o subido de versión
Sin embargo y en vista de que estamos usando además NGINX es necesario instalar las dependencias y aplicaciones que nos permitiran indicar al servidor web que usaremos la version que acabamos de instalar, asi que instalaresmo esas dependencias en las versiones correspondientes a PHP 7.3.
# yum -y install rh-php73-php-fpm rh-php73-php-xml rh-php73-php-mbstring rh-php73-php-json rh-php73-php-zip rh-php73-php-apcu rh-php73-php-opcache rh-php73-php-mysqlnd rh-php73-php-gd
Finalmente para que todo funcione con la version actualizada de PHP debemos detener el programa de enlace entre PHP y nginx ; ya que de otro modmo generará un conflicto puesto que el la instalacion inicial ya lo habiamos ejecutado; para poder entonces desactivarlo ingresamos el comando:
# systemctl stop php-fpm # systemctl disable php-fpm
Hecho esto ahora debemos ejecutar el mismo programa pero de la version 7.3 asi:
# systemctl start rh-php73-php-fpm
y para que siempre al arrancar linux se ejecute:
# systemctl enable rh-php73-php-fpm
Finalmente para que podamos hacer uso de la version que hemos istalado en este caso PHP 7.3 es necesario decirle a linux que lo usaremos desde la consola en modo bash para eso ejecutamos el siguiente comando:
# scl enable rh-php73 bash
y para verificarlo chequemos la version que ahora esta activa
# php -v
El resultadfo deberia ser asi
Y listo!