Paso 1 — Instalar módulos requeridos

Antes de instalar Laravel, necesitamos una serie de módulos de PHP para el uso de éste.

sudo apt update

sudo apt install php-mbstring php-xml php-bcmath

 

Paso 2 — Creamos la BD para la aplicación

Necesitamos un usuario para acceder exclusivamente a nuestra tabla de nuestra BD, para ello accederemos al Mysql desde terminal y haremos lo siguiente.

Ten en cuenta en cambiar usuarios, passwords y nombres de BD para los tuyos propios

sudo mysql

CREATE DATABASE travel_list;

GRANT ALL ON travel_list.* TO 'travel_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

exit

Probamos si funciona:

mysql -u travel_user -p

SHOW DATABASES;

Output

+--------------------+

| Database           |

+--------------------+

| information_schema |

| travel_list        |

+--------------------+

2 rows in set (0.01 sec)

 

Paso 3 — Crear la aplicación en Laravel

Paso sencillo, lo único que tenemos que hacer es empezar (O copiar uno existente) nuestro proyecto en laravel:

cd /var/www

composer create-project --prefer-dist laravel/laravel travel_list

Una vez instalado, modificamos el .env con los datos de la aplicación y los datos de la BD creada anteriormente:

APP_NAME=TravelList

APP_ENV=development

APP_KEY=APPLICATION_UNIQUE_KEY_DONT_COPY

APP_DEBUG=true

APP_URL=http://domain_or_IP




LOG_CHANNEL=stack




DB_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=travel_list

DB_USERNAME=travel_user

DB_PASSWORD=password

 

Paso 5 — Configuración NGINX

Uno de los pasos más importantes es configurar bien nuestro nginx, primero de todo vamos a poner los permisos adecuados a las carpetas storage y cache de nuestra aplicación:

sudo chown -R www-data.www-data /var/www/travel_list/storage

sudo chown -R www-data.www-data /var/www/travel_list/bootstrap/cache

Ahora vamos a configurar nuestro sitio en nginx, para ello creamos un nuevo archivo de configuración, normalmente ponemos el nombre del proyecto o dominio:

sudo nano /etc/nginx/sites-available/travel_list

Y pegamos la siguiente configuración que es la recomendada de Laravel, teniendo en cuenta de cambiar los paths para los nuestros:

server {

    listen 80;

    server_name server_domain_or_IP;

    root /var/www/travel_list/public;




    add_header X-Frame-Options "SAMEORIGIN";

    add_header X-XSS-Protection "1; mode=block";

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




    index index.html index.htm 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 ~ \.php$ {

        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;

        fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;

        include fastcgi_params;

    }




    location ~ /\.(?!well-known).* {

        deny all;

    }
}

 

Os dejo un post para configurar las diferentes versiones de PHP

https://stackoverflow.com/a/35638087/4386795

 

Una vez configurado nuestro sitio, vamos a publicar la configuración del Nginx, simplemente con el siguiente comando:

sudo ln -s /etc/nginx/sites-available/travel_list /etc/nginx/sites-enabled/

Una vez todo configurado, reiniciamos el NGINX y LISTO!

sudo systemctl reload nginx    / service nginx restart

 

Fuente principal: DigitalOcean