GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo instalar LEMP Stack en Debian 10 Buster Server/Desktop

Este tutorial le mostrará cómo instalar Nginx, MariaDB y PHP7.3 (pila LEMP) en Debian 10 Buster. Una pila de software es un conjunto de herramientas de software agrupadas. LEMP significa L entrada, Nginx , M ariaDB/M ySQL y P HP, todos los cuales son de código abierto y de uso gratuito. Es una pila de software muy común que impulsa sitios web dinámicos y aplicaciones web. Linux es el sistema operativo; Nginx es el servidor web; MariaDB/MySQL es el servidor de la base de datos y PHP es el lenguaje de secuencias de comandos del lado del servidor responsable de generar páginas web dinámicas.

Los cuatro componentes son gratuitos y de código abierto. Sin embargo, dado que MySQL ahora es propiedad de Oracle y existe la posibilidad de que Oracle lo convierta en un producto de código cerrado, elegiremos MariaDB en lugar de MySQL.

Requisitos previos para instalar LEMP Stack en Debian 10 Buster

Para seguir este tutorial, necesita un sistema operativo Debian 10 ejecutándose en su computadora local o en un servidor remoto.

Si está buscando un VPS (servidor privado virtual), puede registrar una cuenta en Vultr a través de este enlace especial para obtener $ 50 de crédito gratis (solo para nuevos usuarios). Y si necesita configurar la pila LEMP con un nombre de dominio, recomiendo comprar nombres de dominio de NameCheap porque el precio es bajo y brindan protección de privacidad whois gratis de por vida.

Tenga en cuenta que debe tener privilegios de root al instalar el software en Debian. Puedes agregar sudo al comienzo de un comando, o use su - Comando para cambiar a usuario root.

Paso 1:Actualizar paquetes de software

Antes de instalar la pila LEMP, es una buena idea actualizar el repositorio y los paquetes de software. Ejecute el siguiente comando en su sistema operativo Debian 10.

sudo apt update

sudo apt upgrade

Paso 2:Instale el servidor web Nginx en Debian 10

Nginx es un servidor web de alto rendimiento y muy popular en estos días. También se puede utilizar como proxy inverso y servidor de almacenamiento en caché. Ingrese el siguiente comando para instalar el servidor web Nginx.

sudo apt install nginx

Después de instalarlo, Nginx debería iniciarse automáticamente. Comprueba su estado con systemctl .

systemctl status nginx

Salida de muestra:

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
   Active: active (running) since Sat 2019-08-10 06:20:26 UTC; 54s ago
     Docs: man:nginx(8)
 Main PID: 19713 (nginx)
    Tasks: 2 (limit: 1149)
   Memory: 4.6M
   CGroup: /system.slice/nginx.service
           ├─19713 nginx: master process /usr/sbin/nginx -g daemon on; master_pr
           └─19714 nginx: worker process

Sugerencia:si el comando anterior no se cierra de inmediato, puede presionar la tecla Q para recuperar el control de la ventana del terminal.

Si no se está ejecutando, use systemctl para iniciarlo.

sudo systemctl start nginx

También es una buena idea habilitar Nginx para que se inicie automáticamente en el momento del arranque.

sudo systemctl enable nginx

Comprobar la versión de Nginx:

sudo nginx -v

Salida:

nginx version: nginx/1.14.2

Ahora escriba la dirección IP pública de su servidor Debian 10 en la barra de direcciones del navegador. Debería ver la página web predeterminada "Bienvenido a nginx", lo que significa que el servidor web Nginx se está ejecutando correctamente. Si está instalando LEMP en su computadora Debian 10 local, debe escribir 127.0.0.1localhost en la barra de direcciones del navegador.

Si la conexión se rechaza o no se completa, es posible que haya un firewall que impida las solicitudes entrantes al puerto TCP 80. Si está utilizando el firewall de iptables, debe ejecutar el siguiente comando para abrir el puerto TCP 80.

sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT

Si está utilizando el firewall UFW, ejecute este comando para abrir el puerto TCP 80.

sudo ufw allow http

Ahora tenemos que configurar www-data (usuario de Nginx) como propietario de la raíz del documento (también conocida como raíz web). Por defecto es propiedad del usuario root. (Tenga en cuenta que Nginx usa de forma predeterminada /usr/share/nginx/html/ como raíz web, mientras que el servidor web Apache usa /var/www/html/ mientras rooteamos.)

sudo chown www-data:www-data /usr/share/nginx/html/ -R

Paso 3:Instale el servidor de base de datos MariaDB en Debian 10

MariaDB es un reemplazo directo para MySQL. Ingrese el siguiente comando para instalarlo en Debian 10.

sudo apt install mariadb-server mariadb-client

Una vez instalado, el servidor MariaDB debería iniciarse automáticamente. Usa systemctl para comprobar su estado.

systemctl status mariadb

Salida:

● mariadb.service - MariaDB 10.3.15 database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: 
   Active: active (running) since Sat 2019-08-10 06:38:58 UTC; 13s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 20669 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 31 (limit: 1149)
   Memory: 77.7M
   CGroup: /system.slice/mariadb.service
           └─20669 /usr/sbin/mysqld

Si no se está ejecutando, inícielo con este comando:

sudo systemctl start mariadb

Para permitir que MariaDB se inicie automáticamente en el momento del arranque, ejecute

sudo systemctl enable mariadb

Ahora ejecute el script de seguridad posterior a la instalación.

sudo mysql_secure_installation

Cuando le pida que ingrese la contraseña raíz de MariaDB, presione la tecla Intro ya que la contraseña raíz aún no está configurada. Luego ingrese y para establecer la contraseña raíz para el servidor MariaDB.

A continuación, puede simplemente presionar Entrar para responder a todas las preguntas restantes. Esto eliminará al usuario anónimo, deshabilitará el inicio de sesión raíz remoto y eliminará la base de datos de prueba. Este paso es un requisito básico para la seguridad de la base de datos MariaDB. (Tenga en cuenta que la letra Y está en mayúscula, lo que significa que es la respuesta predeterminada).

De forma predeterminada, el paquete MaraiDB en Debian usa unix_socket para autenticar el inicio de sesión del usuario, lo que básicamente significa que puede usar el nombre de usuario y la contraseña del sistema operativo para iniciar sesión en la consola de MariaDB. Entonces puede ejecutar el siguiente comando para iniciar sesión sin proporcionar la contraseña de root de MariaDB.

sudo mariadb -u root

o

sudo mysql -u root

Para salir, ejecuta

exit;

Verifique la información de la versión del servidor MariaDB.

mariadb --version

Salida:

mariadb Ver 15.1 Distrib 10.3.15-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Paso 4:Instale PHP7.3 en Debian 10

Al momento de escribir este artículo, PHP7.3 es la última versión estable de PHP y tiene una mejora menor en el rendimiento con respecto a las versiones anteriores. Ingrese el siguiente comando para instalar PHP7.3 y algunas extensiones comunes de PHP desde el repositorio de Debian 10.

sudo apt install php7.3 php7.3-fpm php7.3-mysql php-common php7.3-cli php7.3-common php7.3-json php7.3-opcache php7.3-readline

Verifique la información de la versión de PHP.

php --version

Salida:

PHP 7.3.4-2 (cli) (built: Apr 13 2019 19:05:48) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.4-2, Copyright (c) 1999-2018, by Zend Technologies

Ahora inicie php7.3-fpm.

sudo systemctl start php7.3-fpm

Habilite el inicio automático en el momento del arranque.

sudo systemctl enable php7.3-fpm

Comprobar estado:

systemctl status php7.3-fpm

Paso 5:Crear un bloque de servidor Nginx

Un bloque de servidor Nginx es como un host virtual en Apache. No usaremos el bloque de servidor predeterminado porque es inadecuado para ejecutar código PHP y si lo modificamos, se convierte en un desastre. Así que elimine el default enlace simbólico en sites-enabled directorio ejecutando el siguiente comando. (Todavía está disponible como /etc/nginx/sites-available/default .)

sudo rm /etc/nginx/sites-enabled/default

A continuación, cree un nuevo archivo de bloqueo del servidor en /etc/nginx/conf.d/ directorio con un editor de texto de línea de comandos, como Nano.

sudo nano /etc/nginx/conf.d/default.conf

Pegue el siguiente texto en el archivo. El siguiente fragmento hará que Nginx escuche en el puerto IPv4 80 y el puerto IPv6 80 con un nombre de servidor general.

server {
  listen 80;
  listen [::]:80;
  server_name _;
  root /usr/share/nginx/html/;
  index index.php index.html index.htm index.nginx-debian.html;

  location / {
    try_files $uri $uri/ /index.php;
  }

  location ~ \.php$ {
    fastcgi_pass unix:/run/php/php7.3-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }

 # A long browser cache lifetime can speed up repeat visits to your page
  location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
       access_log        off;
       log_not_found     off;
       expires           360d;
  }

  # disable access to hidden files
  location ~ /\.ht {
      access_log off;
      log_not_found off;
      deny all;
  }
}

Guarde y cierre el archivo. (Para guardar un archivo en el editor de texto Nano, presione Ctrl+O , luego presione Entrar para confirmar. Para salir, presiona Ctrl+X .) Luego pruebe las configuraciones de Nginx.

sudo nginx -t

Si la prueba es exitosa, vuelva a cargar Nginx.

sudo systemctl reload nginx

Paso 6:Pruebe PHP

Para probar scripts PHP con el servidor Nginx, necesitamos crear un info.php archivo en el directorio raíz web.

sudo nano /usr/share/nginx/html/info.php

Pegue el siguiente código PHP en el archivo.

<?php phpinfo(); ?>

Guarde y cierre el archivo.

Ahora, en la barra de direcciones del navegador, ingrese server-ip-address/info.php . Reemplazar sever-ip-address con tu IP real. Si sigue este tutorial en su computadora local, escriba 127.0.0.1/info.phplocalhost/info.php .

Debería ver la información de PHP de su servidor. Esto significa que los scripts PHP pueden ejecutarse correctamente con el servidor web Nginx. Puede encontrar que Zend OPcache está habilitado.

Reinicio automático de Nginx

Si por algún motivo se cancela su proceso Nginx, debe ejecutar el siguiente comando para reiniciarlo.

sudo systemctl restart nginx

En lugar de escribir manualmente este comando, podemos hacer que Nginx se reinicie automáticamente editando el nginx.service unidad de servicio systemd. Para anular la configuración predeterminada del servicio systemd, creamos un directorio separado.

sudo mkdir -p /etc/systemd/system/nginx.service.d/

Luego cree un archivo en este directorio.

sudo nano /etc/systemd/system/nginx.service.d/restart.conf

Agregue las siguientes líneas en el archivo, lo que hará que Nginx se reinicie automáticamente 5 segundos después de que se detecte una falla.

[Service]
Restart=always
RestartSec=5s

Guarde y cierre el archivo. Luego recarga systemd.

sudo systemctl daemon-reload

Para verificar si esto funcionaría, elimine Nginx con:

sudo pkill nginx

Luego verifique el estado de Nginx. Verá que Nginx se reinicia automáticamente.

systemctl status nginx

Debian
  1. Cómo instalar Spotify en Debian 10 Buster Linux Desktop

  2. Cómo configurar un servidor LEMP en Debian 10 Buster

  3. Cómo instalar el servidor MySQL en Debian 10 Buster

  4. Cómo instalar LEMP Stack Nginx, MySQL, PHP en Debian 11

  5. Cómo instalar LEMP Stack en Debian 10 Buster

Cómo instalar WordPress con LEMP Stack en Debian 11 Bullseye

Cómo instalar la pila LEMP en Debian 11

Cómo instalar un servidor mínimo Debian 10 (Buster)

Cómo instalar Nginx en Debian 7

Cómo instalar la pila Nginx, MySQL, PHP (LEMP) en un servidor en la nube Debian 8.3

Cómo instalar la pila LEMP en Rocky Linux 8