Esta es una guía rápida de como instalar PHP 7.4-fpm y Nginx en sistema operativo Ubuntu 20.04 LTS, en este caso de uso tengo la base de datos en otro servidor para un mejor rendimiento de la aplicación. Para poder realizar la configuración debe de tener acceso como non-root y habilitado sudo.
Ingresamos al servidor por ssh de la siguiente forma.
ssh user@10.10.10.10
Al ingresar al servidor ejecutar lo siguiente para instalar Nginx:
sudo apt update sudo apt install nginx
Escriba la dirección que reciba en su navegador web. Esta lo llevará a la página de destino predeterminada de Nginx:
http://server_domain_or_IP
Si ve esta página, significa que instaló Nginx y que habilitó el tráfico de HTTP para su servidor web de manera correcta, ahora continuaremos con la instalación de PHP y es importante comentar que Apache a diferencia de Nginx integra el intérprete PHP en cada solicitud, Nginx requiere un programa externo para gestionar el procesamiento de PHP y actuar como puente entre el intérprete PHP en sí y el servidor web. Esto permite un mejor rendimiento general en la mayoría de los sitios web basados en PHP, pero requiere configuración adicional. Deberá instalar php-fpm, que significa “PHP fastCGI process manager”, e indicar a Nginx que pase solicitudes PHP a este software para su procesamiento.
Para instalar los paquetes basicos de php-fpm ejecuta lo siguiente:
sudo apt install php-fpm php-mysql
Ahora hemos instalado PHP y ahora es necesario configura Nginx para utilizar el procesador PHP. Al emplear el servidor web Nginx, podemos crear bloques de servidor (similares a los hosts virtuales de Apache) para encapsular los detalles de configuración y alojar más de un dominio en un único servidor.
En Ubuntu 20.04, Nginx tiene un bloque de servidor habilitado por defecto y está configurado para suministrar documentos desde un directorio en /var/www/html. Si bien esto da buenos resultados para un solo sitio, puede ser difícil de manejar si aloja varios. En lugar de modificar /var/www/html, crearemos una estructura de directorio dentro de /var/www para el sitio web your_domain y dejaremos /var/www/html establecido como directorio predeterminado que se suministrará si una solicitud de cliente no coincide con ningún otro sitio.
Cree el directorio web root para your_domain de la siguiente manera:
sudo mkdir /var/www/your_domain
A continuación, asigne la propiedad del directorio con la variable de entorno $USER, que hará referencia a su usuario de sistema actual:
sudo chown -R $USER:$USER /var/www/your_domain
Luego, abra un nuevo archivo de configuración en el directorio sites-available
de Nginx con el editor de línea de comandos que prefiera. En mi caso yo prefiero nano
:
sudo nano /etc/nginx/sites-available/your_domain
De esta manera, se creará un nuevo archivo en blanco. Pegue la siguiente configuración básica:
server { listen 80; server_name your_domain www.your_domain; root /var/www/your_domain; index index.html index.htm index.php; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; } location ~ /\.ht { deny all; } }
Esto es lo que hacen estas directivas y estos bloques de ubicación:
listen
: define en qué puerto Nginx escuchará. En este caso, escuchará en el puerto80
, el puerto predeterminado para HTTP.root
: define el root de documentos en el que se almacenan los archivos disponibles en este sitio web.index
: especifica en qué orden dará prioridad Nginx a los archivos de índice de este sitio web. Normalmente se prioriza los archivosindex.html
por sobre losindex.php
para permitir establecer de manera rápida una página inicial de mantenimiento en las aplicaciones de PHP. Puede modificar estas opciones de configuración para que se adapten mejor a las necesidades de su aplicación.server_name
: define con qué nombres de dominio y/o direcciones de IP debe responder este bloque de servidor. Introduzca esta directiva en el nombre de dominio o la dirección IP pública de su servidor.location /
: el primer bloque de ubicación incluye una directivatry_files
, la cual comprueba la existencia de archivos o directorios que coincidan con una solicitud de URI. Si Nginx no puede encontrar el recurso apropiado, mostrará un error 404.location ~ \.php$
: este bloque de ubicación administra el procesamiento de PHP real al orientar a Nginx hacia el archivo de configuraciónfastcgi-php.conf
y al archivophp7.4-fpm.sock
, que declara el socket que se asocia conphp-fpm
.location ~ /\.ht
: el último bloque de ubicación maneja archivos.htaccess
, que Nginx no procesa. Al agregar la directivadeny all
, si algunos de los archivos.htaccess
ingresan de alguna forma en el root de documentos, estos no se suministrarán a los visitantes.
Cuando finalice la edición, guarde y cierre el archivo. Si utiliza nano
, puede hacerlo escribiendo CTRL+X
, luego y
,y ENTER
para confirmar.
Establezca un vínculo con archivo de configuración del directorio sites-enabled
de Nginx para activar su configuración:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
Esto le indicará a Nginx que utilice la configuración la próxima vez que se vuelva a cargar. Puede verificar si hay errores en la sintaxis de su configuración al escribir:
sudo nginx -t
Si se detecta algún error, vuelva al archivo de configuración para revisar el contenido antes de continuar.
Cuando esté listo, vuelva a cargar Nginx para aplicar los cambios:
sudo systemctl reload nginx
Listo, ahora su sitio web esta disponible en el directorio /var/www/your_domain.
Comments