Installar LEMP en Cent Os7 y Ubuntu Server 18.04

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

Deja un comentario

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