Instalar Laravel en Ubuntu 26.04: Nginx + PHP-FPM configuración

 

En este tutorial, Instalaremos Laravel en Ubuntu 26.04 con Nginx, PHP-FPM, Composer, configuraremos los permisos correctos de Laravel, verificación HTTP y un paso HTTPS opcional con respaldo de dominio. 

1. Instalar Nginx yPHP-FPM

Instalando Nginx, PHP 8.5-FPM, Composer, y las extensiones de PHP que Laravel necesita en Ubuntu 26.04 

sudo apt install -y nginx \
  php8.5-fpm php8.5-cli php8.5-common \
  php8.5-curl php8.5-mbstring php8.5-xml \
  php8.5-bcmath php8.5-zip php8.5-mysql \
  php8.5-intl composer php8.5-sqlite3

Activar Nginx y PHP-FPM:

sudo systemctl enable nginx
sudo systemctl enable php8.5-fpm
sudo systemctl start nginx
sudo systemctl start php8.5-fpm

2. Crear la aplicación Laravel

Crea una nueva aplicación Laravel en /var/www/laravel

sudo mkdir -p /var/www/laravel
sudo chown -R "$USER":www-data /var/www/laravel
Nos movemos al directorio que creamos anteriormente:

cd /var/www/laravel
Creamos un nuevo proyecto de Laravel:

composer create-project laravel/laravel .
Verificamos la instalación de Larevel:

php artisan --version
La salida sera algo como: Laravel Framework 13.x.x

Configuramos los permisos sin usar chmod 777:

sudo chown -R "$USER":www-data /var/www/laravel
sudo chmod -R ug+rwX storage bootstrap/cache database
sudo find storage bootstrap/cache database -type d -exec chmod g+s {} \;
3. Configurando Nginx para Laravel

Configura el servidor Nginx para que sirva Laravel desde el directorio público y pase las solicitudes PHP a PHP-FPM.

Laravel debe servirse desde el directorio público. No configure Nginx para que apunte a /var/www/laravel, ya que la raíz del proyecto contiene archivos privados como .env, archivos de configuración, almacenamiento, registros y código de la aplicación.

Cree el bloque del servidor Nginx. Para realizar pruebas HTTP por IP, configure APP_HOST con la IP de su máquina:

APP_HOST="TU_IP"
APP_DIR="/var/www/laravel"

 creamos el archivo de configuración de Nginx:

sudo tee /etc/nginx/sites-available/laravel > /dev/null <<NGINX
server {
    listen 80;
    listen [::]:80;

    server_name ${APP_HOST};
    root ${APP_DIR}/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    index index.php;
    charset utf-8;

    location / {
        try_files \$uri \$uri/ /index.php?\$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ ^/index\.php(/|$) {
        fastcgi_pass unix:/run/php/php8.5-fpm.sock;
        fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_hide_header X-Powered-By;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}
NGINX

Desactivando la configuración de Nginx predeterminado y activando la de Laravel:

sudo rm -f /etc/nginx/sites-enabled/default
sudo ln -sfn /etc/nginx/sites-available/laravel /etc/nginx/sites-enabled/laravel 

 Probar la configuración de Nginix:

sudo nginx -t

Salida del anterior comando esperada:

syntax is ok
test is successful
Reload Nginx:

sudo systemctl reload nginx
Abre la url en tu navegador:

http://TU_IP

Resultado esperado: la página de bienvenida de Laravel se carga a través de Nginx y PHP-FPM.



Fuentes:

rafftechnologies.com

digitalocean.com

Comentarios