Cómo instalar Linux, Nginx, MySQL, PHP (LEMP) en CentOS 7

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Instalación de Nginx
    1. Cómo encontrar la dirección IP pública de su servidor
  • Paso 2: Instalación de MariaDB
  • Paso 3 — Instalación de PHP
  • Paso 4: Configuración de Nginx para procesar páginas PHP
  • Paso 5: Prueba del procesamiento PHP en tu servidor web
  • Conclusión
  • Una pila de software LEMP es un grupo de software de código abierto que normalmente se instala en conjunto para permitir que un servidor aloje sitios web y aplicaciones web dinámicos. Este término es en realidad un acrónimo que representa el sistema operativo Linux, con el servidor web E Nginx (que reemplaza al componente Apache de una pila LAMP). Los datos del sitio se almacenan en una base de datos basada en MySQL y PHP procesa el contenido dinámico .

    En esta guía, instalaremos una pila LEMP con PHP 7.4 en un servidor CentOS 7, utilizando MariaDB como sistema de administración de bases de datos. MariaDB funciona como un reemplazo directo del servidor MySQL original, lo que en la práctica significa que puede cambiar a MariaDB sin tener que realizar ningún cambio de configuración o código en su aplicación.

    Prerrequisitos

    Antes de comenzar con esta guía, debe tener una cuenta de usuario independiente que no sea root configurada en su servidor. Puede aprender a hacerlo completando los pasos 1 a 4 de la configuración inicial del servidor para CentOS 7.

    Paso 1: Instalación de Nginx

    Para poder mostrar páginas web a los visitantes de nuestro sitio, vamos a utilizar Nginx, un servidor web de alto rendimiento. Para obtener la última versión de Nginx, primero instalaremos el repositorio EPEL, que contiene software adicional para el sistema operativo CentOS 7.

    Para agregar el repositorio EPEL de CentOS 7, ejecute el siguiente comando:

    1. sudo yum install epel-release

    Dado que estamos usando un sudocomando, estas operaciones se ejecutan con privilegios de root. Te pedirá la contraseña de tu usuario habitual para verificar que tienes permiso para ejecutar comandos con privilegios de root. También se te solicitará que confirmes la instalación, así que presiona Ypara continuar.

    Ahora que el repositorio EPEL está instalado en su servidor, instale Nginx usando el siguiente yumcomando:

    1. sudo yum install nginx

    Una vez finalizada la instalación, inicie el servicio Nginx con:

    1. sudo systemctl start nginx

    Puede hacer una verificación inmediata para verificar que todo salió según lo planeado visitando la dirección IP pública de su servidor en su navegador web (consulte la nota bajo el siguiente encabezado para averiguar cuál es su dirección IP pública si aún no tiene esta información):

    Open in a web browser:http://server_domain_name_or_IP/

    Verá la página web predeterminada de Nginx de CentOS 7, que está ahí con fines informativos y de prueba. Debería verse así:

    Si ve esta página, entonces su servidor web ahora está instalado correctamente.

    Para permitir que Nginx se inicie durante el arranque, ejecute el siguiente comando:

    1. sudo systemctl enable nginx

    Cómo encontrar la dirección IP pública de su servidor

    Si no sabe cuál es la dirección IP pública de su servidor, existen varias formas de averiguarla. Por lo general, esta es la dirección que utiliza para conectarse a su servidor a través de SSH.

    Desde la línea de comandos, puedes encontrar esto de varias formas. Primero, puedes usar las iproute2herramientas para obtener tu dirección escribiendo lo siguiente:

    1. ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's//.*$//'

    Esto te devolverá una o dos líneas. Ambas son direcciones correctas, pero es posible que tu computadora solo pueda usar una de ellas, así que prueba cada una.

    Un método alternativo es utilizar un tercero que le diga cómo ve su servidor. Puede hacerlo preguntando a un servidor específico cuál es su dirección IP:

    1. curl http://icanhazip.com

    Independientemente del método que utilice para obtener su dirección IP, puede escribirla en la barra de direcciones de su navegador web para acceder a su servidor.

    Paso 2: Instalación de MariaDB

    Ahora que tenemos nuestro servidor web en funcionamiento, es momento de instalar MariaDB, un reemplazo directo de MySQL. MariaDB es una versión desarrollada por la comunidad del sistema de gestión de bases de datos relacionales MySQL.

    Nuevamente, podemos utilizar yumpara adquirir e instalar nuestro software. Esta vez, también instalaremos otros paquetes auxiliares que nos ayudarán a lograr que nuestros componentes se comuniquen entre sí:

    1. sudo yum install mariadb-server mariadb

    Una vez finalizada la instalación, debemos iniciar MariaDB con el siguiente comando:

    1. sudo systemctl start mariadb

    Ahora que nuestra base de datos MariaDB está en funcionamiento, queremos ejecutar un script de seguridad que eliminará algunos valores predeterminados peligrosos y bloqueará el acceso a nuestra base de datos. Inicie el script interactivo ejecutando:

    1. sudo mysql_secure_installation

    El mensaje le solicitará su rootcontraseña actual de MariaDB. Dado que acaba de instalar MariaDB, lo más probable es que no tenga una, así que déjela en blanco presionando Enter. Luego, el mensaje le preguntará si desea establecer una rootcontraseña. Ingrese Yy siga las instrucciones:

    mysql_secure_installation prompts:Enter current password for root (enter for none): OK, successfully used password, moving on...Setting the root password ensures that nobody can log into the MariaDBroot user without the proper authorisation.Set root password? [Y/n] yNew password: Re-enter new password: Password updated successfully!Reloading privilege tables.. ... Success!

    Para el resto de las preguntas, debe presionar la tecla “ENTER” en cada mensaje para aceptar los valores predeterminados. Esto eliminará algunos usuarios y bases de datos de muestra, deshabilitará los inicios de sesión remotos como root y cargará estas nuevas reglas para que MySQL respete de inmediato los cambios que hemos realizado.

    Lo último que querrá hacer es habilitar MariaDB para que se inicie al arrancar el sistema. Para ello, utilice el siguiente comando:

    1. sudo systemctl enable mariadb

    En este punto, su sistema de base de datos ya está configurado y podemos continuar.

    Paso 3 — Instalación de PHP

    PHP es el componente de nuestra configuración que procesará el código para mostrar contenido dinámico. Puede ejecutar scripts, conectarse a nuestras bases de datos MySQL para obtener información y entregar el contenido procesado a nuestro servidor web para su visualización.

    La versión de PHP disponible de forma predeterminada en los servidores CentOS 7 está desactualizada y, por ese motivo, necesitaremos instalar un repositorio de paquetes de terceros para obtener PHP 7+ e instalarlo en su servidor CentOS 7. Remi es un repositorio de paquetes popular que proporciona las versiones de PHP más actualizadas para servidores CentOS.

    Para instalar el repositorio Remi para CentOS 7, ejecute:

    1. sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

    Una vez finalizada la instalación, deberá ejecutar un comando para habilitar el repositorio que contiene su versión preferida de PHP. Para comprobar qué versiones de PHP 7+ están disponibles en el repositorio Remi, ejecute:

    1. yum --disablerepo="*" --enablerepo="remi-safe" list php[7-9][0-9].x86_64

    Verás un resultado como este:

    OutputLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfile * remi-safe: mirrors.ukfast.co.ukAvailable Packagesphp70.x86_64                                              2.0-1.el7.remi                                       remi-safephp71.x86_64                                              2.0-1.el7.remi                                       remi-safephp72.x86_64                                              2.0-1.el7.remi                                       remi-safephp73.x86_64                                              2.0-1.el7.remi                                       remi-safephp74.x86_64                                              1.0-3.el7.remi                                       remi-safephp80.x86_64                                              1.0-3.el7.remi                                       remi-safe

    En esta guía, instalaremos PHP 7.4, que actualmente es la versión estable más actualizada de PHP. Para habilitar el paquete Remi correcto para instalar PHP 7.4, ejecute:

    1. sudo yum-config-manager --enable remi-php74

    Ahora podemos proceder a yuminstalar PHP como de costumbre. El siguiente comando instalará todos los paquetes necesarios para configurar PHP 7.4 en Nginx y le permitirá conectarse a bases de datos basadas en MySQL:

    1. sudo yum install php php-mysqlnd php-fpm

    Para confirmar que PHP está disponible en la versión elegida, ejecute:

    1. php --version

    Verás un resultado como este:

    OutputPHP 7.4.5 (cli) (built: Apr 14 2020 12:54:33) ( NTS )Copyright (c) The PHP GroupZend Engine v3.4.0, Copyright (c) Zend Technologies

    PHP ya está instalado correctamente en su sistema. A continuación, debemos realizar algunos ajustes a la configuración predeterminada. Para facilitar la edición de archivos en CentOS, primero instalaremos nano, un editor de texto más fácil de usar que vi:

    1. sudo yum install nano

    Abra el /etc/php-fpm.d/www.confarchivo de configuración utilizando nanoel editor de su elección:

    1. sudo nano /etc/php-fpm.d/www.conf

    Ahora busque las directivas usery group. Si está utilizando nano, puede pulsar CTRL+ Wpara buscar estos términos dentro del archivo abierto.

    /etc/php-fpm.d/www.conf

    …; Unix user/group of processes; Note: The user is mandatory. If the group is not set, the default user's group;       will be used.; RPM: apache user chosen to provide access to the same directories as httpduser = apache; RPM: Keep a group allowed to write in log dir.group = apache

    Notarás que las variables usery groupestán configuradas en apache. Necesitamos cambiarlas a nginx:

    /etc/php-fpm.d/www.conf

    …; RPM: apache user chosen to provide access to the same directories as httpduser = nginx; RPM: Keep a group allowed to write in log dir.group = nginx

    A continuación, busque la listendirectiva. De forma predeterminada, php-fpmescuchará en un host y puerto específicos a través de TCP. Queremos cambiar esta configuración para que escuche en un archivo de socket local, ya que esto mejora el rendimiento general del servidor. Cambie la línea que contiene la listendirectiva por lo siguiente:

    /etc/php-fpm.d/www.conf

    listen = /var/run/php-fpm/php-fpm.sock;

    Por último, necesitaremos cambiar la configuración de propietario y grupo para el archivo de socket que acabamos de definir dentro de la listendirectiva. Busque las directivas listen.owner, listen.groupy listen.mode. Estas líneas están comentadas de forma predeterminada. Elimine los comentarios eliminando el ;signo anterior al comienzo de la línea. Luego, cambie el propietario y el grupo a nginx:

    /etc/php-fpm.d/www.conf

    listen.owner = nginxlisten.group = nginxlisten.mode = 0660

    Guarde y cierre el archivo cuando haya terminado de editarlo. Si está utilizando nano, hágalo presionando CTRL + X, luego Yy ENTER.

    Para habilitar e iniciar el php-fpmservicio, ejecute:

    1. sudo systemctl start php-fpm

    Tu entorno PHP ya está listo. A continuación, configuraremos Nginx para que envíe todas las solicitudes de scripts PHP que se procesarán mediante php-fpm.

    Paso 4: Configuración de Nginx para procesar páginas PHP

    Ahora tenemos todos los componentes necesarios instalados. El único cambio de configuración que aún debemos realizar es indicarle a Nginx que use nuestro procesador PHP para contenido dinámico.

    Nginx tiene un directorio dedicado donde podemos definir cada sitio web alojado como un archivo de configuración independiente, utilizando un bloque de servidor. Esto es similar a los hosts virtuales de Apache.

    Sin embargo, con la instalación predeterminada, este directorio está vacío. Crearemos un nuevo archivo para que funcione como el sitio web PHP predeterminado en este servidor, que anulará el bloque de servidor predeterminado definido en el /etc/nginx/nginx.confarchivo.

    Primero, abra un nuevo archivo en el /etc/nginx/conf.ddirectorio:

    1. sudo nano /etc/nginx/conf.d/default.conf

    Copie el siguiente bloque de definición de servidor PHP en su archivo de configuración y no olvide reemplazar la server_namedirectiva para que apunte al nombre de dominio o la dirección IP de su servidor:

    /etc/nginx/conf.d/default.conf

    server {    listen       80;    server_name  server_domain_or_IP;    root   /usr/share/nginx/html;    index index.php index.html index.htm;    location / {        try_files $uri $uri/ =404;    }    error_page 404 /404.html;    error_page 500 502 503 504 /50x.html;        location = /50x.html {        root /usr/share/nginx/html;    }    location ~ .php$ {        try_files $uri =404;        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;        fastcgi_index index.php;        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;        include fastcgi_params;    }}

    Guarde y cierre el archivo cuando haya terminado.

    A continuación, reinicie Nginx para aplicar los cambios:

    1. sudo systemctl restart nginx

    Tu servidor web ya está completamente configurado. En el siguiente paso, probaremos la integración de PHP con Nginx.

    Paso 5: Prueba del procesamiento PHP en tu servidor web

    Ahora que su servidor web está configurado, podemos crear un script PHP de prueba para asegurarnos de que Nginx esté manejando correctamente .phplos scripts con la ayuda de php-fpm.

    Antes de crear nuestro script, realizaremos un cambio en la configuración de propiedad predeterminada en la raíz del documento de Nginx, para que nuestro usuario sudo habitual pueda crear archivos en esa ubicación.

    El siguiente comando cambiará la propiedad de la raíz del documento Nginx predeterminada a un usuario y grupo llamadoSammy, así que asegúrese de reemplazar el nombre de usuario y el grupo resaltados en este comando para reflejar el nombre de usuario y el grupo de su sistema.

    1. sudo chown -R sammy.sammy /usr/share/nginx/html/

    Ahora crearemos una página PHP de prueba para asegurarnos de que el servidor web funcione como se espera.

    Crea un nuevo archivo PHP llamado info.phpen el /usr/share/nginx/htmldirectorio:

    1. nano /usr/share/nginx/html/info.php

    El siguiente código PHP mostrará información sobre el entorno PHP actual que se ejecuta en el servidor:

    /usr/share/nginx/html/info.php

    ?phpphpinfo();

    Cuando haya terminado, guarde y cierre el archivo.

    Ahora podemos probar si nuestro servidor web puede mostrar correctamente el contenido generado por un script PHP. Vaya a su navegador y acceda al nombre de host o la dirección IP de su servidor, seguido de /info.php:

    http://server_host_or_IP/info.php

    Verás una página similar a ésta:

    Después de comprobar la información relevante sobre su servidor PHP a través de esa página, es mejor eliminar el archivo que ha creado, ya que contiene información confidencial sobre su entorno PHP y su servidor CentOS. Puede utilizar rmpara eliminar ese archivo:

    1. rm /usr/share/nginx/html/info.php

    Siempre puedes regenerar este archivo si lo necesitas más adelante.

    Conclusión

    En esta guía, ha creado una base flexible para ofrecer sitios web y aplicaciones PHP a sus visitantes, utilizando Nginx como servidor web y la última versión de PHP. Ha configurado Nginx para gestionar solicitudes PHP a través de php-fpm, y también ha configurado una base de datos MariaDB para almacenar los datos de su sitio web.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion