NTM Solutions

Bài đăng nổi bật

🚀 Laravel 12 (2026) — Từ PHP Core đến Full Stack📘

Nếu cập nhật theo Laravel 12 LTS (2026) thì mình sẽ chia thành các phần như sau để người học đi từ PHP Core → Laravel → Triển khai dự án th...

Thứ Ba, 22 tháng 9, 2026

🖥️ LARAVEL 13 — BÀI 46 — DEPLOY LARAVEL 13 LÊN VPS

Ở 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 HostingVPS
Dễ sử dụngKhó hơn
Control PanelSSH/Terminal
Ít quyền hệ thốngNhiều quyền
Ít phải cấu hìnhTự 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âuCần biết Linux
Có thể giới hạn Composer/CLIChủ độ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

quay về MỤC LỤC

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

Đăng nhận xét

Facebook Youtube RSS