Alojamiento para Laravel

Alojar una aplicación con Laravel en un VPS de DigitalOcean

Configuración del alojamiento en el VPS con Laravel en el Marketplace de DigitalOcean.com:

VPS en DigitalOcean.com

Setup a Droplet for Laravel 8

Configuración del alojamiento en el VPS con LEMP:

Configuración inicial del servidor con Ubuntu 20.04

# servidor VPS con LEMP
ssh root@alumno.me

adduser paco
usermod -aG sudo paco

logout

ssh paco@alumno.me

apt install mc

php -v

sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update

sudo apt install php8.2-fpm

sudo systemctl status php8.2-fpm

sudo apt-get install php8.2-mysql php8.2-mbstring php8.2-xml php8.2-bcmath

Modificar el fichero de configuración del servidor principal

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

Contenido del fichero /etc/nginx/sites-available/digitalocean

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /var/www/html;
        index index.php index.html;

        # Make site accessible from http://alumno.me
        server_name alumno.me;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }

        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /usr/share/nginx/html;
        }

        location ~ \.php$ {
                 include snippets/fastcgi-php.conf;
                 fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        # deny all;
        #}
}

Modificar server_name (con el dominio propio)

server_name alumno.me;

Configuración del certificado para usar https en el dominio alumno.me

sudo apt install certbot python3-certbot-nginx
# certbot --nginx -d host.mydomain.com
sudo certbot --nginx -d alumno.me

Acceso desde el navegador

https://alumno.me

Modificar el fichero de configuración del servidor virtual

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

Contenido del fichero /etc/nginx/sites-available/laravel

server {
        listen 80;
        listen [::]:80;
        # Set root directive with your /public Laravel directory
        root /home/usuario/todo/public;
        # Set index directive with index.php
        index index.php;
        # Set server_name directive with the hostname
        server_name laravel.alumno.me;
        location / {
                    try_files $uri $uri/ /index.php?$query_string;
        }
        # pass PHP scripts to FastCGI server
        location ~ \.php$ {
                    include snippets/fastcgi-php.conf;
                    fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        }
        location ~ /\.ht {
                    deny all;
        }
}

Modificar la directiva root (con la ruta propia):

root /home/usuario/todo/public;

server_name (con el dominio propio)

server_name laravel.alumno.me;

y la configuración de php (con la versión usada de php)

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

Enlazar el fichero todo en sites-available a la carpeta sites-enabled para habilitar el servidor virtual

ln -s /etc/nginx/sites-available/laravel /etc/nginx/sites-enabled/

Reiniciar el servidor web Nginx

sudo nginx -t
sudo systemctl restart nginx
sudo systemctl status nginx

Añadir un registro tipo A en el DNS

laravel -> droplet

Dar  permiso de acceso  a la carpeta personal a todos los usuario (para que pueda acceder el usuario propietario del servidor web)

sudo chmod 755 /home/usuario

Comprobación del funcionamiento del servidor virtual laravel.alumno.me

cd ~
mkdir -p todo/public
nano todo/public/index.php

contenido del fichero index.php en la carpeta home/usuario/todo/public

Servidor virtual para Todo

<?php
echo "<br>";
echo "PHP funciona bien";

Acceso desde el navegador al servidor virtual:

http://laravel.alumno.me

Configuración del cortafuegos

ufw allow 'Nginx HTTP'

ufw allow 'OpenSSH'

ufw enable

ufw status

Configuración del certificado para usar https en el subdominio laravel.alumno.me

# sudo apt install certbot python3-certbot-nginx
# certbot --nginx -d host.mydomain.com
sudo certbot --nginx -d laravel.alumno.me

Acceso desde el navegador

https://laravel.alumno.me

Deja una respuesta