安裝 Windows + Nginx + PHP + MariaDB 環境
網頁開發在 Windows 作業系統中安裝 PHP 開發環境,最簡單的方法就是使用集成的 WAMP 安裝工具,這樣可以一次性完成環境配置。 過去,Apache + PHP + MySQL 幾乎是開發 PHP 網頁的標準配備,因此出現了很多集成的安裝工具,例如:XAMPP、WampServer、AppServ。 儘管這些工具提供了便利性,但同時也有很多缺點,例如:
- 容易導致使用者對 Apache、PHP 和 MySQL 之間的關聯性理解不足,從而錯過了學習許多重要知識的機會。
- 不容易單獨更新某個軟體的版本,每個軟體的版本更新都受到安裝工具的限制。
- 在實際部署網站時,這些集成工具很少被使用。
因此,本文將不採用這類工具進行環境設置。而是選擇每個軟體個別安裝。 本文安裝的軟體組合為 Nginx + PHP + MariaDB,這是我自己常用的組合。當然,還有其他優秀的選擇,如 Apache、IIS 或 MySQL。
開啟隱藏檔及顯示副檔名
Windows 預設會隱藏副檔名及隱藏檔,但在程式開發之前,建議先把它打開顯示。開啟任一資料夾,點選上方 ⋯ > 選項,開啟資料夾選項,點選檢視並取消勾選隱藏已知檔案類型的副檔名,及選取顯示隱藏的檔案、資料夾及磁碟機,最後點選套用即可。
安裝 Nginx
本文安裝目錄為:C:\Web\nginx (可自行調整)。
-
STEP 1
點擊下方連結進入官網,並點選 Stable version 中的 nginx/Windows-1.22.1 進行下載。
-
STEP 2
將下載完成的檔案解壓縮,並放至到 C:\Web\nginx 目錄。
-
STEP 3
打開命令提示字元 (CMD),並使用以下指令啟動 Nginx。
// 啟動 C:\Web\nginx\nginx.exe -p C:\Web\nginx // 其他指令 // 檢查設定檔有無錯誤 nginx.exe -t // 停止 nginx.exe -s stop
啟動後,CMD 視窗並不會關閉,也無法輸入其他指令,也沒辦法用 Ctrl + C 關閉視窗。 如果要停止 Nginx,可以另外再開一個 CMD 並輸入停止指令 (指令:nginx.exe -s stop),或者直接在工作管理員刪除 Nginx 行程即可。 我知道這樣的執行方式有點麻煩,後續我會展示更簡單的啟動方式。
-
STEP 4
打開瀏覽器,網址輸入 http://localhost,如果設定無誤並正確啟動的話,就能看到以下畫面,即表示 Nginx 安裝完成。
安裝 PHP
本文安裝目錄為:C:\Web\php (可自行調整)。
-
STEP 1
新版本的 PHP 是使用 VS15 或 VS16 建構的,安裝之前需要先安裝 Microsoft Visual C++ 可轉散發套件。 點擊下方連結進入官網下載安裝檔,並進行安裝,基本上安裝過程也沒有什麼選項,直接安裝應不會有什麼問題。
-
STEP 2
接下來就可以安裝 PHP 了,點擊下方連結進入官網,並點選 VS16 x64 Non Thread Safe 中的 Zip 進行下載。
有關 Non Thread Safe 與 Thread Safe 版本的差異,在後續章節會有進一步的說明,請參考以下網址。
-
STEP 3
將下載完成的檔案解壓縮,並放至到 C:\Web\php 目錄。將 php.ini-development,更名為 php.ini,這個檔案就是 PHP 的設定檔,可以直接用記事本開啟編輯。
設定檔先修改 display_errors 及 date.timezone 兩個參數,其他設定都先使用預設值即可,後續會再另外一篇文章詳細說明。
; 預設應該就是 On,確認一下即可。 display_errors = On ; 記得把前面的分號(;)移除,分號表示註解。 date.timezone = Asia/Taipei
-
STEP 4
打開命令提示字元 (CMD),並使用以下指令啟動 PHP FastCGI。
// 啟動 C:\Web\php\php-cgi.exe -b 127.0.0.1:9000
啟動後,CMD 視窗並不會關閉,也無法輸入其他指令,要關閉 FastCGI 的話,可以直接按 Ctrl + C 退出就可以了。
-
STEP 5
接下來,需要修改 Nginx 設定檔,讓 Nginx 將 HTTP 請求轉發給 PHP FastCGI 處理。使用記事本開啟 C:\Web\nginx\conf\nginx.conf 檔案,並根據以下內容進行修改。修改完成後,記得重啟 Nginx 服務。
#user nobody; worker_processes 1; error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { ... (省略) ... server { listen 80; server_name localhost; root C:/Web/nginx/html; # 網頁預設目錄 charset utf-8; location / { index index.php index.html index.htm; } ... (省略) ... location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; # 必需與 php-cgi.exe -b 參數後面的 address:port 相同 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } ... (省略) ... } }
# 字號開頭的為註解,沒有任何作用。
-
STEP 6
接下來撰寫一個簡單的 PHP 程式測試。開啟記事本,輸入以下程式碼,並使用檔名 index.php 存檔,最後將檔案放到 C:\Web\nginx\html 目錄底下。
<?php phpinfo();
-
STEP 7
打開瀏覽器,網址輸入 http://localhost/,如果設定無誤並正確啟動的話,就能看到以下畫面,即表示 PHP 及 Nginx 都安裝完成,並且設定無誤。
安裝 MariaDB
本文安裝目錄為:C:\Program Files\MariaDB 10.6\ (可自行調整)。
-
STEP 1
點擊下方連結進入官網,並根據下圖選項選擇安裝檔,進行下載。
-
STEP 2
執行安裝檔,並點擊Next按鈕。
-
STEP 3
勾選 I accept the term in the License Agreement,並點擊 Next 按鈕。
-
STEP 4
根據需求調整,也可以直接用預設就好,完成後點擊Next按鈕。
-
STEP 5
輸入 root 密碼,勾選 Enable access from remote machines for 'root' user 及 Use UTF8 as default server's character set,最後點擊 Next 按鈕。
-
STEP 6
根據需求調整,建議直接用預設就好,完成後點擊Next按鈕。
-
STEP 7
直接點擊 Install 按鈕,安裝完成後,點擊 Finish 按鈕。
-
STEP 8
安裝完成後,可以使用 HeidiSQL 測試看看,這是安裝 MariaDB 資料庫附加安裝的軟體。 點擊左下的新增按鈕,再右邊 Library 選擇 libmysql.dll,並輸入密碼,最後點擊開啟按鈕。
-
STEP 9
正常的話,您應該能看到下圖畫面,表示資料庫已經安裝完成了。
-
STEP 10
MariaDB 安裝完成後,服務就會自動啟動了,如果要手動啟動閉或停止資料庫服務,可以打開命令提示字元 (CMD),並使用以下指令。
// 啟動 net start MariaDB // 停止 net stop MariaDB
製作 bat 檔
安裝完成後,需要透過指令來啟動及關閉各項服務,為了方便使用,我們可以將這些指令製作成 bat 檔,並讓這些服務可以在背景執行。 要在命令提示字元 (CMD) 下,讓指令背景執行有很多種方式,我覺得比較簡單的方式是使用 RunHiddenConsole 工具,以下有兩個載點,擇一下載即可。
下載完成後,建立一個新的資料夾,並將 RunHiddenConsole.exe 複製到資料夾中。 在資料夾中建立 start.bat、stop.bat 及 restart.bat 三個檔案,檔案內容如下。
start.bat
@ECHO OFF
set PHP_HOME=C:\Web\php
set NGINX_HOME=C:\Web\nginx
ECHO Starting PHP FastCGI...
RunHiddenConsole.exe %PHP_HOME%\php-cgi.exe -b 127.0.0.1:9000
ECHO Starting NGINX
RunHiddenConsole.exe %NGINX_HOME%\nginx.exe -p %NGINX_HOME%
popd
EXIT /b
stop.bat
@ECHO OFF
echo Stopping nginx...
taskkill /f /IM nginx.exe
echo Stopping PHP FastCGI...
taskkill /f /IM php-cgi.exe
EXIT /b
restart.bat
@ECHO OFF
call stop.bat
call start.bat
EXIT /b
完成後,只要點兩下 start.bat 檔,就能啟動 Nginx、PHP FastCGI 及 MariaDB 服務,同理要關閉服務,就點兩下 stop.bat 檔。
常用目錄及檔案
Nginx
- [Nginx 目錄]\conf\nginx.conf
- Nginx 設定檔。
- [Nginx 目錄]\html\access.log
- 存取紀錄 Log 檔,如果有使用者連入您的網站,這邊都會有紀錄。
- [Nginx 目錄]\logs\error.log
- 錯誤紀錄 Log 檔,網頁伺服器產生的錯誤訊息。
- [Nginx 目錄]\html\
- 預設的網頁存放路徑,未來您寫的 HTML、CSS、JavaScript、PHP... 都放在這裡。
- [Nginx 目錄]\ngxin.exe
- Nginx 執行檔。
PHP
- [PHP 目錄]\php.ini
- PHP 設定檔。
- [PHP 目錄]\php.exe
- PHP 執行檔。
- [PHP 目錄]\php-cgi.exe
- PHP CGI 執行檔。
- [PHP 目錄]\ext\
- PHP 擴展庫 (extension) 存放目錄。
MariaDB
- [MariaDB 目錄]\data\
- 資料庫實體檔案儲存路徑。
- [MariaDB 目錄]\data\my.ini
- 資料庫設定檔。
1 則留言
C:\Web\php\php-cgi.exe -b 127.0.0.1:9000 執行後出現
Cannot bind/listen socket - [9] Bad file descriptor.
Couldn't create FastCGI listen socket on port 127.0.0.1:9000
沒有找到解決方法
謝謝