VPS - Deploy Laravel 11 application on Ubuntu 24

  • před 10 měsíci
  • 6 min čtení
  • 1060 počet slov

Vytvoření VPS serveru pro Laravel aplikaci 

V následovném "tutoriálu" Vás provedu isntalací a nastavení VPS pro hostování Laravel aplikace.


Instalace následovných věcí

  • NGINX: Jde o webový server, který bude sloužit k poskytování obsahu. Je rychlý a efektivní pro distribuci webových stránek a aplikací.

  • PHP: Je potřebný pro provoz PHP aplikací, jako je Laravel.

  • Composer: Je manažerem závislostí pro PHP aplikace, umožňuje snadnou instalaci potřebných knihoven a balíčků pro Laravel.

  • Git: Verzovací systém pro správu zdrojových kódů aplikace. Umožňuje sledovat změny, spolupracovat a udržovat kódovou základnu.

  • MySQL: Databázový systém, který bude uchovávat data aplikace.

 

Potřebné věci

  • Linuxu (Ubuntu 24.04 LTS) - zkontrolování verze

 

lsb_release -a
  • sudo oprávnění 
  • VPS připojení (putty, powershell například)

 

Instalace Nginx

apt update
apt upgrade -y
apt install nginx -y
nginx -v

Instalace PHP

sudo apt-get install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
apt install php8.3-{fpm,mbstring,gettext,zip,curl,mysql,gd,cgi,soap,sqlite3,xml,intl} -y

 

pro zkontrolování, zda se vše povedlo správně, lze využít command 

 php -v

 

Instalace Composeru a Gitu

sudo apt-get install git composer -y

Instalace database (Docker nebo MySQL)

Instalace Dockeru

Set up Docker's apt repository.

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

 

Install the Docker packages.

 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

 

Verify Docker

docker -v

 

Instalace docker-compose up

curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

 

Oveření docker-compose

docker-compose -v

 

Instalace MySQL

apt update && apt upgrade -y
apt install mysql-server -y

pro zkontrolování, zda se vše povedlo správně, lze využít command

systemctl status mysql.service

Vytvoření přístupu do databáze pro nového uživatele

sudo mysql -u root

 

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit;

 

Instalace a nastavení Laravel projektu

cd /var/www/html
rm -rf * .*

 

Git via HTTP

git clone https://gitlab.com/ludwig-tomas.git .

 

Git via SSH

- More about setup VPS with Gitlab - link here 

git clone git@gitlab.com:bubak1/portfolio/ludwig-tomas.git

 

composer install
chown -R www-data:www-data /var/www/html
cp .env.example .env
nano .env
APP_NAME=ludwig_tomas
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=

LOG_CHANNEL=daily
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=ludwig_database
DB_USERNAME=username
DB_PASSWORD=password

MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"

 

    • CTRL+X, CTRL+Y for save file
php artisan key:generate
php artisan storage:link

 

Konfigurace Nginxu pro Laravel

 nano /etc/nginx/sites-enabled/default 

hold CTRL + K for deleting lines

 

server {
    listen 80;
    server_name ludwigtomas.cz;
    root /var/www/html/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 ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

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

 

Kontrola

nginx -t
systemctl status nginx
systemctl status php8.3-fpm
systemctl status mysql.service
curl localhost

 

Příkazy navíc

Nginx

nginx -t

nginx -v

nano /etc/nginx/sites-enabled/default

sudo systemctl stop nginx

sudo systemctl start nginx

sudo systemctl reload nginx

sudo systemctl disable nginx

sudo systemctl enable nginx

sudo systemctl status nginx

PHP

php -v

php -m

systemctl status php8.3-fpm

PHP extensions

sudo apt install php8.3-{mysql, ctype,} 

  • mysql — potřebné při práci s databází, často společně s hlavním balíčkem jazyka;
  • ctype — je potřebné v případech, kdy dojde k chybě typu Fatal error během provozu: Volání nedefinované funkce ctype_digit() v /wp-admin/includes/file.php;
  • dom — občas je potřeba při práci s Windows hostingem, ale nejčastěji není vyžadován;
  • exif — nutný pro práci s meta daty fotografií;
  • gd — používá se při zpracování obrázků, často potřebný;
  • iconv — konverze řetězce z jedné kódování do druhého;
  • json — podpora pro JSON;
  • posix — používá se ve třídě WP_Filesystem_Direct;
  • mbstring — nezbytný, potřebný pro zpracování řetězců;
  • zip + zlib — užitečné pro ty, kteří pracují s archivy.

 

Pokud máte jakékoliv dotazy nebo připomínky, neváhejte mi napsat!

Pojďme se sejít !

📱 +420 730 681 670

✉ info@ludwigtomas.cz

🖥️ Web - Kontakty

Další informace

před 10 měsíci přidáno

189 počet návštěv

1060 počet slov

6 minut čtení

Další nabízené blogy

Laravel - Automatizace procesů s CRONem a CRONTABem

před 8 měsíci

156

937

Laravel - Automatizace procesů s CRONem a CRONTABem

VPS - Deploy Laravel 11 application on Ubuntu 24

před 10 měsíci

189

1060

VPS - Deploy Laravel 11 application on Ubuntu 24

Laravel Pulse | V produkci Pomocí Supervisora

před 4 měsíci

175

617

Laravel Pulse | V produkci Pomocí Supervisora

Laravel Horizon | V produkci Pomocí Supervisora

před 4 měsíci

173

614

Laravel Horizon | V produkci Pomocí Supervisora