Ở Bài 45, chúng ta đã đưa Laravel 13 lên Shared Hosting.
Trong bài này, chúng ta tiến thêm một bước:
Shared Hosting
↓
VPS
VPS cho phép chúng ta tự quản lý server ở mức thấp hơn:
VPS
│
├── Ubuntu
├── Nginx
├── PHP
├── PHP-FPM
├── MySQL
├── Composer
├── Git
├── SSL
└── Laravel 13
Đây là mô hình rất quan trọng nếu muốn làm Laravel ở môi trường production thực tế
1. VPS là gì?
VPS là:
Virtual Private Server
Hiểu đơn giản, VPS là một máy chủ ảo có:
CPU
RAM
SSD
hệ điều hành
IP riêng
quyền quản trị server
Ví dụ:
Internet
│
▼
Public IP
│
▼
VPS
│
├── Nginx
├── PHP 8.3
├── MySQL
└── Laravel 13
Khác với Shared Hosting:
Shared Hosting
→ Nhà cung cấp quản lý phần lớn server
còn:
VPS
→ Bạn quản lý phần lớn server
2. VPS khác Shared Hosting như thế nào?
| Shared Hosting | VPS |
|---|---|
| Dễ sử dụng | Khó hơn |
| Control Panel | SSH/Terminal |
| Ít quyền hệ thống | Nhiều quyền |
| Ít phải cấu hình | Tự cấu hình |
| Tài nguyên chia sẻ | Tài nguyên VPS riêng |
| Phù hợp website nhỏ | Phù hợp ứng dụng cần kiểm soát server |
| Không cần biết Linux quá sâu | Cần biết Linux |
| Có thể giới hạn Composer/CLI | Chủ động Composer/CLI |
Có thể hình dung:
Shared Hosting
↓
"Thuê một căn phòng"
VPS
↓
"Thuê một căn nhà và tự quản lý"
3. VPS cần những gì?
Đối với Blog CMS Laravel 13, một VPS cơ bản có thể gồm:
Ubuntu
↓
Nginx
↓
PHP 8.3+
↓
PHP-FPM
↓
Laravel 13
↓
MySQL
Ngoài ra:
Git
Composer
Node.js
npm
Certbot
cũng rất hữu ích.
Laravel 13 yêu cầu tối thiểu PHP 8.3 và một số PHP extension như Ctype, cURL, DOM, Fileinfo, Mbstring, OpenSSL, PDO, Session, Tokenizer và XML.
4. Kiến trúc VPS
Sau khi hoàn thành bài này, server sẽ có dạng:
INTERNET
│
▼
example.com
│
▼
Nginx
│
▼
public/index.php
│
▼
Laravel 13
│
┌──────────────┼──────────────┐
│ │ │
▼ ▼ ▼
MySQL Storage Cache
Nginx nhận request:
https://example.com
sau đó chuyển request PHP tới:
PHP-FPM
và Laravel xử lý request.
5. Chuẩn bị VPS
Giả sử chúng ta thuê một VPS Linux mới.
Ví dụ:
OS:
Ubuntu
RAM:
2 GB
CPU:
2 vCPU
Disk:
40 GB SSD
Public IP:
203.0.113.10
Đây chỉ là ví dụ.
Thông số thực tế tùy project.
6. SSH là gì?
SSH là phương thức kết nối từ máy tính tới server.
Ví dụ trên Windows:
ssh root@203.0.113.10
Trong đó:
ssh
↓
giao thức SSH
root
↓
username
203.0.113.10
↓
IP VPS
Sau khi đăng nhập:
local computer
│
│ SSH
▼
VPS
7. Không nên dùng root cho mọi thứ
Ban đầu nhà cung cấp VPS có thể cho:
root
Nhưng không nên sử dụng root cho mọi thao tác hàng ngày.
Tạo user riêng:
adduser deploy
Sau đó cho user quyền sudo:
usermod -aG sudo deploy
Kiểm tra:
groups deploy
Kết quả có:
sudo
User:
deploy
sẽ được dùng để quản lý application thay vì đăng nhập root liên tục.
8. Đăng nhập bằng SSH Key
Thay vì chỉ dùng password:
SSH Password
có thể sử dụng:
SSH Key
Mô hình:
Computer
│
├── private key
└── public key
│
▼
VPS
Private key:
Không được chia sẻ.
Public key:
Có thể đưa lên server.
9. Cập nhật Ubuntu
Sau khi đăng nhập:
sudo apt update
sau đó:
sudo apt upgrade -y
Mục đích:
Package list
↓
Update
↓
Security patches
↓
System packages
Không nên bỏ qua việc cập nhật server.
10. Kiểm tra phiên bản Ubuntu
lsb_release -a
hoặc:
cat /etc/os-release
Ví dụ:
Ubuntu
24.04 LTS
Tên phiên bản không quan trọng bằng việc:
Hệ điều hành phải còn được hỗ trợ và có package phù hợp với PHP 8.3+.
11. Cài Nginx
sudo apt install nginx -y
Kiểm tra:
systemctl status nginx
Nếu thấy:
active (running)
Nginx đang chạy.
Mở browser:
http://203.0.113.10
Nếu thấy trang mặc định Nginx:
Welcome to nginx!
thì Nginx đã hoạt động.
12. Nginx làm nhiệm vụ gì?
Nginx là web server.
Request:
Browser
│
▼
Nginx
│
▼
PHP-FPM
│
▼
Laravel
Ví dụ:
GET /blog
Nginx nhận request.
Sau đó request được chuyển cho Laravel xử lý.
13. Cài PHP 8.3
Laravel 13 yêu cầu:
PHP >= 8.3
Kiểm tra PHP:
php -v
Nếu server có PHP 8.3:
PHP 8.3.x
là đạt yêu cầu tối thiểu.
14. PHP-FPM là gì?
PHP-FPM:
PHP FastCGI Process Manager
Nginx không trực tiếp chạy PHP như:
Nginx → PHP source
Mà thường:
Browser
↓
Nginx
↓
PHP-FPM
↓
PHP
↓
Laravel
Ví dụ socket:
/var/run/php/php8.3-fpm.sock
Laravel 13 deployment documentation cũng sử dụng PHP-FPM trong cấu hình Nginx mẫu.
15. Cài PHP Extensions
Laravel 13 cần các extension cần thiết.
Ví dụ Ubuntu:
sudo apt install -y \
php8.3-fpm \
php8.3-mysql \
php8.3-curl \
php8.3-mbstring \
php8.3-xml \
php8.3-zip \
php8.3-bcmath \
php8.3-intl
Sau đó:
php -m
Kiểm tra các extension.
Lưu ý:
Tên package PHP có thể khác tùy phiên bản Ubuntu/repository.
Không nên copy một lệnh cài PHP từ một server Ubuntu khác mà không kiểm tra repository của server hiện tại.
16. Kiểm tra PHP-FPM
sudo systemctl status php8.3-fpm
Nếu:
active (running)
thì PHP-FPM đang hoạt động.
Khởi động cùng hệ thống:
sudo systemctl enable php8.3-fpm
17. Cài MySQL
sudo apt install mysql-server -y
Kiểm tra:
sudo systemctl status mysql
Nếu:
active (running)
MySQL đang hoạt động.
18. Tạo Database
Đăng nhập MySQL:
sudo mysql
Tạo database:
CREATE DATABASE blog
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
Tạo user:
CREATE USER 'blog_user'@'localhost'
IDENTIFIED BY 'StrongPasswordHere';
Cấp quyền:
GRANT ALL PRIVILEGES
ON blog.*
TO 'blog_user'@'localhost';
Sau đó:
FLUSH PRIVILEGES;
Thoát:
EXIT;
19. Không dùng root trong .env
Không nên:
DB_USERNAME=root
cho application production nếu không cần thiết.
Nên:
DB_DATABASE=blog
DB_USERNAME=blog_user
DB_PASSWORD=********
Mô hình:
Laravel
│
▼
blog_user
│
▼
blog database
giúp giới hạn quyền của application.
20. Cài Composer
Kiểm tra:
composer --version
Nếu chưa có Composer thì cài theo hướng dẫn chính thức của Composer.
Sau khi cài:
composer --version
Ví dụ:
Composer version 2.x
21. Cài Git
sudo apt install git -y
Kiểm tra:
git --version
Git giúp chúng ta triển khai:
GitHub
↓
VPS
↓
Laravel
thay vì phải upload ZIP thủ công mỗi lần cập nhật.
22. Tạo thư mục project
Ví dụ:
sudo mkdir -p /var/www/blog
Gán owner:
sudo chown -R deploy:deploy /var/www/blog
Bây giờ:
/var/www/blog
là nơi chứa Laravel application.
23. Đưa Laravel lên VPS bằng Git
Nếu source nằm trên GitHub:
cd /var/www
sau đó:
git clone https://github.com/username/blog.git
Kết quả:
/var/www/blog
có:
app/
bootstrap/
config/
database/
public/
resources/
routes/
24. Không commit .env
Repository:
blog/
├── app/
├── bootstrap/
├── config/
├── database/
├── public/
├── resources/
├── routes/
├── .env.example
└── composer.json
Không nên commit:
.env
Production .env phải được tạo trực tiếp trên server.
25. Tạo .env
cd /var/www/blog
Copy:
cp .env.example .env
Sau đó:
nano .env
Ví dụ:
APP_NAME="Blog CMS"
APP_ENV=production
APP_KEY=
APP_DEBUG=false
APP_URL=https://example.com
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=blog_user
DB_PASSWORD=StrongPasswordHere
26. Tạo APP_KEY
Nếu đây là project mới trên server:
php artisan key:generate
Nếu project đã có dữ liệu production và đã sử dụng một APP_KEY trước đó:
Không được tự ý tạo key mới.
Đối với project đang triển khai lần đầu:
php artisan key:generate
sẽ tạo:
APP_KEY=base64:...
27. Cài Composer Dependencies
Trong project:
cd /var/www/blog
chạy:
composer install \
--no-dev \
--optimize-autoloader
Mục đích:
composer.json
+
composer.lock
↓
vendor/
Sau đó:
vendor/
được tạo.
28. Cài Frontend Dependencies
Nếu server dùng để build frontend:
npm install
Sau đó:
npm run build
Kết quả:
public/
└── build/
Tuy nhiên production server không nhất thiết phải giữ:
node_modules/
nếu bạn đã build asset ở CI/local và chỉ deploy public/build.
29. Migration
Sau khi .env đã cấu hình:
php artisan migrate --force
Laravel sẽ tạo database schema:
users
categories
posts
personal_access_tokens
...
Đối với Blog CMS của chúng ta, đây là lúc toàn bộ migration đã học từ đầu khóa học được đưa lên VPS.
30. Seeder
Nếu cần dữ liệu ban đầu:
php artisan db:seed --force
Ví dụ:
categories
admin user
default settings
Nhưng tuyệt đối phải kiểm tra Seeder trước khi chạy production.
Không chạy Seeder có thao tác kiểu:
Model::truncate();
nếu database đã có dữ liệu thật.
31. Storage
Tạo symbolic link:
php artisan storage:link
Mô hình:
public/storage
│
▼
storage/app/public
Blog CMS có upload image nên bước này rất quan trọng.
Laravel deployment/filesystem documentation sử dụng public/storage để truy cập các file của public disk.
32. Permission
Laravel cần quyền ghi vào:
storage/
và:
bootstrap/cache/
Laravel 13 deployment documentation yêu cầu web server process có quyền ghi vào hai thư mục này.
Có thể thiết lập owner phù hợp:
sudo chown -R deploy:www-data /var/www/blog
Sau đó:
sudo chmod -R ug+rwx \
/var/www/blog/storage \
/var/www/blog/bootstrap/cache
Không nên giải quyết permission bằng:
chmod -R 777 /var/www/blog
33. Nginx Server Block
Đây là phần quan trọng nhất của bài.
Tạo:
sudo nano /etc/nginx/sites-available/blog
Ví dụ:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/blog/public;
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;
}
location ~ ^/index\.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;
}
}
Đây là cấu hình dựa trên cấu hình Nginx deployment mà Laravel cung cấp cho Laravel 13. Điểm quan trọng là root phải là /public và request được chuyển về public/index.php.
34. Vì sao root phải là /public?
Sai:
root /var/www/blog;
Đúng:
root /var/www/blog/public;
Vì Laravel có:
/var/www/blog/
│
├── .env
├── artisan
├── composer.json
├── app/
├── config/
└── public/
└── index.php
Nếu web root là:
/var/www/blog
thì server có thể expose những file không nên public.
Laravel cũng cảnh báo không phục vụ application từ project root vì có thể làm lộ các file cấu hình nhạy cảm.
35. Enable Website
Tạo symbolic link:
sudo ln -s \
/etc/nginx/sites-available/blog \
/etc/nginx/sites-enabled/blog
Nếu muốn xóa site mặc định:
sudo rm /etc/nginx/sites-enabled/default
Sau đó kiểm tra:
sudo nginx -t
Nếu:
syntax is ok
test is successful
thì reload:
sudo systemctl reload nginx
36. Trỏ Domain
Giả sử VPS có IP:
203.0.113.10
DNS:
example.com
tạo:
A
@
203.0.113.10
và:
A
www
203.0.113.10
Mô hình:
example.com
│
▼
DNS
│
▼
203.0.113.10
│
▼
Nginx
│
▼
/var/www/blog/public
37. Kiểm tra bằng IP
Trước khi cấu hình domain hoàn chỉnh, có thể kiểm tra:
http://203.0.113.10
Nếu Nginx đã nhận đúng server block và DNS/domain được cấu hình phù hợp, request sẽ đi vào Laravel.
38. SSL HTTPS
Production nên sử dụng:
https://example.com
thay vì:
http://example.com
Một lựa chọn phổ biến trên Ubuntu + Nginx là Certbot.
Sau khi cài Certbot phù hợp với hệ điều hành:
sudo certbot --nginx
Certbot có thể cấu hình certificate và HTTPS cho Nginx.
Sau đó kiểm tra:
https://example.com
39. Cấu hình .env Production
Cuối cùng:
APP_ENV=production
APP_DEBUG=false
APP_URL=https://example.com
Đặc biệt:
APP_DEBUG=false
Laravel cảnh báo không bật debug trong production vì có thể làm lộ thông tin cấu hình nhạy cảm.
40. Optimize Laravel
Sau khi application đã hoạt động:
php artisan optimize
Laravel 13 cung cấp optimize để cache các thành phần production như configuration, events, routes và views.
Có thể kiểm tra:
php artisan optimize:clear
khi cần xóa cache trong quá trình troubleshooting.
41. Kiểm tra Application
Mở:
https://example.com
Sau đó test:
/
/login
/register
/blog
/admin/users
/api/posts
và:
/up
Laravel 13 có health route /up, trả HTTP 200 nếu application boot thành công và HTTP 500 nếu application gặp exception khi boot.
42. Kiểm tra Database
Trên VPS:
php artisan migrate:status
Ví dụ:
Migration name Ran?
------------------------------------------------
create_users_table Yes
create_categories_table Yes
create_posts_table Yes
create_personal_access_tokens_table Yes
Nếu tất cả:
Yes
database schema đã được triển khai.
43. Kiểm tra Queue
Nếu Blog CMS sử dụng queue:
php artisan queue:work
có thể chạy thử.
Nhưng:
Không nên dùng terminal SSH để chạy worker production lâu dài.
Nếu SSH đóng:
queue worker
↓
process kết thúc
Do đó production cần process monitor.
Phần này sẽ được học kỹ hơn ở:
Bài 48 — Queue Worker & Scheduler
44. Kiểm tra Log
Laravel:
storage/logs/
Ví dụ:
storage/logs/laravel.log
Có thể xem:
tail -f storage/logs/laravel.log
Khi website:
500
đừng đoán.
Hãy kiểm tra:
Laravel log
Nginx log
PHP-FPM log
45. Nginx Log
Log thường nằm trong:
/var/log/nginx/
Ví dụ:
sudo tail -f /var/log/nginx/error.log
và:
sudo tail -f /var/log/nginx/access.log
Mô hình debug:
Browser
↓
Nginx
↓
PHP-FPM
↓
Laravel
↓
MySQL
Phải xác định lỗi nằm ở tầng nào.
46. PHP-FPM Log
Nếu Nginx báo:
502 Bad Gateway
kiểm tra PHP-FPM:
sudo systemctl status php8.3-fpm
Sau đó:
sudo journalctl -u php8.3-fpm
Một nguyên nhân thường gặp:
Nginx
↓
socket PHP-FPM
↓
SAI đường dẫn
Ví dụ Nginx:
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
nhưng server thực tế dùng socket khác.
Kiểm tra:
ls /var/run/php/
47. Lỗi 502 Bad Gateway
Nếu:
502 Bad Gateway
không có nghĩa Laravel chắc chắn bị lỗi.
Có thể là:
Nginx
↓
PHP-FPM
X
Kiểm tra:
systemctl status php8.3-fpm
và:
ls /var/run/php/
Sau đó đối chiếu:
fastcgi_pass ...
48. Lỗi 403 Forbidden
Kiểm tra:
Document Root
phải là:
/var/www/blog/public
không phải:
/var/www/blog
Sau đó kiểm tra:
Permission
Owner
Nginx configuration
49. Lỗi 404 Laravel
Nếu:
/
chạy được nhưng:
/blog
404:
kiểm tra:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
Đây là phần giúp request không phải file tĩnh được chuyển vào Laravel.
Ví dụ:
/blog
↓
Nginx
↓
index.php
↓
Laravel Router
↓
BlogController
50. Lỗi Permission
Ví dụ:
file_put_contents(...):
Permission denied
Kiểm tra:
ls -la storage
và:
ls -la bootstrap/cache
Sau đó đảm bảo web server có quyền ghi.
Laravel yêu cầu quyền ghi cho hai thư mục:
storage/
bootstrap/cache/
51. Cấu trúc VPS hoàn chỉnh
Sau khi triển khai:
VPS
│
├── /var/www/blog
│ │
│ ├── app/
│ ├── bootstrap/
│ ├── config/
│ ├── database/
│ ├── public/
│ │ ├── index.php
│ │ ├── build/
│ │ └── storage
│ ├── resources/
│ ├── routes/
│ ├── storage/
│ ├── vendor/
│ ├── .env
│ ├── artisan
│ └── composer.json
│
├── Nginx
│
├── PHP-FPM
│
└── MySQL
52. Quy trình Deploy Laravel 13 lên VPS
Tóm lại:
1. Tạo VPS
↓
2. SSH
↓
3. Update Ubuntu
↓
4. Tạo deploy user
↓
5. Cài Nginx
↓
6. Cài PHP 8.3+
↓
7. Cài PHP-FPM
↓
8. Cài MySQL
↓
9. Cài Composer
↓
10. Cài Git
↓
11. Clone project
↓
12. Tạo .env
↓
13. composer install
↓
14. npm run build
↓
15. migrate
↓
16. storage:link
↓
17. Permission
↓
18. Nginx
↓
19. DNS
↓
20. HTTPS
↓
21. optimize
↓
22. Test
53. Deploy bằng Git
Một trong những ưu điểm lớn của VPS là có thể triển khai bằng Git.
Ví dụ lần đầu:
cd /var/www
git clone https://github.com/username/blog.git
cd blog
composer install --no-dev --optimize-autoloader
npm install
npm run build
php artisan migrate --force
php artisan storage:link
php artisan optimize
Lần cập nhật sau:
cd /var/www/blog
git pull
composer install --no-dev --optimize-autoloader
npm install
npm run build
php artisan migrate --force
php artisan optimize
Đây đã bắt đầu giống một quy trình deployment thực tế.
54. Nhưng đừng git pull mù quáng
Production không phải nơi để:
code thử
↓
git pull
↓
hy vọng
Quy trình tốt hơn:
LOCAL
↓
Code
↓
Test
↓
Commit
↓
Push
↓
Git
↓
VPS
↓
Deploy
↓
Test
Đặc biệt khi có:
Database migration
Config change
Dependency change
phải biết chính xác deployment đang thay đổi điều gì.
55. Zero Downtime chưa phải mục tiêu của bài này
Ở bài đầu tiên về VPS, chúng ta tập trung vào:
VPS
Nginx
PHP-FPM
MySQL
Laravel
HTTPS
Chưa cần xây dựng:
Load Balancer
Multiple VPS
Blue/Green Deployment
CI/CD phức tạp
Kubernetes
Đó là những vấn đề nâng cao.
Mục tiêu của bài:
Có thể tự triển khai một Laravel 13 Blog CMS lên một VPS và hiểu từng thành phần đang làm gì.
56. Shared Hosting vs VPS
Sau hai bài 45 và 46:
Bài 45
Shared Hosting
và:
Bài 46
VPS
chúng ta có:
DEPLOY LARAVEL
│
┌────────┴────────┐
│ │
Shared Hosting VPS
│ │
Control Panel SSH
│ │
Ít quyền hệ thống Toàn quyền hơn
│ │
Dễ triển khai Tự quản lý
57. Khi nào nên dùng VPS?
VPS phù hợp khi bạn cần:
SSH
Composer
Cron
Queue Worker
Redis
Supervisor
Nginx
Custom PHP
Background Process
Đặc biệt:
Laravel Queue
Scheduler
API
WebSocket
sẽ cần nhiều quyền kiểm soát server hơn.
58. Khi nào Shared Hosting vẫn đủ?
Không phải website nào cũng cần VPS.
Ví dụ:
Blog nhỏ
Website giới thiệu
Landing Page
CMS nhỏ
có thể chạy tốt trên Shared Hosting.
Không nên nghĩ:
VPS = luôn tốt hơn
Mà nên nghĩ:
Nhu cầu
↓
Kiến trúc
↓
Loại hosting
59. Bài tập thực hành
Bài tập 1
Tạo một VPS Linux.
Cài:
Nginx
PHP 8.3+
PHP-FPM
MySQL
Composer
Git
Bài tập 2
Tạo:
/var/www/blog
và clone Blog CMS.
Bài tập 3
Cấu hình:
.env
với:
APP_ENV=production
APP_DEBUG=false
Bài tập 4
Tạo database:
blog
và user:
blog_user
Bài tập 5
Chạy:
composer install --no-dev --optimize-autoloader
Bài tập 6
Chạy:
php artisan migrate --force
Bài tập 7
Chạy:
php artisan storage:link
Bài tập 8
Cấu hình Nginx:
/var/www/blog/public
làm web root.
Bài tập 9
Trỏ domain về VPS.
Bài tập 10
Cài HTTPS.
Bài tập 11
Kiểm tra:
https://example.com
và:
https://example.com/up
60. Ghi nhớ
VPS
Virtual Private Server
SSH
Remote Server Management
Nginx
Web Server
PHP-FPM
PHP Process Manager
MySQL
Database
Composer
PHP Dependency Manager
Git
Source Code Management
Laravel Document Root
project/public
Production
APP_DEBUG=false
Writable directories
storage/
bootstrap/cache/
Optimization
php artisan optimize
61. Tổng kết Bài 46
Ở Bài 45:
Laravel 13
↓
Shared Hosting
Ở Bài 46:
Laravel 13
↓
VPS
↓
Ubuntu
↓
Nginx
↓
PHP-FPM
↓
MySQL
Chúng ta đã biết cách:
SSH vào VPS
↓
Cài môi trường
↓
Đưa source lên server
↓
Cấu hình .env
↓
Cấu hình Database
↓
Composer
↓
Migration
↓
Storage
↓
Nginx
↓
DNS
↓
HTTPS
↓
Optimize
↓
Laravel 13 chạy production
Điểm quan trọng nhất cần nhớ:
Laravel 13
│
▼
/var/www/blog
│
▼
public
│
▼
Nginx
│
▼
PHP-FPM
│
▼
Laravel
│
▼
MySQL
Và không được cấu hình Nginx phục vụ project root:
❌ /var/www/blog
mà phải:
✅ /var/www/blog/public
Laravel 13 cũng yêu cầu PHP 8.3 trở lên, đồng thời storage và bootstrap/cache phải writable đối với web server process.
🎯 Sau Bài 46
Chúng ta đã biết VPS gồm những thành phần nào và cách đưa Laravel 13 lên VPS.
Nhưng trong bài này chúng ta mới sử dụng Nginx ở mức cấu hình cơ bản.
Bài tiếp theo sẽ đi sâu vào chính thành phần này:
🌐 Bài 47 — Nginx
Chúng ta sẽ học:
Nginx là gì?
↓
Server Block
↓
Document Root
↓
location
↓
try_files
↓
PHP-FPM
↓
FastCGI
↓
Domain
↓
HTTPS
↓
Laravel 13
và quan trọng nhất là hiểu từng dòng trong file cấu hình Nginx Laravel, thay vì chỉ copy một đoạn config rồi chạy.
x1




Không có nhận xét nào:
Đăng nhận xét