Búsqueda de sitios web

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


Debido a su modelo Rolling Release que abarca 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 sensatas.

Pero, aún así, debido a que Arch Linux viene con un CD de instalación central con un mínimo de software preinstalado, puede representar un punto de partida sólido para instalar la mayoría de los servicios de red más populares hoy en día, incluido Arch Linux. b>LEMP o LAMP, Servidor Web Apache, Nginx, PHP, bases de datos SQL, Samba, servidores FTP, BIND y otros, muchos de ellos proporcionados desde Arch Repositorios oficiales de Linux y otros de AUR.

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

Requisitos

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 del núcleo 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 usando ip link comando.

ip link

2. Para asignar configuraciones de red estáticas usaremos el paquete Netctl para administrar las conexiones de red. Después de haber identificado con éxito los nombres de sus interfaces de red, copie la plantilla del archivo ethernet-static a la ruta del sistema netctl y cambie su nombre a un esquema de nombres descriptivo ( intente utilizar la 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 la configuración de red real (Interfaz, IP/Máscara de red, Puerta de enlace, Difusión, DNS), como se muestra 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 los desarrolladores lo consideraron algo obsoleto y lo reemplazaron con iproute2).

Habilite las configuraciones de NIC de todo el sistema
netctl enable static.ens33
Instalar el paquete net-tools
pacman -S net-tools

6. Ahora puede ejecutar el comando ifconfig para verificar la configuración de sus interfaces de red y verificar si todo se muestra correctamente, luego reiniciar. b> su sistema para asegurarse de que todo esté en su lugar y configurado correctamente.

ping linux-console.net

Paso 2: Instale el software LEMP

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

7. Antes de instalar la pila LEMP, necesitamos actualizar el sistema y luego obtener control remoto del servidor Arch Linux. Como probablemente sepa, OpenSSH es el principal candidato para este trabajo, así que 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 pretende ser una guía completa, dividiré la instalación de la pila LEMP en partes pequeñas, 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. Emita 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 a las que se puede acceder desde fuera del host local. Ejecute el siguiente comando para mejorar la seguridad de MySQL, presione [Entrar] para obtener 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 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 niveles diferentes.

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 el lenguaje de secuencias de comandos del lado del servidor PHP para poder desarrollar y ejecutar aplicaciones web dinámicas complejas, no solo servir HTML/CSS código.

Debido a que estamos usando 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. mediante scripts PHP.

Emita 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 el 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

Ubique con las teclas [CTRL+W] y descomente (elimine ; al comienzo 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, busque 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 Nginx del host local. 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 siguiente contenido 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. Después de realizar todas las configuraciones de archivos, todo lo que necesita hacer es reiniciar los servicios Nginx y PHP-FPM y apuntar su navegador a http://localhost/phpmyadmin URL desde el nodo local o http://arch_IP/phpmyadmin desde 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 ejecutar 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.