Cómo instalar el stack Nginx, MySQL, PHP v7 (LEMP) en CentOS 7
Nginx es un software de servidor web de código abierto en crecimiento y PHP v7 es la última versión del motor PHP. En este tutorial, lo usaremos para construir un servidor stack LEMP (Linux, ENginx, MySQL, PHP). Nginx reemplaza el popular paquete Apache que se encuentra en el stack LAMP.
Tabla de Contenidos
Lo que necesitarás
Antes de comenzar con esta guía, necesitarás lo siguiente:
- acceso root al VPS
Paso 1 – Instalar Nginx en CentOS 7
Como Nginx no está disponible en los repositorios CentOS por defecto, instalaremos el repositorio EPEL ejecutando este comando:
yum install epel-release -y
A continuación, instalaremos Nginx como tal:
yum install nginx -y
Una vez completada la instalación, habilita el inicio en el arranque de Nginx y ejecútalo:
systemctl start nginx systemctl enable nginx
Para verificar si Nginx se está ejecutando, puedes visitar tu dirección IP a través del navegador. En primer lugar, identifica tu IP:
dig +short myip.opendns.com @resolver1.opendns.com
Luego, solo cópiala y pégala en el navegador y verás una página similar a esta:
Paso 2 – Instalar MySQL (MariaDB)
Una vez que el servidor web esté instalado, podemos continuar con la instalación de MySQL. MariaDB es una bifurcación (fork) de la comunidad del viejo y conocido servicio MySQL. Como MariaDB viene con repositorios CentOS predeterminados, podemos ejecutar Yum para instalarlo:
yum install mariadb-server mariadb -y
Después de terminar la instalación, habilita e inicia el servicio:
systemctl start mariadb systemctl enable mariadb
Por último, ejecuta el script de configuración inicial que eliminará algunas de las configuraciones predeterminadas:
mysql_secure_installation
Sin embargo, MariaDB te pedirá la contraseña de root, pero como esta es la instalación inicial, no tienes ninguna, así que solo presiona ENTER. El siguiente mensaje te preguntará si quieres establecer una contraseña root, ingresa Y y sigue las instrucciones:
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 MariaDB root user without the proper authorization. New password: password Re-enter new password: password Password updated successfully! Reloading privilege tables.. ... Success!
Puedes presionar con seguridad la tecla ENTER y aceptar la configuración predeterminada para todas las demás preguntas. Después de completar la configuración, continúa con la instalación de PHP.
Paso 3 – Instalar PHP v7.1.0
Lo primero que haremos es instalar el repositorio de CentOS adicional que contiene los paquetes necesarios para PHP v7.1:
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm rpm -Uvh remi-release-7.rpm
Habilita el repositorio php71
que está deshabilitado de manera predeterminada:
yum install yum-utils -y yum-config-manager --enable remi-php71
En segundo lugar, instala el paquete PHP:
yum --enablerepo=remi,remi-php71 install php-fpm php-common
Instala los módulos comunes, como CLI, MongoDB, entre otros:
yum --enablerepo=remi,remi-php71 install php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
Paso 4 – Configurar Nginx para que funcione con PHP 7
Crea un nuevo archivo de configuración de Nginx ejecutando vim o el editor de texto nano:
nano /etc/nginx/conf.d/default.conf
Ingresa este código:
server { listen 80; server_name your_server_ip; # note that these lines are originally from the "location /" block 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; } }
Importante. Reemplaza your_server_ip
con la IP real de tu servidor.
Guarda el archivo presionando CTRL + X (CMD + X para usuarios de Mac). Reinicia Nginx para que el cambio surta efecto:
systemctl restart nginx
Ahora, abre la configuración de PHP-FPM:
nano /etc/php-fpm.d/www.conf
Encuentra y reemplaza estas líneas:
user = apache
por user = nginx
group = apache
por group = nginx
listen.owner = nobody
por listen.owner = nginx
listen.group = nobody
por listen.group = nginx
Y, por último, debajo de ;listen = 127.0.0.1:9000
agrega esta línea:
listen = /var/run/php-fpm/php-fpm.sock
Una vez más, guarda el archivo presionando CTRL + X. Y finalmente, inicia php-fpm
y habilítalo en el arranque:
systemctl start php-fpm.service systemctl enable php-fpm.service
Conclusión
Tal vez la instalación del stack LEMP requiera más configuraciones que la muy conocida configuración LAMP, pero puedes estar seguro de que estarás utilizando la última tecnología de ambos mundos: un paquete rápido de procesadores PHP-FPM v7 con servicio web moderno de Nginx. Eso es todo por ahora, no dudes en consultar otros tutoriales de VPS en nuestra página de tutoriales de VPS.
Comentarios
marzo 08 2019
Hola Gustavo. Muchas gracias por el manual muy bueno!, por aportar una pequeña mejora. Justo cuando acabas de instalar nginx no podia acceder al servidor web a traves de la IP, era por que fataltaba la apertura del firewall, añadiendo estos comando he podido acceder correctamente: sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --reload Espero que sirva el aporte, de nuevo muchas gracias y suerte!
marzo 14 2019
Hola, me alegra que te haya gustado el manual. Y gracias por el aporte.
marzo 20 2019
Hola, solo que en Centos debe hacerse con doble -- así: sudo firewall-cmd ––permanent ––zone=public ––add-service=http sudo firewall-cmd ––permanent ––zone=public ––add-service=https sudo firewall-cmd ––reload De todos modos nos salvaste!!!! Gracias
julio 01 2019
Buenas Tardes. Gustavo, Te escribo por que tengo un pequeño problema con el nginx con php. Realice una prueba para ver la conexión; Cree el archivo /var/www/html/info.php Con la siguiente info; <?php phpinfo(); Con el navegador coloque la de mi servidor IP/info.php No visualice en la página nada de información sobre su servidor. saludos.
agosto 16 2019
Hola Omar, PHP solo proporciona información sobre la versión de PHP etc, pero no da información sobre el servidor. ¿Podrías decirme lo que ves?