Hướng dẫn deploy website Laravel lên VPS từ A-Z: Dễ hiểu cho người mới bắt đầu

Hướng dẫn deploy website Laravel lên VPS chi tiết từ A-Z. Tìm hiểu cách cấu hình Nginx, PHP, database, SSL và xử lý các lỗi thường gặp khi đưa website Laravel vào hoạt động thực tế.
Hướng dẫn deploy website Laravel lên VPS từ A-Z: Dễ hiểu cho người mới bắt đầu

Hướng dẫn deploy website Laravel lên VPS: Đừng để "chạy được trên localhost" trở thành cái bẫy

Có một tình huống tôi gặp khá nhiều khi tư vấn cho khách hàng. Website Laravel được lập trình rất chỉn chu, chạy mượt trên máy lập trình viên. Nhưng đến lúc đưa lên VPS thì lỗi liên tục: trắng trang, lỗi 500, queue không hoạt động, gửi mail thất bại hoặc website chậm bất thường.

Điều thú vị là phần lớn các lỗi đó không đến từ Laravel. Chúng xuất phát từ quy trình triển khai chưa đúng.

Nếu bạn đang chuẩn bị đưa website Laravel vào môi trường thực tế, bài viết này sẽ giúp bạn deploy bài bản hơn, giảm thời gian xử lý sự cố và giúp hệ thống vận hành ổn định ngay từ đầu.

Vì sao nên deploy Laravel lên VPS thay vì hosting thông thường?

Nhiều website Laravel quy mô nhỏ vẫn có thể chạy trên shared hosting. Tuy nhiên, khi bắt đầu cần hiệu năng, khả năng mở rộng và kiểm soát hệ thống tốt hơn thì VPS gần như là lựa chọn hợp lý.

Một số lợi ích dễ thấy:

  • Chủ động cấu hình PHP, Nginx hoặc Apache.
  • Tự quản lý Redis, Supervisor, Cronjob.
  • Dễ tối ưu tốc độ.
  • Tăng cường bảo mật.
  • Thuận tiện mở rộng tài nguyên khi lượng truy cập tăng.

Đặc biệt với các webapp quản trị nội bộ, CRM, ERP hoặc website có nhiều tác vụ nền, VPS gần như là tiêu chuẩn tối thiểu.

Chuẩn bị trước khi deploy Laravel lên VPS

Trước khi bắt đầu, hãy kiểm tra kỹ những yếu tố sau.

Mã nguồn đã ổn định

Không nên deploy khi code vẫn đang thay đổi liên tục hoặc chưa kiểm tra đầy đủ trên môi trường staging.

Tôi thường khuyên khách hàng hoàn thành các bước:

  • Test chức năng chính.
  • Kiểm tra đăng nhập.
  • Test gửi email.
  • Test upload file.
  • Test phân quyền.

Làm kỹ trước sẽ tiết kiệm rất nhiều thời gian xử lý sau này.

Chuẩn bị VPS phù hợp

Nếu website mới vận hành:

  • 2 CPU.
  • RAM từ 2GB.
  • SSD từ 40GB.

Với website thương mại điện tử hoặc webapp có nhiều người dùng đồng thời, nên cân nhắc cấu hình cao hơn.

Chuẩn bị domain và SSL

Đây là phần thường bị bỏ quên cho đến phút cuối.

Hãy chuẩn bị:

  • Domain đã trỏ về IP VPS.
  • SSL miễn phí hoặc SSL thương mại.
  • Tài khoản SSH.

Các bước deploy website Laravel lên VPS

Bước 1: Kết nối VPS qua SSH

Sau khi nhận VPS, đăng nhập bằng SSH.

Ví dụ:

ssh root@IP_VPS

Ngay sau khi đăng nhập, nên đổi mật khẩu mạnh hoặc cấu hình SSH Key để tăng bảo mật.

Bước 2: Cài đặt môi trường cần thiết

Thông thường sẽ bao gồm:

  • Nginx.
  • PHP và các extension Laravel yêu cầu.
  • Composer.
  • Git.
  • MySQL hoặc MariaDB.
  • Redis (nếu sử dụng queue hoặc cache).
  • Supervisor.

Đừng cài theo kiểu "thiếu gì bổ sung nấy". Việc chuẩn hóa môi trường ngay từ đầu sẽ giúp dễ bảo trì hơn.

Bước 3: Clone source code

Thông thường:

git clone repository

Sau đó di chuyển vào thư mục dự án:

cd ten-du-an

Nếu khách hàng không sử dụng Git, có thể upload source bằng SFTP. Tuy nhiên, về lâu dài Git vẫn là lựa chọn nên áp dụng.

Bước 4: Cài đặt thư viện

Chạy:

composer install --optimize-autoloader --no-dev

Tùy dự án có frontend hay không, có thể cần thêm:

npm install
npm run build

Nhiều người quên bước build frontend dẫn đến giao diện lỗi hoặc không hiển thị CSS.

Bước 5: Cấu hình file .env

Đây là "trái tim" của hệ thống.

Kiểm tra kỹ:

  • APP_NAME
  • APP_ENV
  • APP_DEBUG
  • APP_URL
  • DB_DATABASE
  • DB_USERNAME
  • DB_PASSWORD
  • MAIL_*
  • REDIS_*

Một lưu ý rất quan trọng.

Khi đưa vào production:

APP_DEBUG=false

Việc để APP_DEBUG=true có thể làm lộ thông tin nhạy cảm nếu xảy ra lỗi.

Bước 6: Generate key và migrate database

Chạy lần lượt:

php artisan key:generate

Tiếp theo:

php artisan migrate

Nếu có dữ liệu mẫu:

php artisan db:seed

Trước khi migrate trên website đang hoạt động, hãy sao lưu database.

Đây là thói quen giúp tránh những tình huống "toát mồ hôi" khi deploy phiên bản mới.

Bước 7: Phân quyền thư mục

Laravel yêu cầu quyền ghi vào:

storage
bootstrap/cache

Thiết lập đúng quyền sẽ giúp tránh lỗi ghi log hoặc upload file thất bại.

Bước 8: Cấu hình Nginx

Một lỗi phổ biến là trỏ root sai thư mục.

Laravel cần trỏ đến:

public/

Không phải thư mục gốc dự án.

Nếu cấu hình sai, website có thể lộ mã nguồn hoặc trả về lỗi 403.

Bước 9: Tối ưu Laravel trước khi vận hành

Đây là bước tôi luôn thực hiện trước khi bàn giao.

Chạy:

php artisan config:cache
php artisan route:cache
php artisan view:cache

Những lệnh này giúp giảm thời gian xử lý request.

Sau mỗi lần cập nhật cấu hình, nhớ clear cache nếu cần.

Bước 10: Thiết lập Queue và Cronjob

Nhiều website Laravel gửi email, xử lý thông báo hoặc đồng bộ dữ liệu thông qua queue.

Nếu bỏ qua bước này, hệ thống vẫn chạy nhưng nhiều chức năng sẽ âm thầm ngừng hoạt động.

Cronjob:

* * * * * php /path/to/artisan schedule:run

Supervisor sẽ giúp queue hoạt động liên tục và tự khởi động lại khi có lỗi.

Những lỗi thường gặp khi deploy Laravel lên VPS

Lỗi 500 Internal Server Error

Nguyên nhân thường gặp:

  • Sai quyền thư mục.
  • Sai cấu hình .env.
  • Thiếu extension PHP.
  • Cache cũ chưa được xóa.

Website trắng trang

Đôi khi chỉ vì:

  • APP_DEBUG=false.
  • PHP version không tương thích.
  • Thiếu build frontend.

Hãy kiểm tra log trong thư mục storage/logs.

Queue không chạy

Phần lớn đến từ:

  • Chưa cài Supervisor.
  • Supervisor chưa khởi động.
  • Queue driver cấu hình sai.

Không gửi được email

Cần kiểm tra:

  • SMTP.
  • Port.
  • Firewall VPS.
  • Thông tin xác thực.

Một vài kinh nghiệm thực tế sau nhiều lần deploy

Đừng deploy trực tiếp trên website đang có lượng truy cập lớn vào giờ cao điểm.

Hãy chọn thời điểm ít người dùng nhất.

Luôn sao lưu database trước khi cập nhật.

Nếu dự án quan trọng, nên có môi trường staging riêng để kiểm thử.

Và nếu deploy bằng tay quá thường xuyên, hãy nghĩ đến CI/CD. Chỉ cần thiết lập đúng một lần, những lần cập nhật sau sẽ nhẹ nhàng hơn rất nhiều.

FAQ

Deploy Laravel lên VPS mất bao lâu?

Nếu môi trường đã chuẩn bị sẵn, thường khoảng 30–60 phút. Với hệ thống phức tạp hơn có thể kéo dài vài giờ.

Nên dùng Nginx hay Apache?

Nginx thường được ưu tiên nhờ hiệu năng tốt và tiêu thụ ít tài nguyên. Tuy nhiên, Apache vẫn phù hợp nếu đội ngũ đã quen vận hành.

VPS bao nhiêu RAM là đủ?

Website giới thiệu doanh nghiệp thường bắt đầu từ 2GB RAM. Webapp nhiều người dùng nên từ 4GB trở lên.

Có cần Redis không?

Không bắt buộc. Tuy nhiên, Redis giúp cache và queue hoạt động hiệu quả hơn, đặc biệt khi lưu lượng tăng.

Có nên tự deploy nếu không rành kỹ thuật?

Nếu website phục vụ hoạt động kinh doanh quan trọng, nên có người có kinh nghiệm hỗ trợ. Một sai sót nhỏ trong cấu hình cũng có thể khiến website gián đoạn.

Lời khuyên dành cho người mới

Deploy website Laravel không khó. Điều khiến nhiều người áp lực là thiếu quy trình.

Khi đã có checklist rõ ràng, bạn sẽ thấy việc đưa một website từ localhost lên VPS chỉ còn là những bước cần làm cẩn thận.

Làm chậm ở lần đầu để hiểu bản chất. Những lần sau sẽ nhanh hơn rất nhiều.

Nếu bạn đang cần tư vấn về triển khai Laravel, tối ưu VPS, xây dựng webapp hoặc chuyển đổi số cho doanh nghiệp, Hải Vũ luôn sẵn sàng chia sẻ kinh nghiệm thực tế để giúp hệ thống của bạn vận hành ổn định và bền vững hơn.

Hải Công Nghệ

Hải Công Nghệ

Chuyên gia công nghệ & Tác giả
Hơn 10 năm kinh nghiệm trong lĩnh vực công nghệ thông tin, kinh doanh và phát triển bản thân. Tôi chia sẻ những kiến thức thực chiến giúp bạn xây dựng sự nghiệp vững chắc trong thời đại số.