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
- Asegurarse de que el servidor esté actualizado
- Instalación de PHP en Debian 11
- Instalación de Nginx en Debian 11
- Instalación de php-fpm en Debian 11
- Creación de un sitio simple y configuración de host virtual
- 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.