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