LEMP es el acrónimo usado para describir un sistema de infraestructura de internet que usa las siguientes herramientas:
- Linux, el sistema operativo.
- NGINX, el servidor web.
- MySQL/MariaDB, el gestor de bases de datos.
- PHP-fpm, los lenguajes de programación.
Instalar en Cent Os 7
NGINX
Antes de instalar nginx debemos tener instalado el repositorio epel
# yum install epel-release
Instalación del servicio LEMP
Instalacion de paquetes en RedHat / CentOS
# yum install nginx
Configurar para que el servicio arranque al inicio del equipo.
Una vez que esté instalado, puede iniciar Nginx con el siguiente comando:
# systemctl start nginx
Luego es habilitar el servicio de Nginx
# systemctl enable nginx
MySQL/MariaDB
Instalación del servicio mysql:
# yum install mariadb-server
Configuración para que el servicio arranque al inicio del equipo:
# systemctl enable mariadb
Configuración para que el servicio arranque al inicio del equipo:
# systemctl start mariadb
Se Realiza una instalacion segura de MySQL:
# mysql_secure_installation
Enter current password for root (enter for none): <-- ENTER (Al tratarse de una configuracion nueva el pass esta en blanco) Set root password? [Y/n] <-- Y New password: <-- fill in your desired MySQL root password Re-enter new password: <-- confirm that password Remove anonymous users? [Y/n] <-- Y Disallow root login remotely? [Y/n] <-- Y Remove test database and access to it? [Y/n] <-- Y Reload privilege tables now? [Y/n] <-- Y
Para probar la terminal de mysql, ingresaremos el siguiente comando:
# mysql -u root -p
Instalación de PHP & FastCGI
Modulo de PHP en apache
Habilitar EPEL
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Installar utils si no esta instalado
yum install yum-utils
Poner el repositorio de php7.2
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm yum-config-manager --enable remi-php72
y ahora instalamos php
# yum install php
Instalacion del soporte de MySQL y PHP:
# yum install -y php-mysql php-gd php-imap php-ldap php-mbstring php-odbc php-pear php-xml php-xmlrpc php-ldap
PHP Procesos FastCGI (FPM) NOTA: Esto es si queremos que funcione con los módulos de FPM de lo contrario no es necesario para el lemp
Instalar php-fpm
# yum install php php-mysql php-fpm
Una vez instalado con todo y los complementos el php-fpm, abriremos el archivo de configuracion
# vi /etc/php.ini
Después procederemos a remplazar el “1” de la siguiente linea en el archivo por “0” y descomentarlo:
cgi.fix_pathinfo=0
A continuación, abra el archivo de configuración php-fpm www.conf:
# vi /etc/php-fpm.d/www.conf
Buscaremos la línea que especifica el “listen” y la cambiaremos por la siguiente:
listen = /var/run/php-fpm/php-fpm.sock
A continuación, encontrará las líneas que marcan la listen.ownere listen.groupy las descomentaremos. Deberían verse así:
listen.owner = nginx listen.group = nginx
Por último, encontrar las líneas que marcan la user y group se cambiaran sus valores por “nginx”:
user = nginx group = nginx
Ahora, solo tenemos que iniciar nuestro procesador PHP-fpm escribiendo:
# systemctl start php-fpm
Luego, habilitar php-fpm para que comience en el arranque:
# systemctl enable php-fpm
Configurar Nginx para procesar páginas PHP
Editaremos el archivo conf del nginx por bloque servidor con el siguiente comando:
vi /etc/nginx/conf.d/default.conf
A continuación se realizaran los siguientes cambios al archivo .conf:
server {
listen 80;
server_name server_domain_name_or_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(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Reinicie Nginx para realizar los cambios necesarios:
# systemctl restart nginx
Añadir los servicios al Firewall
Añadimos el servicio de http
# firewall-cmd --zone=public --permanent --add-service=http
Añadimos el puerto 80/tcp
# firewall-cmd --zone=public --permanent --add-port=80/tcp
Recargamos el servicio de firewall
# firewall-cmd --reload
Reiniciar el servicio de Nginx para que se vea reflejado:
# systemctl restart nginx
Instalar en Ubuntu Server 18.04
Instalamos NginX
# apt install nginx
Nginx una ves instalado se ejecuta solo por lo cual podemos verificar que ya este corriendo en la ip del equipo que tenemos
Instalaremos ahora MySQL
# apt install mysql-server
Ahora configuramos MySQL con este comando
mysql_secure_installation
Ahora instalaremos PHP 7.2
Primero asegurate de tener instalado el siguiente paquete
# apt-get install software-properties-common
Luego agregamos el repositorio
# add-apt-repository ppa:ondrej/php
hacemos un update
# apt-get update
E instalamos php 7.2
# apt-get install php7.2
Ahora tenemos nuestros componentes de PHP instalados, pero necesitamos hacer un ligero cambio de configuración para hacer nuestra configuración más segura.
Abra el archivo de configuración principal php-fpm con privilegios de root
vi /etc/php/7.2/fpm/php.ini
Lo que estamos buscando en este archivo es el parámetro que establece cgi.fix_pathinfo. Esto se comentará con un punto y coma (;) y se establecerá en “1” de forma predeterminada.
Cambiamos estas dos condiciones descomentando la línea y estableciéndola en “0” como esto:
cgi.fix_pathinfo=0
Guarde y cierre el archivo cuando haya finalizado.
Ahora, solo necesitamos reiniciar el procesador de PHP escribiendo:
# systemctl restart php7.2-fpm
hora, tenemos todos los componentes necesarios instalados. El único cambio de configuración que todavía necesitamos es decirle a Nginx que use nuestro procesador PHP para contenido dinámico.
Hacemos esto en el bloque del servidor (los bloques del servidor son similares a los hosts virtuales de Apache). Abra el archivo de configuración del bloque del servidor Nginx predeterminado escribiendo:
# vi /etc/nginx/sites-available/default
Actualmente, con los comentarios eliminados, el archivo del bloque del servidor predeterminado de Nginx se ve así:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
Reemplazamos eso por la siguiente linea
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name server_domain_or_IP;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;`.
}
}
Cuando haya realizado los cambios anteriores, puede guardar y cerrar el archivo.
Pruebe su archivo de configuración de errores de sintaxis escribiendo:
# nginx -t
Si se informa de algún error, vuelva a revisar su archivo antes de continuar.
Cuando esté listo, recargue Nginx para realizar los cambios necesarios:
#systemctl reload nginx
EMP debe estar completamente configurado. Podemos probarlo para validar que Nginx puede manejar correctamente archivos .php en nuestro procesador PHP.
Podemos hacerlo creando un archivo PHP de prueba en nuestra carpeta raíz. Abra un nuevo archivo llamado info.php dentro de la carpeta raíz en el editor de texto:
vi /var/www/html/info.php
Escriba o pegue las siguientes líneas en el nuevo archivo. Este es un código PHP válido que devolverá información sobre nuestro servidor:
<?php
phpinfo();
Cuando haya terminado, guarde y cierre el archivo.
Ahora, puede visitar esta página en su navegador de Internet visitando el nombre de dominio de su servidor o la dirección IP pública seguida por /info.php:
http://dominio_del_servidor_o_IP/info.php
Usted debe ver una página web que ha sido generada por PHP con información sobre su servidor

