Latest Post

Hướng dẫn cài đặt Nginx, PHP, MySQL trên Windows 11 và so sánh với Docker Lỗi “Uncaught TypeError: Cannot access offset of type string on string” trong PHP: Nguyên nhân và cách khắc phục

Việc cài đặt Nginx, PHPMySQL trên Windows 11 có thể được thực hiện theo nhiều cách: cài đặt thủ công hoặc sử dụng Xampp, Docker, …. Mỗi phương pháp đều có ưu và nhược điểm riêng, ảnh hưởng đến hiệu suất, khả năng quản lý và tính linh hoạt của hệ thống. Trong bài viết này, chúng ta sẽ tìm hiểu cách cài đặt từng thành phần trên Windows 11 và so sánh với việc sử dụng Docker để tìm ra giải pháp tối ưu nhất cho nhu cầu của bạn.

Cách Cài Đặt Nginx, PHP, MySQL Trên Windows 11

Cài Đặt Nginx

Đầu tiên, bạn cần tải Nginx từ trang chủ nginx.org. Sau khi tải về phiên bản mới nhất, hãy giải nén vào một thư mục, ví dụ C:\nginx. Tiếp theo, mở thư mục C:\nginx\conf\nginx.conf bằng Notepad++ hoặc VS Codechỉnh sửa phần location / thành:

location / {
    root   C:/nginx/www;
    index  index.php index.html index.htm;
}

Sau đó, mở Command Prompt (CMD) với quyền admin và chạy lệnh:

cd C:\nginx
start nginx

Truy cập http://localhost/ trên trình duyệt, nếu thấy trang mặc định của Nginx xuất hiện, bạn đã cài đặt thành công.

Cài Đặt PHP

Truy cập https://windows.php.net/download/ và tải bản PHP Non-Thread Safe (NTS) – x64. Giải nén vào thư mục C:\php. Sau đó, đổi tên file php.ini-development thành php.ini và mở file này để kích hoạt các tiện ích mở rộng cần thiết:

extension=mysqli
extension=pdo_mysql

Tiếp theo, cấu hình PHP trong Nginx bằng cách chỉnh sửa C:\nginx\conf\nginx.conf và thêm đoạn sau:

location ~ \.php$ {
    include        fastcgi_params;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
}

Chạy PHP bằng lệnh:

C:\php\php-cgi.exe -b 127.0.0.1:9000

Kiểm tra bằng cách tạo một file C:\nginx\www\index.php với nội dung:

<?php
phpinfo();
?>

Truy cập http://localhost/index.php để xem thông tin PHP.

Cài Đặt MySQL

Tải MySQL từ https://dev.mysql.com/downloads/mysql/ và cài đặt theo chế độ Standalone. Sau khi cài đặt xong, mở MySQL Command Line Client và nhập mật khẩu root để đăng nhập. Kiểm tra kết nối bằng lệnh:

SHOW DATABASES;

Để kiểm tra kết nối MySQL với PHP, tạo file test_db.php trong C:\nginx\www với nội dung:

<?php
$conn = new mysqli("localhost", "root", "password", "mysql");
if ($conn->connect_error) {
    die("Kết nối thất bại: " . $conn->connect_error);
}
echo "Kết nối thành công!";
?>

Truy cập http://localhost/test_db.php để kiểm tra kết quả.

So Sánh Cài Đặt Thủ Công Với Docker

So Sánh Cài Đặt Nginx Thủ Công Với Docker

Hiệu Suất Và Tài Nguyên Tiêu Thụ

Docker ngốn nhiều tài nguyên hơn vì mỗi container chạy trên một môi trường ảo hóa nhẹ. Điều này có nghĩa là RAM, CPU và dung lượng ổ cứng bị tiêu thụ nhiều hơn so với cài đặt trực tiếp. Trong khi đó, khi cài đặt thủ công, các dịch vụ chạy trực tiếp trên hệ điều hành giúp tiết kiệm tài nguyên và cải thiện hiệu suất.

Tiêu chíDocker 🐳Cài đặt trực tiếp 🖥️
Bộ nhớ RAMNgốn nhiều RAM hơn do chạy container và daemon của Docker.Ít tốn RAM hơn vì chạy trực tiếp trên hệ thống.
CPU UsageTiêu tốn nhiều CPU hơn khi chạy nhiều container.Ít tốn CPU hơn vì không có lớp trung gian.
Ổ cứng (Disk I/O)Docker lưu trữ image, container logs nên tốn nhiều dung lượng.Không tốn nhiều dung lượng ngoài file cài đặt.
Tốc độ khởi độngChậm hơn vì phải chạy container, đặc biệt với nhiều dịch vụ.Nhanh hơn vì chạy trực tiếp trên hệ điều hành.

👉 Nhận xét:

  • Nếu bạn cần hiệu suất cao và ít tiêu tốn tài nguyên, cài đặt trực tiếp tốt hơn.
  • Nếu bạn cần môi trường linh hoạt, dễ quản lý, thì Docker vẫn là lựa chọn tốt.

Quản Lý Và Cấu Hình

Sử dụng Docker giúp việc quản lý môi trường phát triển trở nên dễ dàng hơn. Bạn có thể tạo một file docker-compose.yml để khởi động toàn bộ hệ thống chỉ với một lệnh. Ngược lại, cài đặt thủ công yêu cầu cấu hình từng thành phần riêng lẻ và có thể mất nhiều thời gian hơn nếu cần thay đổi phiên bản PHP hoặc MySQL.

Tiêu chíDocker 🐳Cài đặt trực tiếp 🖥️
Cài đặt & Cấu hìnhDễ dàng với docker-compose.yml. Chỉ cần một lệnh để chạy toàn bộ stack.Cần cài đặt từng thành phần và tự cấu hình.
Tính linh hoạtDễ thay đổi phiên bản của PHP, MySQL bằng Dockerfile.Khó nâng cấp hoặc thay đổi phiên bản.
Quản lý serviceDễ dàng quản lý container với Docker CLI (docker ps, docker stop).Phải quản lý từng service riêng lẻ (Nginx, PHP, MySQL).
Khả năng di chuyểnChạy được trên bất kỳ hệ thống nào hỗ trợ Docker.Phụ thuộc vào cấu hình của máy Windows.

👉 Nhận xét:

  • Nếu bạn cần môi trường linh hoạt, dễ di chuyển thì Docker là tốt nhất.
  • Nếu bạn chỉ chạy cục bộ trên Windows thì cài đặt thủ công dễ dàng hơn.

Bảo Mật

Docker cách ly các container với hệ điều hành chính, giúp bảo mật tốt hơn. Các container chạy với quyền hạn riêng biệt, tránh rủi ro khi bị tấn công. Trong khi đó, cài đặt trực tiếp có thể tiềm ẩn nguy cơ bảo mật nếu không cấu hình đúng cách.

Tiêu chíDocker 🐳Cài đặt trực tiếp 🖥️
Tính bảo mậtMỗi container cách ly với hệ thống, bảo mật tốt hơn.Dễ bị tấn công hơn nếu không cấu hình kỹ.
Quản lý quyềnCó thể chạy với user non-root để hạn chế quyền.Dễ bị lỗi nếu chạy với quyền admin.

👉 Nhận xét:

  • Nếu bạn chạy production hoặc nhiều môi trường, Docker bảo mật tốt hơn.
  • Nếu chỉ chạy local, bảo mật không quá quan trọng.

Khi Nào Nên Dùng Docker? Khi Nào Nên Cài Đặt Thủ Công?

Nếu bạn cần môi trường đồng nhất, dễ triển khai trên nhiều hệ thống hoặc cần chạy nhiều phiên bản PHP, MySQL khác nhau thì Docker là lựa chọn tốt nhất. Nếu bạn chỉ làm việc trên một máy Windows và muốn tối ưu tài nguyên thì cài đặt thủ công là lựa chọn phù hợp.

Cách Tối Ưu Docker Để Giảm Tiêu Hao Tài Nguyên

Nếu bạn muốn dùng Docker nhưng không muốn tiêu tốn quá nhiều tài nguyên, bạn có thể giới hạn RAM và CPU bằng cách chỉnh trong Docker Desktop hoặc chạy lệnh:

docker run --memory=512m --cpus=1 my_container

Ngoài ra, hãy dọn dẹp Docker định kỳ bằng lệnh:

docker system prune -a

Bạn cũng có thể chuyển sang Docker WSL 2 để quản lý tài nguyên hiệu quả hơn.

Kết Luận

Cài đặt Nginx, PHP, MySQL trực tiếp trên Windows giúp tiết kiệm tài nguyên và cải thiện hiệu suất, phù hợp cho các dự án nhỏ và làm việc trên một máy cố định. Trong khi đó, Docker mang lại sự linh hoạt, dễ triển khai và bảo mật cao hơn, phù hợp cho môi trường phát triển lớn và cần tính đồng nhất. Nếu bạn quan tâm đến hiệu suất, cài đặt thủ công sẽ là lựa chọn tối ưu. Nếu bạn muốn đơn giản hóa quá trình quản lý và triển khai, Docker là giải pháp tốt nhất. Tùy vào nhu cầu cụ thể, bạn có thể chọn phương pháp phù hợp để tối ưu hóa công việc của mình.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *