Instalar y configuración minima del server web LEMP Nova 6

Saludos a los lectores y visitantes de esta sitio, hace ya un tiempo que no escribo un post y que me halla dado líos para aprender “eso me gusto, a pesar de que estuve a punto de tirar la tualla”. Así que sin más demora y muela, a compartir lo aprendido a la comunidad. Para empezar con una breve reseña.

Como todos saben los server web en linux son generalmente instalados usando la combinación LAMP “en Windows es WAMP o XAMPP ”, por lo que es muy común preguntar en que tienes tu server web montado y que te respondan: Apache, sin más ni más te imaginas el resto, por lo que los novatos como el que escribe va a la Ecured a averiguar.

Las tecnologías LAMP esto se consigue mediante la unión de:

  • Linux, el sistema operativo
  • Apache, el servidor Web
  • MySQL, el gestor de bases de datos
  • Perl, PHP o Python, los lenguajes de programación

Siguiendo y aclarado el punto, pasamos a LEMP que es el server web que nos ocupa y como ven solo cambia en una letra, supuestamente pero la tecnologías detras de esta cambia en vez de Apache es Nginx y la forma de trabajo más sencilla.

Nginx: Nginx (“engine x”) es un servidor HTTP y proxy inverso de alto rendimiento, y un servidor proxy para IMAP/POP3/SMTP.

El servidor LEMP está formado por la siguiente configuración:

  • Linux (L)
  • nGinx (E)
  • MySQL (M)
  • PHP (P)

Luego de esta breve introducción vamos arriba del lio.

Primero recuerde tener configurado correctamente el sitio de actualización e instalación de paquetes de los repositorios: sudo apt update ó sudo apt-get update.

COMENZAMOS INSTALANDO NGINX ”

sudo apt- update

sudo apt-get update

sudo apt-get install nginx

Luego de esta combinación de comandos, comprobamos que el server esta instalado correctamente y claro es como en apache “abres el navegador web de tu preferencia y en la barra de direcciones, colocar (http://localhost ó http://127.0.0.1 ; sino la ip real de tú server, si lo instalas remotamente )”.

CONFIGURAR NGINX PARA USAR EL PROCESADOR PHP

Ahora, 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:

sudo nano /etc/nginx/sites-available/default

Actualmente, con los comentarios eliminados, el archivo del bloque del servidor predeterminado de Nginx se ve así:

/etc/nginx/sites-available/default

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;
}

}

Necesitamos
realizar algunos cambios en este archivo para nuestro sitio.

  • En primer lugar, necesitamos agregar index.php como el primer valor de nuestra directiva de índice para que los archivos denominados index.php se sirvan, si están disponibles, cuando se solicita un directorio.
  • Podemos modificar la directiva server_name para apuntar al nombre de dominio de nuestro servidor o a la dirección IP pública.
  • Para el procesamiento real de PHP, solo necesitamos descomentar un segmento del archivo que maneja las solicitudes de PHP. Éste será el bloque de ubicación ~.php$, el fragmento fastcgi-php.conf incluido y el socket asociado con php-fpm.
  • También hay que remover los comentarios del bloque de ubicación que trata con archivos .htaccess. Nginx no procesa estos archivos. Si alguno de estos archivos encuentra la forma de llegar a un documento root, no deben ser servidos a los visitantes.

Los cambios que necesitas hacer están en rojo en el siguiente texto:

/etc/nginx/sites-available/default

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:

sudo 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:

sudo systemctl reload nginx

Crear un Archivo PHP para probar la Configuración

LEMP 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:

sudo nano /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:

/var/www/html/info.php

<?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:

AHORA PASAMOS A INSTALAR EL SERVIDOR DE BASE DE DATOS “MYSQL”

sudo apt-get install mysql-server sudo apt-get install mysql-client “Lo hice opcional”

Se le pedirá que proporcione una contraseña root (administrativa) para usar dentro del sistema MySQL.

Párrafo tomado de: https://www.digitalocean.com

Ahora tenemos Nginx instalado para servir a nuestras páginas y MySQL instalado para almacenar y administrar nuestros datos. Sin embargo, todavía no tenemos nada que pueda generar contenido dinámico. Podemos usar PHP para esto.

Puesto que Nginx no contiene procesamiento PHP nativo como otros servidores web, tendremos que instalar php-fpm, que significa “fastCGI process manager”. Le diremos a Nginx que pase las solicitudes de PHP a este software para su procesamiento.

Podemos instalar este módulo y también agarrar un paquete adicional que permitirá que PHP se comunique con nuestro backend de la base de datos. La instalación incorporará los archivos de núcleo de PHP necesarios. Haga esto ingresando en su terminal:

sudo apt-get install php-fpm php-mysql

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.

Este es un ajuste extremadamente inseguro porque le dice a PHP que intente ejecutar el archivo más cercano que puede encontrar si no se puede encontrar el archivo PHP solicitado. Esto básicamente permitiría a los usuarios elaborar solicitudes de PHP de una manera que les permitiera ejecutar scripts que no se les debería permitir ejecutar.

Cambiamos estas dos condiciones descomentando la línea y estableciéndola en “0” como esto:

/etc/php/7.0/fpm/php.ini

cgi.fix_pathinfo=0

Guarde y cierre el archivo cuando haya finalizado.

Ahora, solo necesitamos reiniciar el procesador de PHP escribiendo:

sudo systemctl restart php7.0-fpm

Esto implementará el cambio que realizamos.

FIN del párrafo tomado de: https://www.digitalocean.com

INSTALAR PHPMYADMIN

Ahora procedemos a instalar phpmyadmin y aquí preste mucha atención por que de no seguir los pasos puede terminar con dolor de cabeza por no poder llamar la interfaz gráfica de phpmyadmin.

Primero como es tradicional con los server lamp colocamos el comando de instalación

sudo apt-get install phpmyadmin

IMPORTANTE– IMPORTANTE– IMPORTANTE

Durante la instalación, se le solicitará cierta información. Le preguntará qué servidor web desea que el software configure automáticamente. Dado que Nginx, el servidor web que estamos usando, no es una de las opciones disponibles, puede presionar TAB y luego ENTER para omitir este aviso.

La siguiente pregunta le preguntará si desea que dbconfig-common configure una base de datos para que la use phpMyAdmin. Seleccione “Sí” para continuar. Deberá ingresar la contraseña del administrador de la base de datos que configuró durante la instalación de MySQL para permitir estos cambios.

Ahora se le pedirá que elija y confirme una contraseña para la aplicación phpMyAdmin y su base de datos (que se creará en este paso). Elija y confirme una contraseña segura y tome nota de ella.

La instalación ahora se completará. Para que el servidor web Nginx encuentre y sirva los archivos phpMyAdmin correctamente, necesitaremos crear un enlace simbólico desde los archivos de instalación a nuestro directorio raíz de documentos Nginx:

sudo ln -s /usr/share/phpmyadmin /var/www/html

Con eso, nuestra instalación de phpMyAdmin ya está operativa. Para acceder a la interfaz, vaya al nombre de dominio o la dirección IP pública de su servidor seguido de / phpmyadmin en su navegador web: http: // server_domain_or_IP / phpmyadmin

(http://localhost/phpmyadmin ó http://127.0.0.1/phpmyadmin ; sino la ip real de tú server, si lo instalas remotamente )”.

Después de completar este paso de importancia vital se puede decir que ahora puede administrar sus bases de datos MySQL desde una interfaz web.

Por cierto este es solo el comienzo. Le recomiendo seguir estudiando el tema, por que lo que se escribe en este blog es basado en mi propia experiencia personal y puede que UD. necesite más que esto.

Luego
de este artículo y lo que le ocurrió a la Red Social ULT con lo de
no tener un certificado de seguridad, estoy estudiando como se hace
para que en los server web todos los sitios pasen por el protocolo
seguro “https”, con un certificado auto-firmado claro; pero eso
es otra historia que debo aprender. Chao.

Acerca de Arrechea

Me gusta eschuchar música, prácticar deportes, viajar (a quien no?), aficionado a la informática (novato en Linux) entre otras...