GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo instalar y configurar PHP y Nginx (LEMP) en Debian 11

PHP es un lenguaje de secuencias de comandos de propósito general orientado al desarrollo web. Es uno de los lenguajes de programación populares para la web. Las herramientas populares como WordPress están codificadas usando php. Las grandes empresas como Facebook también usan mucho php.

Nginx es un servidor web que también se puede utilizar como proxy inverso, equilibrador de carga, proxy de correo y caché HTTP. Comenzó como un servidor web diseñado para el máximo rendimiento y estabilidad. Nginx ha crecido en popularidad desde su lanzamiento debido a su uso ligero de recursos y su capacidad de escalar fácilmente en un hardware mínimo. Nginx sobresale en la entrega rápida de contenido estático y está diseñado para pasar solicitudes dinámicas a otro software que se adapta mejor a esos fines.

Contenido relacionado

  • Cómo instalar la pila Apache PHP 7.4 (LAMP) en Rocky Linux/Centos 8

Tabla de contenido

  1. Asegurarse de que el servidor esté actualizado
  2. Instalación de PHP en Debian 11
  3. Instalación de Nginx en Debian 11
  4. Instalación de php-fpm en Debian 11
  5. Creación de un sitio simple y configuración de host virtual
  6. Probar la configuración

1. Asegurarse de que el servidor esté actualizado

Antes de continuar, siempre es una buena práctica asegurarse de que el servidor esté actualizado. Usa estos comandos para lograr esto

sudo apt update
sudo apt upgrade -y

2. Instalación de PHP en Debian 11

PHP está disponible en los repositorios predeterminados de Debian 11. La última versión de PHP al momento de escribir este blog es PHP 7.4.

Instale PHP y algunos paquetes comunes usando este comando:

sudo apt install -y \
    php \
    php-common \
    php-cli

Compruebe la versión instalada de PHP

$ apt-cache policy php
php:
  Installed: 2:7.4+76
  Candidate: 2:7.4+76
  Version table:
 *** 2:7.4+76 500
        500 http://cdn-aws.deb.debian.org/debian bullseye/main amd64 Packages
        100 /var/lib/dpkg/status

Verifique la versión de php instalada usando este comando:

$ php -v
PHP 7.4.25 (cli) (built: Oct 23 2021 21:53:50) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.25, Copyright (c), by Zend Technologies

3. Instalación de Nginx en Debian 11

Usaremos Nginx para servir el contenido de PHP. Nginx, como servidor web estable de alto rendimiento y con un consumo de recursos muy bajo, es la pareja perfecta para PHP-FPM. Nginx tiene una arquitectura asíncrona que es mucho más escalable, basada en eventos.

Nginx está disponible en los repositorios predeterminados de Debian 11. Instálalo usando este comando:

sudo apt install -y nginx

Confirme el nginx instalado

$ apt-cache policy nginx
nginx:
  Installed: 1.18.0-6.1
  Candidate: 1.18.0-6.1
  Version table:
 *** 1.18.0-6.1 500
        500 http://cdn-aws.deb.debian.org/debian bullseye/main amd64 Packages
        100 /var/lib/dpkg/status

4. Instalación de PHP FPM en Debian 11

PHP-FPM (un acrónimo de FastCGI Process Manager) es una alternativa de implementación FastCGI de PHP (procesador de hipertexto) muy popular. PHP-FPM es la implementación alternativa más popular de PHP FastCGI. Tiene características adicionales que son realmente útiles para sitios web de alto tráfico. Al usar Nginx con PHP-FPM se mejora el rendimiento a nivel de consumo de memoria.

PHP se ejecuta como un servicio separado cuando se usa PHP-FPM. Al usar esta versión de PHP como intérprete de lenguaje, las solicitudes se procesan a través de un socket TCP/IP; para que el servidor web Nginx solo maneje las solicitudes HTTP y PHP-FPM interprete el código PHP. El hecho de tener dos servicios separados es clave para aumentar la eficiencia.

Instale php-fpm usando este comando:

sudo apt install -y php-fpm

El servicio se iniciará de forma predeterminada. Verifique su estado usando este comando:

$ sudo systemctl status php7.4-fpm
● php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager
     Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-12-11 12:39:08 UTC; 58s ago
       Docs: man:php-fpm7.4(8)
    Process: 1597314 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/7.4/fpm/pool.d/www.conf 74 (code=exited, status=0/SUCCESS)
   Main PID: 1597311 (php-fpm7.4)
     Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
      Tasks: 3 (limit: 4626)
     Memory: 9.2M
        CPU: 48ms
     CGroup: /system.slice/php7.4-fpm.service
             ├─1597311 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf)
             ├─1597312 php-fpm: pool www
             └─1597313 php-fpm: pool www

Dec 11 12:39:08 ip-10-2-40-122 systemd[1]: Starting The PHP 7.4 FastCGI Process Manager...
Dec 11 12:39:08 ip-10-2-40-122 systemd[1]: Started The PHP 7.4 FastCGI Process Manager.

5. Creando un sitio simple y configurando host virtual

Nginx le permite atender múltiples sitios utilizando hosts virtuales. El concepto de hosts virtuales permite más de un sitio web en un sistema o servidor web. Los servidores se diferencian por su nombre de host. Los visitantes del sitio web se enrutan por nombre de host o dirección IP al host virtual correcto. El alojamiento virtual permite que las empresas que comparten un servidor tengan sus propios nombres de dominio.

En este ejemplo, usaremos el dominio site1.citizix.com para el host virtual, pero podrá usar el dominio que prefiera. Tenga en cuenta que el DNS del dominio que se utilizará ya debe estar configurado para apuntar a la dirección IP del servidor. Confirme eso con:

dig -t A site1.citizix.com

Crear un directorio y agregar contenido de muestra

La página predeterminada de nginx está configurada como un host virtual predeterminado que sirve contenido desde /var/www/html. Es una práctica recomendada crear el directorio de su sitio en el directorio /var/www, ya que es una práctica recomendada servir desde allí.

Vamos a crear un directorio para nuestro sitio con el siguiente comando:

sudo mkdir /var/www/site1.citizix.com

Vamos a crear un index.php simple página para servir desde nuestro sitio. Necesitará vim instalado para que esto funcione, si no, use este comando:

sudo apt install -y vim

Edite el archivo:

sudo vim /var/www/site1.citizix.com/index.php

Agregar contenido al archivo:

<?php phpinfo(); ?>

Creación de host virtual (bloques de servidor)

Se pueden usar bloques de servidor Nginx para encapsular detalles de configuración y alojar más de un dominio en un solo servidor. Vamos a crear un host virtual para nuestro sitio (site1.citizix.com).

Las configuraciones de hosts virtuales de Nginx se almacenan en el directorio /etc/nginx/conf.d/ . Vamos a crear una configuración para nuestro sitio:

sudo vim /etc/nginx/conf.d/site1.citizix.com.conf

Agrega el siguiente contenido

server {
    listen 80;
    server_tokens off;
    client_max_body_size 100M;
    server_name site1.citizix.com;

    access_log /var/log/nginx/site1.citizix.com.log;
    error_log  /var/log/nginx/site1.citizix.com.log;

    root /var/www/site1.citizix.com;
    index index.php;

    if ($host !~* ^(site1.citizix.com)$) {
        return 444;
    }

    location / {
        proxy_read_timeout 600;
        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_index index.php;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/run/php/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Reiniciemos el servicio nginx y php-fpm para que se aplique la configuración

sudo systemctl restart php7.4-fpm
sudo systemctl restart nginx

6. Probando la configuración

Para probar la configuración, abra su navegador y cargue el dominio que configuró. En mi caso es http://site1.citizix.com. Deberías ver la página de información de php.

Si aún no ha configurado su configuración de DNS o simplemente no desea que el sitio se active todavía, puede modificar el archivo de hosts de su computadora. Para hacer esto, use el siguiente comando en la CLI de su computadora local

sudo vim /etc/hosts

Luego, agregue la dirección IP de su servidor real seguido del nombre de dominio que está configurando, por ejemplo:

# Virtual Hosts Local Test
10.2.11.11 site1.citizix.com

Ahora debería poder guardar el archivo y acceder a él desde un navegador web.

Conclusión

Hosts virtuales Nginx o server Los bloques son una excelente manera de agregar sitios web adicionales al mismo servidor de origen. La cantidad de posibilidades de configuración para un sitio determinado es casi infinita cuando comienza a modificar el archivo de configuración del host virtual para adaptarlo a las necesidades específicas de su sitio.

En esta guía, aprendimos cómo configurar un host virtual para servir contenido php en Debian 11.


Debian
  1. Cómo instalar y configurar PHP y Nginx (LEMP) en Debian 11

  2. Cómo instalar y configurar PHP y Nginx (LEMP) en Ubuntu 20.04

  3. Cómo instalar y configurar PHP y Nginx (LEMP) en Rocky Linux/Alma Linux 8

  4. Cómo instalar y configurar PHP y Nginx (LEMP) en OpenSUSE Leap 15.3

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

Cómo instalar Nginx, MariaDB, PHP (pila LEMP) en Debian 9

Cómo instalar la pila LEMP en Debian 10

Cómo instalar Nginx, MariaDB, PHP (LEMP Stack) en Debian 11

Cómo instalar y configurar Jenkins en Debian 11

Cómo instalar phpBB con LEMP (Nginx, MariaDB y PHP) en Debian 11 Bullseye

Cómo instalar Nginx y PHP en Debian 10