Instalación de LEMP (Nginx, PHP, MySQL con motor MariaDB y PhpMyAdmin) en Arch Linux


Debido a su modelo Rolling Release que abarca el software de última generación, Arch Linux no fue diseñado y desarrollado para ejecutarse como un servidor para proporcionar servicios de red confiables porque requiere tiempo adicional para mantenimiento, actualizaciones constantes y configuraciones de archivos sensibles.

Pero, aún así, debido a que Arch Linux viene con una instalación central de CD con un software mínimo preinstalado, puede representar un punto de inicio sólido para instalar la mayoría de los servicios de red populares en estos días, esto incluye < b> LEMP o LAMP , Apache Web Server, Nginx, PHP, bases de datos SQL, Samba, servidores FTP, BIND y otros, muchos de los cuales provienen de Arch Repositorios oficiales de Linux y otros de AUR .

Este tutorial lo guiará a través de la instalación y configuración de la pila LEMP (Nginx, PHP, MySQL con motor MariaDB y PhpMyAdmin) de forma remota usando SSH, que puede proporcionar una base sólida para crear aplicaciones de servidor web.

Guía de instalación anterior de Arch Linux, excepto la última parte sobre redes con DHCP.

Paso 1: Asignar IP estática en la interfaz de red

1. Después de una instalación mínima de Arch Linux , reinicie su servidor, inicie sesión con una cuenta raíz o una cuenta sudo administrativa equivalente e identifique los nombres de los dispositivos NIC de su sistema mediante el comando ip link .

# ip link

2. Para asignar configuraciones de red estáticas, usaremos el paquete Netctl para administrar las conexiones de red. Una vez que haya identificado correctamente sus nombres de interfaces de red , copie la plantilla de archivo ethernet-static en la ruta del sistema netctl y cambie su nombre a un esquema de nombres descriptivo ( intente utilizar una cadena " estática " combinada con el nombre de la NIC), emitiendo el siguiente comando.

# cp /etc/netctl/examples/ethenet-static  /etc/netctl/static.ens33

3. El siguiente paso es editar este nuevo archivo de plantilla cambiando las directivas del archivo y proporcionando su configuración de red real (Interfaz, IP/Máscara de red, Puerta de enlace, Difusión, DNS) como en el siguiente extracto.

# nano  /etc/netctl/static.ens33
Description='A basic static ethernet connection for ens33'
Interface=ens33
Connection=ethernet
IP=static
Address=('192.168.1.33/24')
Gateway='192.168.1.1'
Brodcast='192.168.1.255'
DNS=('192.168.1.1' '8.8.8.8')

4. El siguiente paso es iniciar su conexión de red a través de la herramienta del sistema netctl y verificar la conectividad de su sistema emitiendo los siguientes comandos.

# netctl start static.ens33
# netctl status static.ens33

5. Si obtiene un estado de salida verde activo, ha configurado correctamente su Interfaz de red y es hora de habilitarla automáticamente en los servicios de todo el sistema. También pruebe su red ejecutando un comando ping contra un nombre de dominio y también, instale el paquete net-tools (la característica más conocida de este paquete es el comando ifconfig que Arch desarrolladores considerados como obsoletos y lo reemplazaron con iproute2 ).

# netctl enable static.ens33
# pacman -S net-tools

6. Ahora puede ejecutar el comando ifconfig para verificar su configuración de Interfaces de red y verificar si todo se muestra correctamente, luego reiniciar su sistema para asegurarse todo está en su lugar y configurado correctamente.

# ping tecmint.com

Paso 2: Instale el software LEMP

Como se señala en este artículo, la introducción LEMP significa Linux + Nginx + PHP/PhpMyAdmin + MySQL/MariaDB, que es una de las plataformas de aplicaciones web más difundidas en la actualidad después de LAMP (el misma pila con Apache en la ecuación).

7. Antes de instalar realmente la pila LEMP , necesitamos actualizar el sistema y luego obtener el control remoto del servidor Arch Linux . Como probablemente sepa, OpenSSH es el principal candidato para este trabajo, así que continúe e instálelo, inicie el demonio SSH y habilítelo en todo el sistema.

$ sudo pacman -Syu
$ sudo pacman –S openssh
$ sudo systemctl start sshd
$ sudo systemctl status sshd
$ sudo systemctl enable sshd

Ahora es el momento de continuar con la instalación de LEMP . Debido a que este tutorial está destinado a ser una guía completa, dividiré la instalación de la pila de LEMP en pequeñas partes, paso a paso.

8. Primero instale Nginx Web Server , luego inícielo y verifique su estado emitiendo los siguientes comandos.

$ sudo pacman -S nginx
$ sudo systemctl start nginx
$ sudo systemctl status nginx

9. El siguiente servicio que se instalará es la base de datos MySQL . Ejecute el siguiente comando para instalar el servidor de base de datos MySQL y elija el motor MariaDB , luego inicie y verifique el estado del demonio.

$ sudo pacman -S mysql
$ sudo systemctl start mysqld
$ sudo systemctl status mysqld

10. El siguiente paso es proporcionar un entorno altamente seguro para las bases de datos MySQL proporcionando una contraseña para la cuenta raíz de MySQL, eliminar la cuenta de usuario anónimo, eliminar la base de datos de prueba y las cuentas raíz que son accesibles desde fuera del localhost. Ejecute el siguiente comando para mejorar la seguridad de MySQL, presione [ Enter ] para la contraseña actual de la cuenta raíz, luego responda a todas las preguntas (también configure la contraseña de su cuenta raíz).

$ sudo mysql_secure_installation

Nota: De ninguna manera, no confunda la cuenta raíz de MySQL con la cuenta raíz del sistema Linux; son dos cosas diferentes, no tan diferentes pero se ejecutan en diferentes niveles.

Para verificar el inicio de sesión de seguridad de MySQL en la base de datos usando la sintaxis del comando mysql -u root -p , proporcione su contraseña de root y luego salga de la base de datos con el comando exit; .

# mysql -u root -p

11. Ahora es el momento de instalar PHP lenguaje de secuencias de comandos del lado del servidor para poder desarrollar y ejecutar aplicaciones web dinámicas complejas, no solo servir código HTML/CSS .

Debido a que usamos Nginx como servidor web, necesitamos instalar un módulo respaldado por PHP-FPM para comunicarnos a través de Fast Common Gateway y cambiar el contenido dinámico generado. por scripts PHP.

Ejecute la siguiente línea de comando para instalar el servicio PHP-FPM , luego inicie el demonio y verifique el estado.

$ sudo pacman –S php php-fpm
$ sudo systemctl start php-fpm
$ sudo systemctl status php-fpm

Para enumerar todos los módulos PHP disponibles, ejecute los siguientes comandos.

$ sudo pacman –S php[TAB]
$ sudo pacman –Ss | grep php

12. Uno de los últimos pasos es instalar la Interfaz Web PhpMyAdmin para la base de datos MySQL. Emita el siguiente comando para instalar PhpMyAdmin junto con su módulo PHP necesario y luego cree un enlace simbólico para la ruta del sistema PhpMyaAdmin a la ruta raíz predeterminada de Nginx.

$ pacman -S phpmyadmin php-mcrypt
$ sudo ln -s /usr/share/webapps/phpMyAdmin   /usr/share/nginx/html

13. Luego configure el archivo php.ini para incluir las extensiones necesarias que necesita la aplicación PhpMyAdmin.

$ sudo nano /etc/php/php.ini

Localice con las teclas [ CTRL + W ] y descomente (elimine ; al principio de la línea) las siguientes líneas.

extension=mysqli.so
extension=mysql.so
extension=mcrypt.so
mysqli.allow_local_infile = On

En el mismo archivo, ubique y edite la directiva open_basedir para que se parezca a los siguientes directorios incluidos.

open_basedir= /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/

14. El siguiente paso es habilitar PHP-FPM FastCGI en la directiva localhost Nginx. Emita el siguiente comando para hacer una copia de seguridad de la configuración del archivo del servidor web nginx.conf y luego reemplácelo con el siguiente contenido.

$ sudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
$ sudo nano /etc/nginx/nginx.conf

Agregue todo el contenido siguiente en nginx.conf.

#user html;
worker_processes  2;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    gzip  on;

    server {
        listen       80;
        server_name  localhost;
            root   /usr/share/nginx/html;
        charset koi8-r;
        location / {
        index  index.php index.html index.htm;
                                autoindex on;
                                autoindex_exact_size off;
                                autoindex_localtime on;
        }

                                location /phpmyadmin {
        rewrite ^/* /phpMyAdmin last;
    }

 error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }

    location ~ \.php$ {
        #fastcgi_pass 127.0.0.1:9000; (depending on your php-fpm socket configuration)
        fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
    }

        location ~ /\.ht {
            deny  all;
        }
    }         
}

15. Una vez realizadas todas las configuraciones de archivo, todo lo que necesita hacer es reiniciar los servicios Nginx y PHP-FPM y apuntar su navegador a http:// localhost/phpmyadmin URL del nodo local o http:// arch_IP/phpmyadmin de otra computadora.

$ sudo systemctl restart php-fpm
$ sudo systemctl restart nginx

16. Si todo funciona según lo previsto, el paso final es habilitar LEMP en todo el sistema con los siguientes comandos.

$ sudo systemctl enable php-fpm
$ sudo systemctl enable nginx
$ sudo systemctl enable mysqld

¡Felicitaciones! Ha instalado y configurado LEMP en Arch Linux y, ahora, tiene una interfaz dinámica completa para comenzar y desarrollar aplicaciones web.

Aunque Arch Linux no es el sistema más adecuado para ejecutarse en servidores de producción debido a su modelo de lanzamiento continuo orientado a la comunidad, puede ser una fuente muy rápida y confiable para pequeños entornos de producción no críticos.