VPS cho Laravel không phải là một loại máy chủ đặc biệt, mà là một VPS được thiết lập đúng môi trường PHP, web server và quyền thư mục để framework này vận hành ổn định. Nếu bạn đang loay hoay tìm cách deploy dự án đầu tiên, sợ lộ file .env hay không biết chọn cấu hình bao nhiêu cho vừa đủ, bài viết này sẽ hướng dẫn bạn triển khai thực tế tại ThueVPSGiaRe.vn.
NỘI DUNG BÀI VIẾT
- VPS cho Laravel khác gì Hosting Laravel thông thường?
- Bảng cấu hình VPS cho Laravel theo quy mô dự án thực tế
- Các lỗi thường gặp khi deploy Laravel lên server
- Nên dùng Docker cho VPS Laravel hay cài đặt trực tiếp?
- Các phương pháp đưa Website Laravel lên môi trường VPS
- 5 Tiêu chí quan trọng cần đánh giá trước khi setup VPS cho Laravel
- Câu hỏi thường gặp khi triển khai Laravel trên VPS
VPS cho Laravel khác gì Hosting Laravel thông thường?
Nhiều developer mới tìm kiếm hosting laravel vì nghĩ đó là cách duy nhất để chạy framework này. Thực tế, hosting chia sẻ thường bị giới hạn về số lượng process PHP, không cho phép tùy đổi file cấu hình PHP-FPM sâu, và đặc biệt là không cho cài đặt các dịch vụ đi kèm như Redis, Supervisor hay Cron Job chạy liên tục.

Khi dùng VPS, bạn có toàn quyền root. Bạn quyết định phiên bản PHP nào chạy, cấu hình bao nhiêu RAM cho worker, và cài thêm dịch vụ gì. Dành cho những ai có nhu cầu của VPS cho lập trình viên, VPS loại bỏ rào cản của môi trường chia sẻ.
| Tiêu chí | Hosting Laravel | VPS cho Laravel |
|---|---|---|
| Quyền quản trị | Chỉ có cPanel/DirectAdmin, giới hạn theo gói | Toàn quyền Root (SSH), tùy chỉnh hết |
| Cài đặt dịch vụ phụ | Thường bị chặn (Redis, RabbitMQ, Beanstalkd) | Cài đặt tự do qua dòng lệnh |
| Cron Job / Queue Worker | Giới hạn số lượng cron, khó chạy queue liên tục | Dùng Supervisor duy trì queue 24/7 |
| Mức tài nguyên | Chia sẻ CPU/RAM với hàng trăm tài khoản khác | Dành riêng, cấu hình cố định |
Bảng cấu hình VPS cho Laravel theo quy mô dự án thực tế
Laravel là một framework có mức tiêu thụ tài nguyên trung bình đến cao so với các CMS tĩnh. Việc chọn cấu hình VPS cho Laravel phụ thuộc vào traffic, số lượng request/s và việc bạn có dùng Queue/Cron nặng hay không. Nếu bạn đã quen với việc tối ưu hóa, có thể tham khảo thêm hướng dẫn cách tối ưu VPS để tận dụng tối đa phần cứng.
Dưới đây là mức cấu hình tham khảo cho một server cho Laravel chạy trên hệ điều hành Linux (không có giao diện đồ họa):
- Dự án test, học tập, backend cho app cá nhân (Dưới 1.000 lượt truy cập/ngày): 1 vCPU, 1GB RAM. Ở mức này, bạn phải cấu hình swap memory và giới hạn PHP worker ở mức thấp (2-4 worker). Nên dùng PHP 8.1+ để tận dụng JIT compiler giảm tải CPU.
- Website vừa, blog doanh nghiệp, shop bán hàng (1.000 – 10.000 lượt truy cập/ngày): 2 vCPU, 2GB – 4GB RAM. Mức này cho phép chạy Nginx, PHP-FPM, hệ quản trị CSDL như MySQL và Redis (dùng làm cache/session) cùng lúc mà không bị nghẹt RAM.
- Hệ thống SaaS, web ứng dụng phức tạp (Trên 10.000 lượt truy cập/ngày): 4 vCPU, 8GB RAM trở lên. Lúc này bạn nên tách biệt database sang một VPS khác hoặc sử dụng kiến trúc Load Balancer.
Lưu ý quan trọng: Ổ cứng SSD (đặc biệt là NVMe) tác động lớn đến tốc độ đọc ghi file cache của Laravel và truy vấn database. Đừng dùng ổ cứng HDD truyền thống cho dự án Laravel.
Các lỗi thường gặp khi deploy Laravel lên server
Kể cả khi bạn làm đúng quy trình, vps chạy laravel vẫn có thể báo lỗi do sự khác biệt giữa môi trường local (máy tính cá nhân) và môi trường server Linux thực thụ.
- Lỗi 500 Internal Server Error: Nguyên nhân phổ biến nhất là do quyền thư mục sai (chưa chmod 775 cho storage/bootstrap/cache), hoặc bạn quên chạy php artisan key:generate. Kiểm tra ngay file log trong storage/logs/laravel.log để xem lỗi cụ thể là gì.
- Lỗi 502 Bad Gateway: Lỗi này xảy ra khi Nginx không kết nối được với PHP-FPM. Nguyên nhân thường là do dịch vụ php8.3-fpm bị crash (thiếu RAM) hoặc bạn cấu hình sai đường dẫn file sock (fastcgi_pass) trong file Nginx.
- Lỗi 419 Page Expired: Xảy ra khi bạn upload code nhưng quên copy file .env hoặc chưa chạy php artisan key:generate. Session và mã hóa của Laravel phụ thuộc hoàn toàn vào APP_KEY trong file .env.
- Cảnh báo lộ file .env khi truy cập trực tiếp: Nếu bạn truy cập your_domain.com/.env mà trình duyệt hiển thị nội dung file, nghĩa là block location chặn file ẩn trong cấu hình Nginx ở trên chưa được áp dụng đúng. Hãy kiểm tra lại cú pháp và restart Nginx.

Nên dùng Docker cho VPS Laravel hay cài đặt trực tiếp?
Khi dự án phức tạp hơn, bạn sẽ nghe nhiều đến việc đóng gói ứng dụng. Việc tìm hiểu Docker là gì và áp dụng nó vào VPS Laravel mang lại lợi ích lớn về tính đồng nhất giữa môi trường dev và môi trường production. Bạn không còn lo bị thiếu extension PHP hay lỗi phiên bản database.
Tuy nhiên, Docker tiêu tốn thêm một lượng RAM nhất định (khoảng 100-200MB cho chính Docker daemon). Với một vps laravel giá rẻ chỉ có 1GB RAM, cài đặt trực tiếp (bare-metal) Nginx + PHP-FPM + MySQL sẽ tiết kiệm tài nguyên hơn hẳn.
Quyết định phụ thuộc vào tài nguyên VPS và kỹ năng team của bạn:
- Dưới 2GB RAM, deploy 1 dự án đơn lẻ: Cài đặt trực tiếp. Nhanh gọn, tiết kiệm tài nguyên, dễ sửa lỗi trực tiếp bằng SSH.
- Trên 2GB RAM, deploy nhiều dự án hoặc có microservices: Dùng Docker Compose. Bạn có thể chạy song song một dự án Laravel (PHP + Nginx) và một dự án khác như khi dùng VPS cho NodeJS mà các dịch vụ không xung đột thư viện với nhau.
Các phương pháp đưa Website Laravel lên môi trường VPS
Có hai lộ trình phổ biến để đưa mã nguồn Laravel lên máy chủ ảo: (1) Triển khai thủ công (Hardcore) dành cho người muốn nắm vững kiến trúc hạ tầng từ gốc, và (2) Sử dụng công cụ tự động giúp triển khai nhanh, hạn chế rủi ro thao tác sai.
Phương pháp 1: Tự thiết lập Web Server (Nginx/Apache) bằng dòng lệnh
Cách này đòi hỏi bạn thao tác trực tiếp qua terminal để kéo code, cài đặt các gói phụ thuộc và điều hướng Web Server vào đúng thư mục public của hệ thống.
- Bước 1: Đưa mã nguồn lên server
- Khuyên dùng lệnh
git clonetừ các kho lưu trữ (Github/Gitlab) thay vì tải file nén (zip) lên để dễ dàng quản trị và nâng cấp mã nguồn về sau. - Bước 2: Cài đặt môi trường dự án
- Truy cập vào thư mục chứa code và thực thi lần lượt các lệnh sau:
cp .env.example .env composer install --no-dev -o php artisan key:generate
Lưu ý: Tham số
--no-dev -ocó tác dụng loại bỏ các thư viện dành cho môi trường dev và tối ưu hóa autoloader, giúp ứng dụng chạy mượt mà hơn trên môi trường Production. - Bước 3: Thiết lập Document Root (Yếu tố quyết định)
- Đây là thao tác người mới rất hay làm sai. Đường dẫn gốc của tên miền bắt buộc phải trỏ vào thư mục
/public. Dưới đây là đoạn mã cấu hình Nginx mẫu:server { listen 80; server_name yourdomain.com; root /var/www/laravel/public; # Bắt buộc trỏ vào /public index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } # ... các cấu hình PHP-FPM khác } - Bước 4: Cấp quyền (Permissions)
- Để tránh lỗi trắng trang (HTTP Error 500), tài khoản web server cần được cấp quyền ghi (write) vào các thư mục lưu trữ và bộ đệm:
sudo chown -R www-data:www-data /var/www/laravel sudo chmod -R 775 /var/www/laravel/storage sudo chmod -R 775 /var/www/laravel/bootstrap/cache
- Bước 5: Kết nối Cơ sở dữ liệu
- Khởi tạo database, cập nhật thông tin kết nối vào file
.envvà chạy lệnhphp artisan migrate(Bạn có thể xem chi tiết hướng dẫn tại trang chủ laravel.com/docs).
Phương pháp 2: Triển khai nhanh qua Panel và Script chuyên dụng
Các công cụ này giúp bạn tự động hóa việc cài đặt phần mềm nền tảng (tech stack), tạo database và nhận diện sẵn cấu trúc đặc thù của Laravel chỉ với vài thao tác cơ bản.
- FlashPanel: Là hệ thống quản trị VPS qua trình duyệt web với giao diện trực quan. Nền tảng này hỗ trợ tự cài tech stack, liên kết GitHub để tự động clone code. Tích hợp sẵn nút bấm thao tác 1-click cho lệnh
composer installhaykey:generate. Đặc biệt, bạn có thể thiết lập Cronjob (để chạyphp artisan schedule:run) trực tiếp trên giao diện web mà không cần thao tác với crontab của Linux. - LarVPS: Là dạng Script cài đặt qua giao diện dòng lệnh (terminal) chuyên tối ưu cho Laravel và rất được ưa chuộng tại Việt Nam. Điểm mạnh tuyệt đối của LarVPS là khi thêm tên miền, script sẽ tự động nhận diện mã nguồn Laravel và điều hướng cấu hình Nginx trỏ thẳng vào thư mục
/public, miễn nhiễm hoàn toàn với rủi ro cấu hình sai từ người dùng.
5 Tiêu chí quan trọng cần đánh giá trước khi setup VPS cho Laravel
Đừng vội vàng cài đặt khi chưa xem xét kỹ 5 yếu tố kỹ thuật sau đây:
- Sự tương thích phiên bản: Cần đối chiếu chính xác phiên bản Laravel dự án đang dùng với phiên bản PHP tương ứng (Ví dụ: Laravel 10 bắt buộc sử dụng PHP >= 8.1). Cài đúng phiên bản từ đầu sẽ triệt tiêu lỗi xung đột Dependency.
- Quy mô truy cập (Traffic): Hãy ước tính lượng traffic. Một trang web nội bộ dưới 1.000 lượt/ngày sẽ dùng cấu hình phần cứng khác hoàn toàn so với một hệ thống báo chí hay sàn thương mại với 50.000 lượt truy cập.
- Các dịch vụ chạy nền: Dự án của bạn có sử dụng Redis, Websocket, xử lý hàng đợi (Queue) hay lịch trình (Cronjob) không? Nếu có, hệ điều hành cần được cài đặt thêm phần mềm
Supervisorđể duy trì và tự động quản lý các tiến trình này. - Lựa chọn Web Server: Cân đối giữa Nginx và Apache. Nginx nổi bật với khả năng chịu tải tốt, hiệu năng cao và là tiêu chuẩn khuyên dùng cho Laravel. Trong khi đó, Apache lại dễ tiếp cận hơn cho người mới qua cơ chế cấu hình file
.htaccess. - Vị trí Datacenter: Để mang lại tốc độ phản hồi (ping) thấp nhất và trải nghiệm mượt mà, hãy chọn máy chủ đặt tại Datacenter Việt Nam hoặc Singapore nếu đối tượng người dùng cuối chủ yếu nằm ở Việt Nam.
Câu hỏi thường gặp khi triển khai Laravel trên VPS
Cấu hình VPS tối thiểu để chạy được Laravel là bao nhiêu?
Về lý thuyết, bạn có thể chạy Laravel trên VPS 1 vCPU và 512MB RAM nếu tắt Swap và tối giản PHP-FPM worker. Tuy nhiên, mức cấu hình thực tế khả thi tối thiểu nên là 1 vCPU và 1GB RAM để có đủ không gian chạy cả MySQL và Nginx mà không bị tràn RAM (OOM – Out of Memory).
Tại sao không nên cài đặt Composer bằng tài khoản root?
Khi bạn chạy Composer bằng root, các file cache và thư mục vendor được tạo ra sẽ mang quyền sở hữu của root. Khi Nginx (chạy bằng user www-data) cố gắng ghi vào thư mục storage hoặc cache, nó sẽ bị từ chối quyền truy cập, dẫn đến lỗi 500.
Laravel có chạy tốt trên Windows Server không?
Laravel có thể chạy trên Windows Server thông qua IIS (Internet Information Services), nhưng việc cấu hình rất phức tạp và hiệu năng xử lý file thường chậm hơn Linux. Hầu hết các tài liệu hướng dẫn đều ưu tiên môi trường Linux (Ubuntu, Debian, CentOS).
Cần mở những port nào trên firewall cho VPS Laravel?
Bạn chỉ cần mở port 80 (HTTP) và 443 (HTTPS) để người dùng truy cập web. Port 22 (SSH) nên giới hạn IP truy cập để chống brute-force. Không cần mở port 3306 của MySQL ra ngoài internet vì Laravel kết nối database ở nội bộ (localhost).
Lỗi trắng trang (Blank Page) khi deploy Laravel xử lý thế nào?
Trang trắng thường do PHP bị thiếu memory hoặc có lỗi cú pháp nghiêm trọng nhưng tính năng debug bị tắt. Hãy mở file .env, đặt APP_DEBUG=true, sau đó kiểm tra file storage/logs/laravel.log để xem dòng lỗi cụ thể báo cái gì.
Chuẩn bị môi trường đúng cách trước khi deploy code
Việc tìm và setup một vps cho laravel phù hợp không khó như bạn nghĩ, miễn là bạn nắm vững stack Nginx, PHP-FPM và MySQL. Đừng vội chọn cấu hình quá cao gây lãng phí, cũng đừng tiếc tiền chọn cấu hình quá thấp khiến database liên tục bị crash. Bắt đầu từ mức 1-2GB RAM, thiết lập đúng quyền thư mục, chặn truy cập file .env và luôn đọc log khi có lỗi là phương pháp deploy an toàn nhất cho dự án của bạn.
Cần một VPS giá rẻ để bắt đầu?
Chọn cấu hình vừa đủ nhu cầu, ưu tiên chi phí dễ tiếp cận và khả năng quản trị riêng.
Nội dung kỹ thuật trong bài viết chỉ mang tính tham khảo. Các lệnh, cấu hình và thông số hiệu năng có thể thay đổi tùy thuộc vào hệ điều hành, phiên bản phần mềm, cấu hình VPS và môi trường triển khai thực tế. Người đọc nên kiểm thử kỹ lưỡng, sao lưu dữ liệu thường xuyên và đánh giá rủi ro trước khi áp dụng bất kỳ thay đổi nào lên môi trường production.
