WNMP

      在〈WNMP〉中尚無留言

WAMP (Windows + Apache + MySQL + PHP) 是 Windows  系統下常使用的組合,但因幾個原因不再使用 Apache了。

1. Apache 愈來愈笨重,且連線數都過200時就卡卡的,而 Nginx 效能極佳,就算有1000 多個連線都極為穩定。
2. Nginx 具有反向代理伺服器的功能,但 Apache 沒有。
3. WAMP 所搭配的 MySQL 都是較舊的版本,若又自行安裝新版的 MySQL,常讓使用者在調配 port 時搞的暈頭轉向,因此不再使用 WAMP 了,而是自行安裝新版的 MySQL。

WNMP 為 Windows + Nginx + MySQL + PHP 的縮寫。此篇介紹在 Windows 下手動安裝 Nginx,再手動安裝 PHP,至於手動安裝 MysQL 請參照 http://mahaljsp.asuscomm.com/mysql_win_install/

下載Nginx

https://nginx.org/en/download.html,解壓縮後,將 nginx-1.25.2 複製到 server 目錄下,並改名為 nginx

啟動與停止

進入 dos 命令提示視窗,執行如下指令

d:
cd \server\nginx
start nginx #手動啟動 nginx
nginx -s stop #手動停止 nginx

測試

在瀏覽器網址輸入 http://localhost 即可看到網頁。

開機自啟 Nginx

上述 “nginx start” 是手動啟動 Nginx,每次電腦重新開機都要手動輸入一遍,是很煩人的。

要讓 Nginx 開機後自動啟動,需使用 winsw 將 Nginx 移到系統的背景服務。請到  http://repo.jenkins-ci.org/releases/com/sun/winsw/winsw/2.9.0/ 選擇 winsw-2.9.0-bin.exe 。安裝時要求下載 .netFramework 3.5,請選擇下載並安裝。

將 winsw-2.9.0-bin.exe copy  到 nginx 目錄下,並改名為 winsw.exe

在 nginx 下新增 winsw.xml,內容如下

<?xml version="1.0" encoding="UTF-8" ?>
<service>
    <id>Nginx</id>
    <name>Nginx</name>
    <description>本服務用於加載 Nginx 服務</description>
    <logpath>C:\Users\thomas\Downloads\nginx\logs</logpath>
    <executable>nginx.exe</executable>
    <stopexecutable>nginx.exe</stopexecutable>
    <stopargument>-s</stopargument>
    <stopargument>stop</stopargument>
    <logmode>rotate</logmode>
</service>

安裝到背景服務

系統管理員身份開啟 dos 視窗,使用如下指令安裝到背景服務

安裝到背景服務
winsw.exe install

移除背景服務
winsw.exe uninstall

背景服務開啟及關閉

安裝到背景服數後,要重新開機才會自動啟動。若不想重新開機而是要手動開啟或關閉背景服務,需使用系統管理員身份開啟 dos 視窗,執行如下指令

net start nginx #開啟背景服務
net stop nginx #關閉背景服務

下載php

https://windows.php.net/download/ 選最新版本 x64 Thread Safe的版本,解壓縮到 d:\server,並將目錄改為 php。

環境變數 path 新增 d:\server\php

php 設定

將 php.ini-production copy 成 php.ini, 然後在最後面新增如下設定

extension_dir = "d:\server\php\ext"
extension=php_mysqli.dll
extension=php_openssl.dll
extension=php_mbstring.dll
extension=php_pdo_mysql.dll
max_execution_time = 300
memory_limit = 512M
post_max_size = 20M 
upload_max_filesize = 20M
date.timezone = Asia/Taipei

todo

手動啟動 php

請在 dos 下執行如下指令

d:
cd \server\php
php-cgi.exe -b 127.0.0.1:9000

執行後游標就會消失不能再輸入任何指令,這並不是掛掉,而是在背景開始執行了。

防火牆

雖然 php 是使用 127.0.0.1:9000,但防火牆還是要開啟 9000 port。否則會出現 “403 forbidden” 的錯誤

自動啟動 php

使用Windows 系統管理工具裏的工作排程建立基本工作,

名稱         : php
程式碼     : d:\server\php\php-cgi.exe
新增引數 : “-b 127.0.0.1:9000”

最後在 php 點二下,內容裏的 “不論使用者登入與否均執行” 請打勾。

Nginx 設定

d:\server\nginx\conf\nginx.conf 修改成如下

worker_processes  8;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
	client_max_body_size 20m;
	server {
		listen       80;
		server_name ~.*;
		root d:/server/web;
                add_header X-Frame-Options SAMEORIGIN;#禁止網頁被內崁
		index index.php;

		location ~* \.(ico|css|js|gif|jpe?g|png|ogg|ogv|svg|svgz|eot|otf|woff)(\?.+)?$ {
				expires max;
				log_not_found off;
		}
		location / {
				try_files $uri $uri/ /index.php?$args;
		}
		location ~* \.php$ {
				fastcgi_pass 127.0.0.1:9000;
				fastcgi_index index.php;
				fastcgi_split_path_info ^(.+\.php)(.*)$;
				include fastcgi_params;
				fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		}
		error_page   500 502 503 504  /50x.html;
		location = /50x.html {
			root   html;
		}
	}
}

記得在 d:\server 下新增 web 目錄,此為網頁根目錄。然後使用系統管理員身份開啟 dos,執行如下指令

net stop nginx
net start nginx

測試

在 d:\server\web 新增 info.php,代碼如下

<?php
phpinfo();
?>

然後在瀏覽器輸入 http://localhost/info.php 即可看到網頁

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *