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,}
Pokud máte jakékoliv dotazy nebo připomínky, neváhejte mi napsat!