LNMP – Linux, Nginx, MariaDB y PHP

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!

You must be logged in to post a comment