Nginx là webserver được sử dụng rộng rãi bởi các tính năng tuyệt vời của nó. Bạn có thể cài đặt Nginx, PHP và MySQL trên Windows để trải nghiệm.
Nếu như bạn đã chạy webserver ở localhost trên máy tính để thử nghiệm các trang web trên Windows, chắc hẳn bạn đã sử dụng qua Apache thông qua XAMPP, Apache Lounge… Nếu bạn yêu thích Nginx, bạn cũng có thể cài đặt Nginx trên Windows một cách dễ dàng, thậm chí còn dễ hơn cài đặt trên CentOS hay Ubuntu. Nếu bạn chưa từng biết đến Nginx hoặc chưa sử dụng nó, bạn có thể trải nghiệm nó ngay trên Windows của mình.
Bài viết này sẽ hướng dẫn bạn cài đặt Nginx chạy PHP thông qua FastCGI và MySQL trên Windows 7/8/10 một cách dễ dàng nhất. Bạn có thể cài chúng trên ổ đĩa D, E hoặc trên USB tùy thích. Khi bạn cài lại Win hoặc Ghost cũng không sợ mất dữ liệu trên Nginx và MySQL nhé.
Để cho việc truy cập vào các thư mục cài đặt và cấu hình của Nginx, PHP và MySQL, bạn nên tạo một thư mục để chứa tất cả chúng. Ở đây mình sẽ tạo một thư mục là Web trên ổ D, các bạn có thể lưu nó vào USB hoặc bất cứ đâu.
Cài đặt Nginx
Đầu tiên bạn cần phải tải bản Nginx cho Windows và giải nén ra ở bất kỳ đâu mà bạn muốn. Mình sẽ giải nén và đổi tên thư mục thành nginx cho nó dễ nhìn và copy vào D:\Web, bạn sẽ có đường dẫn thư mục của Nginx là D:\Web\nginx.
Bây giờ bạn có thể chạy Nginx bằng cách chạy file nginx.exe trong thư mục D:\Web\nginx. Bạn cũng có thể khởi động Nginx, reload hoặc stop Nginx bằng cách sử dụng lệnh qua cmd.
Để quản lý Nginx bằng lệnh trong cmd, bạn nên đi đến thư mục root của Nginx. Mở Command Prompt hoặc run cmd:
cd /d d:\Web\nginx
Sau khi đã di chuyển đến thư mục root của Nginx, bạn có thể sử dụng các lệnh sau:
start nginx # Khởi động nginx nginx -s stop # Dừng nginx nginx -s quit # Thoát nginx, cái này là thoát hết ứng dụng Nginx đang chạy nginx -s reload # Load lại nginx khi bạn thay đổi cấu hình của Nginx nginx -s reopen # Mở file logs
Sau khi khởi động nginx, bạn hãy vào http://localhost xem sao.
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.Thank you for using nginx.
Cấu hình để Nginx chạy PHP FastCGI trên Windows
Cũng như Linux CentOS hay Ubuntu, bạn có thể chạy PHP thông qua FastCGI bằng giao thức TCP. Để Nginx có thể giao tiếp với PHP thông qua FastCGI bạn cần chỉnh sửa lại cấu hình file nginx.conf.
Mở file nginx.conf trong D:\Web\nginx\conf, tìm đến đoạn này và chính sửa lại như sau:
location / { root html; index index.php index.html index.htm; } location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
- Loại bỏ dấu “#” ở trước mỗi dòng trên.
- Thêm index.php vào “location /“.
- Thay đổi /scripts thành $document_root.
127.0.0.1:9000 là nơi PHP FastCGI sẽ xử lý các file PHP.
Tạo một file phpinfo.php trong thư mục D:\Web\nginx\html với nội dung như sau để test php:
<?php phpinfo(); ?>
Bây giờ, bạn thử start nginx
hoặc nginx -s reload
lại và vào địa chỉ http://localhost/phpinfo.php
để test.
Nếu bạn gặp lỗi 504 Gateway Time-out như này là do bạn chưa cài đặt PHP trên Windows hoặc chưa cấu hình đúng cách. Bạn cần phải cài đặt PHP và cấu hình ở bước tiếp theo.
An error occurred.
Sorry, the page you are looking for is currently unavailable.
Please try again later.If you are the system administrator of this resource then you should check the error log for details.
Faithfully yours, nginx.
Cài đặt PHP trên Windows
Ở đây mình sẽ hướng dẫn bạn cài đặt PHP trên Windows và chạy PHP thông qua CGI/FastCGI trên một địa chỉ TCP như đã cấu hình cho Nginx.
Bạn vào trang PHP cho Windows và download bản PHP mà bạn muốn về máy. Hiện tại đã có phiên bản PHP 7, bạn có thể tải về cài đặt để trải nghiệm cũng được. Ở đây mình sẽ chọn bản PHP 7 VC15 x64 Thread Safe.
- Nếu bạn download bản VC9 thì bạn cần phải cài đặt Visual C++ Redistributable for Visual Studio 2008 SP1 (64 bit hoặc 32 bit).
- Nếu bạn download bản VC11 thì bạn cần phải cài đặt Visual C++ Redistributable for Visual Studio 2012 (64 bit hoặc 32 bit).
- Nếu bạn download bản VC15 thì bạn cần phải cài đặt Visual C++ Redistributable for Visual Studio 2017 (64-bit hoặc 32-bit).
Các bạn tải và cài đặt các bản Visual C++ 32 bit hoặc 64 bit đúng theo bản PHP mà bạn chọn nhé.
Giải nén file ZIP của PHP mà bạn đã download ra một thư mục mới, ở đây mình chọn thư mục php7. Nếu bạn tải bản PHP 5 thì có thể để tên thư mục là php5 (hoặc là download và cài đặt cả hai). Sau đó copy thư mục php7 này vào D:\Web ngang hàng với thư mục root của Nginx để cho dễ quản lý nhé. Sau kgi giải nén và copy, bạn sẽ có thư mục root PHP là D:\Web\php7.
Tạo file php.ini
Để tạo file php.ini cho PHP, bạn vào thư mục root D:\Web\php7, copy file php.ini-production thành một file mới và đổi tên thành php.ini. Đây sẽ là file cấu hình cho PHP của bạn.
Cấu hình để bật các extension cho PHP
Để PHP của bạn hỗ trợ các tính năng hay các function mà bạn muốn để chạy trang web, bạn cần phải bật các extension cho PHP. Các PHP extension hay còn gọi là PHP modules nằm trong thư mục ext, bạn cần phải khai báo nó trong php.ini.
Mở file php.ini và tìm đến dòng sau và xóa dấu “;” ở trước dòng đó:
extension_dir = "ext"
Để bật các extension (modules) cho PHP, tìm đến các dòng ;extension= tương ứng với các module mà bạn muốn bật và xóa dấu “;” ở trước. Ví dụ ở đây mình sẽ bật module php_curl, php_fileinfo, php_gd2, php_mysqli như sau:
extension=php_curl.dll extension=php_fileinfo.dll extension=php_gd2.dll extension=php_mysqli.dll
Như vậy là xong phần tạo file php.ini và bật các module cần thiết cho PHP của bạn. Đừng có quên lưu file php.ini lại nhé.
Cấu hình PHP FastCGI cho Nginx
Trong thư mục root PHP (D:\Web\php7), bạn sẽ nhìn thấy file php-cgi.exe. Bạn cần phải chạy file này trên một địa chỉ TCP giống như đã khai báo ở mục fastcgi_pass là 127.0.0.1:9000.
Mở Command Prompt hoặc run cmd:
set PHP_FCGI_MAX_REQUESTS=0
d:
d:\Web\php7\php-cgi.exe -b 127.0.0.1:9000
Bây giờ vào http://localhost/phpinfo.php để kiểm tra xem nginx đã chạy được PHP chưa.
Cài đặt MySQL trên Windows
MySQL là một trình quản lý cơ sở dữ liệu phổ biến, bạn có thể dễ dàng cài đặt MySQL trên Windows. Bạn cũng có thể cài đặt MariaDB thay vì cài đặt MySQL để có được hiệu suất tốt hơn.
Start và stop nhanh cho Nginx, PHP
Nếu bạn không quen sử dụng lệnh để start và stop Nginx, PHP thì bạn có thể thay thế bằng cách sử dụng các script.
Khi start PHP FastCGI trên TCP, bạn cần phải giữ cửa sổ Command Prompt để PHP có thể làm việc. Nếu bạn muốn ẩn cửa sổ này mà không làm PHP mất kết nối, bạn có thể sử dụng tiện ích RunHiddenConsole.
- Download RunHiddenConsole, giải nén và copy file RunHiddenConsole.exe vào D:\Web.
- Tạo file start-nginx.bat với nội dung như sau:
@ECHO OFF
echo Starting PHP FastCGI…
set PATH=D:\Web\php7;%PATH%
set PHP_FCGI_MAX_REQUESTS=0
D:\Web\RunHiddenConsole.exe D:\Web\php7\php-cgi.exe -b 127.0.0.1:9000
echo .
echo Starting Nginx…
cd /d D:\Web\nginx
start nginx
ping 127.0.0.1 -n 1>NUL
echo .
echo .
echo .
ping 127.0.0.1 >NUL
EXITBạn chỉ cần click file start-nginx.bat để start Nginx và PHP FastCGI.
- Tạo file stop-nginx.bat với nội dung như sau:
@ECHO OFF
echo Stopping Nginx…
taskkill /f /IM nginx.exe
echo Stopping PHP FastCGI…
taskkill /f /IM php-cgi.exe
echo.
EXITChạy file stop-nginx.bat để stop Nginx và PHP FastCGI.
Vậy là bạn đã hoàn thành việc cài đặt Nginx, PHP và MySQL trên Windows một cách dễ dàng. Bây giờ chỉ việc trải nghiệm theo cách của bạn thôi.
Chúc bạn thành công. Nếu có lỗi gì thì để lại bình luận bên dưới mình sẽ trợ giúp nhé.
Hi bạn,
Website mình hiển thị thông báo bên dưới, mình muốn tắt thông báo này thì chỉnh ở đâu, bạn phản hồi giúp mình nhé.
thanks bạn nhiều.
“Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.
Thank you for using nginx.
Sao mình dùng laravel toàn bị lỗi bạn nhỉ. 404 Not Found
Bài viết bị sai 1 chỗ nhé. Tạo file phpinfo.php không phải ở trong D:\Web\nginx\conf mà là D:\Web\nginx\html
Mình nhầm, cám ơn bạn.
cho mình xin cấu hình file nginx.conf đc không? Cái đoạn bỏ dấu # đấy có lẽ mình cấu hình sai vì chạy file php info nó ra trang 404 not found
Bạn bỏ dấu # nhưng phải sửa lại cho đúng mới được.
d:
d:Webphp7php-cgi.exe -b 127.0.0.1:9000
Mình chạy bước này xong oke đâu vào đấy
Nhưng khoảng chừng hơn giờ cái php-cgi lại tự tắt không cách nào khắc phục được cả
Đành quay về dùng apache tiếp!!
Bạn xem lại thử cái cửa sổ cmd còn chạy k bạn???
Mình đã bảo là cứ hơn 1h thì nó lại tự tắt mà bạn
Vâng, bạn test trên máy khác chưa
Mình k có test trong thời gian lâu như thế nên không rõ
Test 5 máy rồi
2 win 7 32 vs64 bit
3 trên 2k8
Mình tìm được một vài thông tin như thế này, bạn thử xem
Bạn thêm lệnh set PHP_FCGI_MAX_REQUESTS=0 trước khi chạy PHP-CGI.exe
set PHP_FCGI_MAX_REQUESTS=0
d:
d:Webphp7php-cgi.exe -b 127.0.0.1:9000
Hoặc làm như hình dưới
http://i.stack.imgur.com/HrIaO.jpg
Control Panel-> System->Advanced System Settings->Advanced->Environment Variables->System Variables-> New -> Variable Name: PHP_FCGI_MAX_REQUESTS & Variable Value: 0
Bạn thử đổi port của PHP-CGI sang port khác với 9000 xem sao nhé
Vâng cảm ơn bạn đã giúp nhiệt tình
Mình thử xem sao!
còn vụ port chắc không ảnh hưởng đâu cậu vì port này mình check thấy chả bị trùng
Vâng, cám ơn bạn đã phản hồi nhé
Đã cập nhật thêm lệnh PHP_FCGI_MAX_REQUESTS vào bài và file bat.