Bạn đang muốn xây dựng một ứng dụng web mạnh mẽ và hiệu quả? Việc lựa chọn đúng bộ ba công nghệ nền tảng là bước đi đầu tiên và quan trọng nhất. Trong thế giới phát triển web hiện đại, sự kết hợp giữa Laravel, Nginx và Ubuntu 20.04 được xem là một trong những lựa chọn hàng đầu, mang lại sự ổn định, hiệu năng cao và một cộng đồng hỗ trợ rộng lớn.
Vậy Laravel là gì? Laravel là một PHP framework mã nguồn mở và miễn phí, được tạo ra bởi Taylor Otwell. Nó cung cấp một cấu trúc rõ ràng và các công cụ mạnh mẽ giúp bạn xây dựng ứng dụng phức tạp một cách nhanh chóng và dễ dàng hơn. Với các tính năng như hệ thống định tuyến (routing), ORM (Eloquent), và Blade templating engine, Laravel giúp đơn giản hóa các tác vụ phổ biến trong phát triển web.
Đi cặp với Laravel chính là Nginx là gì, một máy chủ web hiệu suất cao. Khác với các máy chủ truyền thống, Nginx có kiến trúc hướng sự kiện, giúp xử lý hàng ngàn kết nối đồng thời mà không tiêu tốn nhiều tài nguyên hệ thống. Điều này làm cho Nginx trở thành lựa chọn lý tưởng cho các ứng dụng Laravel có lưu lượng truy cập cao.
Cuối cùng, tất cả sẽ được vận hành trên Ubuntu 20.04. Đây là một phiên bản phát hành hỗ trợ dài hạn (LTS) của hệ điều hành Linux phổ biến nhất cho máy chủ. Ubuntu 20.04 nổi tiếng về sự ổn định, bảo mật và một kho phần mềm phong phú, tạo ra một môi trường hoàn hảo để triển khai ứng dụng của bạn.
Tại sao nên kết hợp ba công nghệ này? Sự cộng hưởng giữa chúng tạo ra một môi trường phát triển và triển khai toàn diện. Laravel cung cấp cấu trúc ứng dụng vững chắc, Nginx đảm bảo tốc độ phục vụ người dùng nhanh chóng, và Ubuntu 20.04 mang lại nền tảng hệ điều hành ổn định. Đây chính là công thức cho một trang web hoặc ứng dụng web thành công.

Yêu cầu hệ thống và chuẩn bị môi trường
Trước khi bắt đầu hành trình cài đặt, việc chuẩn bị kỹ lưỡng môi trường là yếu tố quyết định sự thành công. Bạn cần đảm bảo máy chủ của mình đáp ứng đủ các yêu cầu cả về phần cứng lẫn phần mềm. Điều này không chỉ giúp quá trình cài đặt diễn ra suôn sẻ mà còn đảm bảo ứng dụng hoạt động ổn định sau này.
Yêu cầu phần cứng và phần mềm
Để chạy tốt một ứng dụng Laravel trên Nginx, máy chủ của bạn cần đáp ứng các yêu cầu tối thiểu sau đây. Mặc dù Laravel khá nhẹ, cấu hình này sẽ đảm bảo hiệu suất ổn định cho một dự án nhỏ đến trung bình.
Về phần cứng, bạn nên có ít nhất:
- CPU: 1 Core (Chip Xeon là gì)
- RAM: 1 GB (2 GB được khuyến nghị để chạy thêm các dịch vụ như Redis hoặc queue) (Ram ecc)
- Dung lượng ổ cứng: 20 GB SSD để có tốc độ đọc ghi tốt hơn.
Về phần mềm, đây là những phiên bản bạn cần chú ý:
- Hệ điều hành: Ubuntu 20.04 (Focal Fossa).
- PHP: Phiên bản 7.4 trở lên (phiên bản 8.0 hoặc 8.1 được khuyến nghị cho các dự án mới).
- Composer: Phiên bản mới nhất để quản lý các gói phụ thuộc của PHP (Php là gì).
- Database: MySQL 5.7+ hoặc MariaDB 10.2+.
Chuẩn bị máy chủ Ubuntu 20.04
Khi đã có một máy chủ Ubuntu 20.04 mới, bước đầu tiên là cập nhật hệ thống. Việc này đảm bảo bạn có các bản vá bảo mật và phiên bản phần mềm mới nhất từ kho lưu trữ của Ubuntu.
Hãy đăng nhập vào máy chủ của bạn qua SSH và chạy các lệnh sau:
sudo apt update
sudo apt upgrade -y
Tiếp theo, bạn cần cài đặt một số công cụ cần thiết như curl, git, unzip nếu chúng chưa có sẵn.
sudo apt install curl git unzip -y
Để tăng cường bảo mật, bạn nên cấu hình tường lửa cơ bản. Ubuntu đi kèm với công cụ ufw (Uncomplicated Firewall) rất dễ sử dụng.
sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH
sudo ufw enable
Khi được hỏi, hãy nhập y để xác nhận và kích hoạt tường lửa. Bây giờ, máy chủ của bạn đã sẵn sàng cho các bước cài đặt tiếp theo.
Cài đặt Laravel trên máy chủ Ubuntu
Sau khi đã chuẩn bị xong môi trường máy chủ, chúng ta sẽ tiến hành cài đặt các thành phần cốt lõi để chạy Laravel. Quá trình này bao gồm việc cài đặt PHP, các extension cần thiết và Composer, công cụ quản lý gói phụ thuộc không thể thiếu của PHP.
Cài đặt PHP và các extension cần thiết cho Laravel
Laravel có một số yêu cầu cụ thể về các extension của PHP để hoạt động chính xác. Bạn có thể cài đặt phiên bản PHP mặc định trên Ubuntu 20.04 (là PHP 7.4) cùng với các extension đó bằng một lệnh duy nhất.
sudo apt install php-fpm php-mysql php-mbstring php-xml php-bcmath php-curl php-zip php-gd -y
Hãy cùng phân tích các extension quan trọng:
php-fpm: FastCGI Process Manager, giúp Nginx giao tiếp hiệu quả với PHP.
php-mysql: Cần thiết để Laravel kết nối với cơ sở dữ liệu MySQL hoặc MariaDB.
php-mbstring: Hỗ trợ xử lý các chuỗi ký tự đa byte, quan trọng cho các ứng dụng có ngôn ngữ như tiếng Việt.
php-xml: Bắt buộc bởi Laravel vì các thành phần cốt lõi của nó phụ thuộc vào việc xử lý XML.
php-bcmath: Cung cấp hỗ trợ cho các phép toán số học có độ chính xác cao.
Sau khi cài đặt, bạn có thể kiểm tra phiên bản PHP bằng lệnh php -v.
Cài đặt Composer và tạo project Laravel
Composer là trái tim của việc quản lý các thư viện trong thế giới PHP hiện đại. Nó giúp bạn khai báo, cài đặt và cập nhật các gói mà dự án của bạn cần.
Đầu tiên, hãy tải trình cài đặt Composer từ trang web chính thức:
curl -sS https://getcomposer.org/installer -o composer-setup.php
Tiếp theo, chạy trình cài đặt này với PHP:
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
Sau khi lệnh trên hoàn tất, Composer đã được cài đặt toàn cục trên hệ thống. Bạn có thể kiểm tra lại bằng lệnh composer --version.
Bây giờ, bạn đã sẵn sàng tạo một dự án Laravel mới. Hãy di chuyển đến thư mục /var/www (thư mục web tiêu chuẩn) và dùng Composer để tạo dự án.
cd /var/www
sudo composer create-project --prefer-dist laravel/laravel my-project
Lệnh này sẽ tạo một thư mục tên là my-project chứa toàn bộ mã nguồn của Laravel. Cuối cùng, bạn cần cấp quyền ghi cho Laravel vào các thư mục storage và bootstrap/cache.
sudo chown -R www-data:www-data /var/www/my-project
sudo chmod -R 775 /var/www/my-project/storage
sudo chmod -R 775 /var/www/my-project/bootstrap/cache
Dự án Laravel của bạn đã được cài đặt thành công và sẵn sàng để được cấu hình với Nginx.

Cấu hình Nginx để phục vụ ứng dụng Laravel
Sau khi đã có mã nguồn Laravel, bước tiếp theo là cấu hình Nginx để nó biết cách “phục vụ” ứng dụng của bạn cho người dùng. Điều này được thực hiện thông qua việc tạo một file cấu hình “virtual host” (còn gọi là server block), chỉ định Nginx trỏ đến đúng thư mục dự án và xử lý các yêu cầu một cách chính xác.
Cài đặt Nginx trên Ubuntu 20.04
Nếu bạn chưa cài đặt Nginx ở bước chuẩn bị tường lửa, hãy cài đặt nó ngay bây giờ. Quá trình này rất đơn giản.
sudo apt install nginx -y
Sau khi cài đặt xong, dịch vụ Nginx sẽ tự động khởi động. Bạn có thể kiểm tra trạng thái của nó để chắc chắn mọi thứ đều ổn.
sudo systemctl status nginx
Nếu bạn thấy trạng thái active (running) màu xanh lá, xin chúc mừng, Nginx đã hoạt động! Bạn cũng có thể truy cập địa chỉ IP của máy chủ trên trình duyệt, bạn sẽ thấy trang chào mừng mặc định của Nginx.

Tạo file cấu hình virtual host cho Laravel
Nginx lưu trữ các file cấu hình virtual host trong thư mục /etc/nginx/sites-available. Chúng ta sẽ tạo một file mới cho dự án Laravel của mình.
sudo nano /etc/nginx/sites-available/my-project
Bên trong file này, hãy dán nội dung cấu hình sau. Đừng quên thay thế your_domain.com bằng tên miền của bạn hoặc địa chỉ IP của máy chủ.
server {
listen 80;
server_name your_domain.com;
root /var/www/my-project/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Giải thích nhanh các chỉ thị quan trọng:
root: Trỏ đến thư mục public của Laravel, đây là điểm truy cập duy nhất của ứng dụng.
index: Ưu tiên file index.php khi xử lý yêu cầu.
location /: Đây là phần quan trọng nhất, nó xử lý các URL đẹp (pretty URLs). Mọi yêu cầu không khớp với file hoặc thư mục có sẵn sẽ được chuyển đến index.php.
location ~ \.php$: Cấu hình cách Nginx chuyển các file PHP cho php-fpm xử lý.
Sau khi lưu file, bạn cần tạo một liên kết tượng trưng từ sites-available sang sites-enabled để kích hoạt cấu hình này.
sudo ln -s /etc/nginx/sites-available/my-project /etc/nginx/sites-enabled/
Cuối cùng, hãy kiểm tra cú pháp file cấu hình Nginx và khởi động lại dịch vụ.
sudo nginx -t
sudo systemctl restart nginx
Nếu không có lỗi, Nginx giờ đã được cấu hình để phục vụ ứng dụng Laravel của bạn.
Thiết lập các bước cấu hình cần thiết cho Laravel
Cài đặt mã nguồn chỉ là một nửa chặng đường. Để ứng dụng Laravel của bạn thực sự hoạt động, bạn cần cấu hình môi trường, kết nối cơ sở dữ liệu và tinh chỉnh các thành phần quan trọng khác. Tất cả những thiết lập này đều nằm trong file .env, trái tim của cấu hình Laravel.
Cấu hình environment (.env) và kết nối database
Khi bạn tạo một dự án Laravel, file .env.example sẽ được tạo ra. Bạn cần sao chép nó thành một file mới có tên là .env.
cd /var/www/my-project
sudo cp .env.example .env
Bây giờ, hãy mở file .env và chỉnh sửa các thông tin quan trọng.
sudo nano .env
Bạn cần chú ý đến các biến sau:
APP_NAME: Tên ứng dụng của bạn.
APP_ENV: Môi trường hoạt động. Đặt là production khi triển khai thực tế.
APP_KEY: Khóa mã hóa của ứng dụng. Nếu nó trống, hãy tạo một khóa mới bằng lệnh php artisan key:generate.
APP_DEBUG: Đặt là false trên môi trường production để tránh lộ thông tin nhạy cảm khi có lỗi.
APP_URL: URL đầy đủ của ứng dụng.
Phần quan trọng nhất là cấu hình kết nối cơ sở dữ liệu (database).
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name
DB_USERNAME=your_database_user
DB_PASSWORD=your_password
Hãy chắc chắn rằng bạn đã tạo database và người dùng tương ứng trong MySQL hoặc MariaDB và điền chính xác thông tin vào đây.
Thiết lập cache, session và queue để tối ưu hiệu suất
Mặc định, Laravel sử dụng driver file cho cache và session. Điều này ổn cho các dự án nhỏ, nhưng để đạt hiệu suất cao hơn, bạn nên cân nhắc sử dụng Redis hoặc Memcached.
Nếu bạn đã cài đặt Redis, bạn có thể thay đổi các giá trị trong file .env:
CACHE_DRIVER=redis
SESSION_DRIVER=redis
Việc này sẽ chuyển gánh nặng lưu trữ cache và session từ ổ cứng sang RAM, giúp tăng tốc độ phản hồi của ứng dụng một cách đáng kể.
Một tính năng mạnh mẽ khác của Laravel là hệ thống hàng đợi (queue). Nó cho phép bạn xử lý các tác vụ tốn thời gian (như gửi email, xử lý hình ảnh) ở chế độ nền mà không làm người dùng phải chờ đợi. Để sử dụng queue, bạn cần cấu hình một “queue worker”.
Trong file .env, bạn có thể đặt QUEUE_CONNECTION=database hoặc QUEUE_CONNECTION=redis. Sau đó, bạn cần thiết lập một công cụ giám sát tiến trình như Supervisor để đảm bảo worker của Laravel luôn chạy. Supervisor sẽ tự động khởi động lại worker nếu nó bị dừng vì bất kỳ lý do gì, đảm bảo các tác vụ nền luôn được xử lý.
Kiểm tra và tối ưu hiệu suất ứng dụng trên Nginx
Sau khi hoàn tất các bước cài đặt và cấu hình, đã đến lúc kiểm tra thành quả và thực hiện các bước tối ưu để đảm bảo ứng dụng của bạn chạy nhanh và mượt mà nhất có thể. Giai đoạn này rất quan trọng để mang lại trải nghiệm tốt nhất cho người dùng.
Kiểm tra hoạt động cơ bản của ứng dụng Laravel
Cách đơn giản nhất để kiểm tra là mở trình duyệt và truy cập vào tên miền hoặc địa chỉ IP mà bạn đã cấu hình trong Nginx. Nếu mọi thứ chính xác, bạn sẽ thấy trang chào mừng mặc định của Laravel.

Đây là dấu hiệu cho thấy Nginx đã chuyển tiếp thành công yêu cầu đến ứng dụng Laravel và Laravel đã xử lý nó.
Nếu bạn gặp lỗi, đừng hoảng sợ. Hãy mở các công cụ dành cho nhà phát triển (Developer Tools) trên trình duyệt (thường bằng phím F12), chuyển qua tab “Network” và tải lại trang. Kiểm tra mã trạng thái (Status Code) của yêu cầu. Mã 200 là thành công, trong khi các mã 4xx hoặc 5xx chỉ ra có lỗi cần được điều tra.
Tối ưu cấu hình Nginx và Laravel
Để ứng dụng của bạn không chỉ chạy mà còn chạy nhanh, hãy áp dụng các kỹ thuật tối ưu sau:
1. Tối ưu Nginx:
- Bật Gzip Compression: Nén các tài nguyên (HTML, CSS, JS) trước khi gửi đến trình duyệt, giúp giảm dung lượng và tăng tốc độ tải trang. Bạn có thể thêm các chỉ thị
gzip on; vào file cấu hình Nginx.
- Thiết lập Cache Headers: Chỉ thị cho trình duyệt lưu trữ các tài sản tĩnh (hình ảnh, CSS, JS) trong một khoảng thời gian. Điều này giúp giảm số lượng yêu cầu đến máy chủ trong các lần truy cập sau.
2. Tối ưu PHP:
- Sử dụng OPcache: PHP OPcache cải thiện hiệu suất bằng cách lưu trữ mã bytecode đã được biên dịch sẵn trong bộ nhớ chia sẻ, loại bỏ nhu cầu PHP phải tải và phân tích cú pháp các tập lệnh trên mỗi yêu cầu. Hầu hết các bản cài đặt PHP hiện đại đều có OPcache được bật sẵn.
3. Tối ưu trong Laravel:
- Cache cấu hình và route: Laravel cung cấp các lệnh Artisan để cache các file cấu hình và route, giúp giảm thời gian khởi động của framework trên mỗi yêu cầu.
php artisan config:cache
php artisan route:cache
- Tối ưu Database Query: Sử dụng các công cụ như Laravel Debugbar để phân tích các câu truy vấn. Tránh các vấn đề N+1 query bằng cách sử dụng Eager Loading (
with()).
Áp dụng những kỹ thuật này sẽ tạo ra sự khác biệt lớn về hiệu suất và khả năng mở rộng của ứng dụng.
Xử lý lỗi thường gặp và cách khắc phục
Trong quá trình cài đặt và vận hành, việc gặp lỗi là điều khó tránh khỏi. Điều quan trọng là biết cách xác định nguyên nhân và khắc phục chúng một cách hiệu quả. Dưới đây là hai lỗi phổ biến nhất khi triển khai Laravel với Nginx và cách xử lý chúng.
Lỗi 403 Forbidden hoặc lỗi quyền truy cập
Lỗi 403 Forbidden thường xuất hiện khi Nginx không có quyền đọc hoặc thực thi các file và thư mục của dự án Laravel. Nguyên nhân chính thường liên quan đến quyền sở hữu và quyền truy cập sai.

Nguyên nhân:
- Quyền sở hữu của thư mục dự án (
/var/www/my-project) không phải là www-data (người dùng mà Nginx và PHP-FPM đang chạy).
- Quyền truy cập của các thư mục không cho phép người dùng
www-data đi vào (yêu cầu quyền thực thi x).
- Quyền truy cập của các file không cho phép người dùng
www-data đọc chúng.
Cách khắc phục:
Chạy lại các lệnh sau để đặt đúng quyền sở hữu và quyền truy cập cho toàn bộ thư mục dự án:
sudo chown -R www-data:www-data /var/www/my-project
sudo find /var/www/my-project -type f -exec chmod 664 {} \;
sudo find /var/www/my-project -type d -exec chmod 775 {} \;
Đặc biệt, bạn cần cấp quyền ghi cho Laravel vào các thư mục storage và bootstrap/cache một lần nữa để đảm bảo an toàn.
sudo chmod -R 775 /var/www/my-project/storage
sudo chmod -R 775 /var/www/my-project/bootstrap/cache
Lỗi 500 Internal Server Error
Đây là một lỗi chung chung, cho biết có một vấn đề xảy ra ở phía máy chủ nhưng không chỉ rõ là gì. Lỗi này thường do lỗi trong code PHP hoặc cấu hình sai.

Cách khắc phục:
Để tìm ra nguyên nhân, bạn cần kiểm tra các file log. Đây là kỹ năng quan trọng nhất của một nhà phát triển.
- Kiểm tra log của Laravel:
File log của Laravel nằm tại /var/www/my-project/storage/logs/laravel.log.
Hãy mở file này hoặc dùng lệnh tail để xem các lỗi mới nhất:
sudo tail -f /var/www/my-project/storage/logs/laravel.log
Log của Laravel rất chi tiết và thường chỉ thẳng ra file và dòng code gây lỗi.
- Kiểm tra log lỗi của Nginx:
File log lỗi của Nginx thường nằm tại /var/log/nginx/error.log.
Log này sẽ cho bạn biết các vấn đề liên quan đến Nginx, chẳng hạn như không thể kết nối đến PHP-FPM.
- Bật chế độ debug của Laravel (chỉ trong môi trường phát triển):
Nếu bạn vẫn đang trong giai đoạn phát triển, hãy vào file .env, đặt APP_DEBUG=true. Laravel sẽ hiển thị một trang lỗi chi tiết thay vì trang 500 chung chung. Lưu ý: Đừng bao giờ bật debug trên môi trường production.
Bằng cách kiểm tra log, bạn có thể nhanh chóng xác định vấn đề, dù đó là lỗi cú pháp PHP, kết nối database thất bại, hay một cấu hình sai nào đó.
Các best practices khi dùng Laravel với Nginx trên Ubuntu 20.04
Việc cài đặt và chạy được ứng dụng chỉ là bước khởi đầu. Để duy trì một hệ thống ổn định, an toàn và hiệu quả trong dài hạn, bạn nên tuân thủ các quy tắc và thực hành tốt nhất (best practices). Điều này giúp bạn tránh được nhiều rủi ro và tiết kiệm thời gian xử lý sự cố sau này.
Luôn cập nhật phiên bản mới nhất
Thế giới phần mềm luôn thay đổi. Các phiên bản mới của Laravel, PHP, và Nginx không chỉ mang lại các tính năng mới mà còn chứa các bản vá bảo mật quan trọng. Hãy tạo thói quen kiểm tra và lên kế hoạch cập nhật định kỳ để bảo vệ ứng dụng khỏi các lỗ hổng đã biết.

Backup thường xuyên và bảo mật thông tin server
Dữ liệu là tài sản quý giá nhất. Bạn phải có một chiến lược sao lưu (backup) tự động và định kỳ cho cả mã nguồn và cơ sở dữ liệu. Lưu trữ các bản sao lưu ở một nơi an toàn, tách biệt với máy chủ chính. Đồng thời, hãy tuân thủ các nguyên tắc bảo mật cơ bản như sử dụng mật khẩu mạnh, khóa SSH thay vì mật khẩu, và hạn chế quyền truy cập không cần thiết.
Tối ưu hóa log và theo dõi hiệu năng định kỳ
Log là người bạn tốt nhất của bạn khi có sự cố, nhưng nếu không được quản lý, chúng có thể chiếm dụng rất nhiều dung lượng đĩa. Hãy sử dụng các công cụ như logrotate để tự động xoay vòng và nén các file log cũ. Bên cạnh đó, sử dụng các công cụ giám sát hiệu năng (monitoring) như Netdata, New Relic hoặc Prometheus để theo dõi sức khỏe của máy chủ (CPU, RAM, disk) và hiệu suất ứng dụng. Việc này giúp bạn phát hiện sớm các vấn đề tiềm ẩn trước khi chúng ảnh hưởng đến người dùng.

Tránh chỉnh sửa trực tiếp file cấu hình khi chưa backup
Một quy tắc vàng là không bao giờ chỉnh sửa trực tiếp các file cấu hình quan trọng (như của Nginx hay .env) trên môi trường production mà không sao lưu phiên bản cũ. Một lỗi cú pháp nhỏ có thể làm toàn bộ trang web của bạn ngừng hoạt động. Luôn tạo một bản sao của file trước khi chỉnh sửa. Tốt hơn nữa, hãy sử dụng hệ thống quản lý phiên bản như Git để theo dõi mọi thay đổi.

Kết luận
Qua bài viết này, chúng ta đã cùng nhau đi qua một hành trình chi tiết, từ việc chuẩn bị môi trường cho đến khi triển khai và tối ưu một ứng dụng Laravel trên máy chủ Nginx chạy hệ điều hành Ubuntu 20.04. Bạn đã học được cách cài đặt các thành phần cần thiết, cấu hình Nginx để phục vụ ứng dụng, kết nối cơ sở dữ liệu, cũng như các kỹ thuật xử lý lỗi và thực hành tốt nhất để duy trì hệ thống.
Tóm tắt các bước chính bao gồm:
- Chuẩn bị: Cập nhật Ubuntu và cài đặt các yêu cầu về phần cứng, phần mềm.
- Cài đặt: Cài đặt PHP, Composer và tạo dự án Laravel mới.
- Cấu hình: Thiết lập Nginx virtual host và cấu hình file
.env của Laravel.
- Kiểm tra & Tối ưu: Xác minh ứng dụng hoạt động và áp dụng các biện pháp tối ưu hiệu suất.
- Bảo trì: Tuân thủ các best practices về cập nhật, sao lưu và giám sát.
Cách tốt nhất để thực sự nắm vững kiến thức là bắt tay vào thực hành. Đừng ngần ngại thử nghiệm trên một máy chủ ảo hoặc môi trường local của riêng bạn. Quá trình tự mình thực hiện sẽ giúp bạn rút ra nhiều kinh nghiệm quý báu. Chúc bạn thành công trên con đường xây dựng những ứng dụng web tuyệt vời với Laravel và Nginx.