前言
windows Server 2008 R2 下面IIS7.5已經對fastcgi的支援有了很大改進,還在使用PHP-ISAPi模式的朋友可以試一下。
鑒於目前php5.3.1還不能完美的支援主流php系統,不建議大家使用!
windows2008 Server R2下面環境搭建分三種情況,大家可以根據自己的運行需要選擇。
1、 IIS7.5+PHP+Mysql+Wincache 1.0RC
這個環境組合大家已經看出來了 沒有zend。
各個版本分別是:
PHP5.2.17–請注意是非安全執行緒版本 PHP 5.2.17 Non-thread-safe zip package,
MYSQL5.0 x64,
Wincache1.0rc for5.2,這個大家可以去微軟IIS官方下載,他將極大地提高您的系統運行效率!
如果您的伺服器啟動並執行都是開來源程式,不需要zend,強烈建議您使用這個配置!
2、 IIS7.5+PHP+Mysql+Zend+Xcache
此組合版本分別是:
Php-5.2.17-win32-vc6-x86.zip PHP請注意是安全執行緒版本
mysql-essential-5.0.91-winx64.msi
ZendOptimizer3.3.3-windows x86
Xcache1.3 for XCache-1.3.0-php-5.2.17-Win32-VC6-x86.zip
此組合可以完美運行當今主流的PHP系統,但是美中不足的是使用PHP安全執行緒版本無法載入wincache,很遺憾的一點!但是可以用xcache作為補充,但是相比PHP-ISAPI模式已經好多了!
3、 鑒於IIS7.5的新特性,可以根據每個網站的具體情況定製屬於他的專有運行環境!
在iis7.5 fastcgi模式下,IIS官方建議為每個網站設立單獨的應用池,並且每個網站都可以擁有它自己的PHP.ini以及fastcgi.exe.允許在一台主機上運行不同版本的PHP.[1]
[1]以上部分內容引自網路.
[2] Windows 2008 R2 僅有X64版本/Windows 2008有X86和X64版本/Windows 7有X86和X64版本; 以下教程對前面兩個X86版本也能支援,僅需要替換MYSQL對應版本即可.
準備程式
選擇以下這些版本需要注意的是MYSQL在2008R2下可以選擇64位的,PHP的VC9是針對IIS的,VC6針對apache的,安全執行緒和非安全版本本次選擇的是安全執行緒版本, PHP安全執行緒版本無法載入wincache,所以我們用Xcache作為替代,如果想用wincache就選用非安全執行緒版本,
1.mysql-essential-5.0.91-winx64.msi
2.Php-5.2.17-win32-vc6-x86.zip
3.ZendOptimizer-3.3.3-windows-i386.exe
4. Xcache1.3 .2for-php-5.2.17-Win32-VC6-x86.zip
5.phpMyAdmin-3.3.10.-all-languages.zip
安裝配置路徑規劃
MYSQL D:\service\ MYSQL
PHP D:\service\ PHP
Zend D:\service\ Zend
MYSQLdatebase D:\service\ MYSQLdatebase
WEB目錄D:\WEB\ZTGPS
以下教程為完全說明,做過部分最佳化,完全經過測試,主調試環境Windows 2008 R2 SP1伺服器已安裝組件NET.FROMWORK 4+VC2008X64,教程有不當之處歡迎探討.
一、安裝配置MySQL
二、安裝配置IIS7.5
三、安裝配置PHP
四、IIS7.5配置FASTCGI
五、安裝ZendOptimizer
六、Xcache安裝配置
七、網頁壓縮配置
八、配置phpmyadmin
九、EmpireBak v2010 帝國備份
十、靜態化安裝配置十一、其它事項
一、安裝配置MySQL
(1),雙擊 mysql-essential-5.0.91-winx64.msi
NEXT
選擇 Custom 自訂安裝:
Next
點擊"Change"更改MySQL安裝目錄:D:\service\ MYSQL
待檔案複製安裝完畢後,進行MySQL設定介面,單擊Finish:
NEXT
出現以下選擇
選擇DetailedConfiguration(詳細配置):
NEXT
出現以下選擇
選擇MySQL運行模式:Server Machine:
NEXT
出現以下選擇
選擇 MySQL 資料庫預設儲存方式:Non-Transactional Database Only
接則選擇該選項。 NEXT
出現以下選擇
· Manual Setting(人工設定):選擇該選項可以手動設定伺服器並行串連的最大數目。從前面的下拉框中選擇並行串連的數目,如果你期望的數目不在列表中,則在下拉框中輸入最大串連數。
設定 MySQL 最大串連數:一般設定為 128 - 512 之間的整數:
NEXT
出現以下選擇Enable Strict Mode ,這樣MySQL就不會允許細小的語法錯誤。
建議您取消標準模式以減少麻煩。但熟悉MySQL以後,盡量使用標準模式,因為它可以降低有害資料進入資料庫的可能性。
NEXT
出現以下選擇
使用Manual Selected Default Character Set/Collation(字元集對話方塊)來更改 MySQL伺服器的預設字元集.
這裡請選擇你所要的預設字元集,中國大陸就選GBK吧
NEXT
出現以下選擇
要想將MySQL伺服器安裝為服務,並自動啟動,請選中Launch the MySQL Server Automatically選項
Service name 預設mysql就行
Include Bin Directory in windows Path 這個也選上
NEXT
修改設定 root 使用者密碼,注意:不要啟動遠端連線模式!
把Enable root access from remote machines
Create an anonymous account的兩處取消選擇
NEXT install
完成 MySQL 的安裝,會自動啟動 MySQL 服務。
(1)測試MySQL工作是否正常。
開啟cmd命令提示字元視窗,輸入命令:MySQL –u root –p
輸入密碼後,如果能夠正常進入MySQL控制台則說明MySQL安裝正常。
更改MySQL資料庫目錄
a)開啟cmd命令提示字元視窗,輸入命令:net stop MySQL停止MySQL服務運行;
b)開啟D:\ service\MySQL\my.ini
找到:
Datadir = "D:\ service\MySQL\data"
修改為:
Datadir = "D:\Service\ MySQLDatabase"
c)將D:\Service\MySQL\data檔案夾內的內容複寫到D:\Service\MYSQLDatabase;
d)開啟cmd命令提示字元視窗,輸入命令:net start MySQL啟動MySQL服務。
e)重新測試MySQL是否工作正常。
(3)準備LibMySQL動態連結程式庫
將D:\Service\MySQL\bin\目錄下的 libMySQL.dll, libmcrypt.dll, php5ts.dll(如果沒有libmcrypt.dll,php5ts.dll這兩個檔案請到PHP程式目錄下提取) 3個檔案複製到 C:\Windows\System32。
注:my.ini上面“basedir”是指向MySQL的安裝目錄,“datadir”指向MySQL的資料存放目錄。
至此MySQL已經安裝完畢
三、安裝配置PHP
開啟Php-5.2.17-win32-vc6-x86.zip
把php的壓縮包內的檔案解壓到 D:\Service\PHP檔案夾,將php.ini-dist重新命名為php.ini。
開啟 php.ini檔案,
找到:extension_dir = "./"
將其改為;
extension_dir = "D:/Service/PHP/ext"
extension_dir是存放擴充庫(模組)的目錄,也就是PHP用來尋找動態擴充模組的目錄。
找到Post_max-size= 8M
修改為30M
找到:Windows Extensions
在 Windows Extensions下方的動態模組配置中,需要開啟以下模組支援:(去掉模組配置每行前面的;號即可)
extension=php_gd2.dll, GD庫支援,如果不開啟該模組則Discuz!論壇圖片浮水印不能使用。
extension=php_mcrypt.dll,更好的支援phpmyadmin不選的話,會出現“無法載入mcrypt擴充
extension=php_mbstring.dll,開啟mbstring,不選的話用phpMyAdmin會出現紅色提示。
extension=php_mysql.dll, 支援MySQL。
extension=php_pdo.dll,
extension=php_pdo_mysql.dll,
前面的分號去掉,這樣php才可以支援這些擴充,
還要開哪些功能可以以後根據需要再修改。php.ini可以備份,以後重裝系統可以直接用。
8、配置session.save_path路徑
更改session.save_path的路徑為D:/Service/php/tmp (注意有好幾段此文字,請選擇如下圖的目錄位置,此目錄需要手動建立並開放讀寫權限)
session.save_path進階配置及其他說明事項,從php.ini設定檔翻譯而來
你可以使用”N;[MODE;]/path”這樣模式定義該路徑,N是一個整數,表示使用N層深度的子目錄,而不是將所有資料檔案都儲存在一個目錄下。
[MODE;]可選,必須使用8進位數,預設600(=384),表示每個目錄下最多儲存的會話檔案數量。[MODE;]並不會改寫進程的umask。php不會自動建立這些檔案夾結構。可使用ext/session目錄下的mod_files.sh指令碼建立。如果該檔案夾可以被不安全的使用者訪問(比如預設的”/tmp”),那麼將會帶來安全性漏洞。當N>0時自動記憶體回收將會失效,具體參見下面有關垃圾搜集的部分。
如果你伺服器上有多個虛擬機器主機,建議針對每個不同的虛擬機器主機分別設定各自不同的目錄。
至此最基本的session配置就完成了,你只要儲存php.ini,並重啟IIS,即可使用session功能。
其他session配置說明
session.save_handler = ”files”
預設以檔案方式存取session資料,如果想要使用自訂的處理器來存取session資料,比如資料庫,用”user”。
session.use_cookies = 1
是否使用cookies在用戶端儲存會話sessionid,預設為採用cookies
session.use_only_cookies = 0
是否僅僅使用cookie在用戶端儲存會話sessionid,這個選項可以使管理員禁止使用者通過URL來傳遞id,預設為0,如果禁用的話,用戶端如果禁用Cookie將使session無法工作。
session.name = “PHPSESSID”
當做cookie name來使用的session標識名
session.auto_start = 0
是否自動啟動session,預設不啟動,我們知道在使用session功能時,我們基本上在每個php指令碼頭部都會通過session_start()函數來啟動session,如果你啟動這個選項,則在每個指令碼頭部都會自動啟動session,不需要每個指令碼頭部都以session_start()函數啟動session,推薦關閉這個選項,採用預設值。
session.cookie_lifetime = 0
傳遞sessionid的Cookie有效期間(秒),0表示僅在瀏覽器開啟期間有效。
session.gc_probability = 1
session.gc_divisor = 100
定義在每次初始化會話時,啟動記憶體回收程式的機率。計算公式如下:session.gc_probability/session.gc_divisor,比如1/100,表示有1%的機率啟動啟動記憶體回收程式,對會話頁面訪問越頻繁,機率就應當越小。建議值為1/1000~5000。
session.gc_maxlifetime = 1440
設定儲存的session檔案生存期,超過此參數設定秒數後,儲存的資料將被視為'垃圾'並由記憶體回收程式清理。判斷標準是最後訪問資料的時間(對於FAT檔案系統是最後重新整理資料的時間)。如果多個指令碼共用同一個session.save_path目錄但session.gc_maxlifetime不同,將以所有session.gc_maxlifetime指令中的最小值為準。
如果你在session.save_path選項中設定使用子目錄來儲存session資料檔案,記憶體回收程式不會自動啟動,你必須使用自己編寫的shell指令碼、cron項或者其他辦法來執行垃圾搜集。
比如設定”session.gc_maxlifetime=1440″ (24分鐘):
cd /path/to/sessions; find -cmin +24 | xargs rm
以上是一些常用的session配置選項說明,更多的session配置選項說明你可以參考php.ini檔案中的說明。
接下來修改了一些檔案上傳以及記憶體使用量最大限制:
搜尋Resource Limits
找到以下進行修改:
max_execution_time = 30 ; 這裡是每個指令碼啟動並執行最長時間,可以自己修改加長,單位秒。
max_input_time = 60 ; 這裡是每個指令碼可以消耗的時間,單位也是秒。
memory_limit = 128M ; 這裡是指令碼運行允許的最大記憶體,根據自己機器情況自行配置。
搜尋upload_max_filesize
upload_max_filesize = 2M 這裡是上傳檔案的最大許可大小 ,線上上傳的圖片站、論壇等可能需要設定更大的,自行修改。
現在php基本配置完成了,儲存php.ini檔案,並將其複製到C:\Windows\
順便提醒一下別忘記把register_globals = Off修改成register_globals = On。
四、IIS7.5配置FASTCGI
開啟PHP目錄下的php.ini,尋找:extension_dir = "./"
此處為PHP擴充的目錄,檢查是否如下extension_dir ="D:\service\php\ext\"
按圖配置參數:
儲存並關閉!
接下來將PHP掛接到IIS
開啟IIS管理器,找到:“處理常式映射”,開啟如下圖 點擊 添加模組映射:
上圖引用自網路,把可執行檔位置替換成D:\service\php\php-cgi.exe即可.
確定後會提示是否建立FASTCGI應用程式,點擊是.
此時回到IIS功能視圖,找到:“FastCgi設定”,開啟並按圖操作
添加檔案監視和環境變數:PHP_FCGI_MAX_REQUESTS,取值設定為10000:
添加對php.ini的檔案監視可以在修改php配置之後重啟IIS而讓更改即時生效!
進入D:\web\ZTGPS目錄,建立一個phpinfo.php檔案,內容為:
<?php
phpinfo();
?>
如果載入FASTCGI不成功點擊-應用程式集區--然後DefaultAppPool應用池-選擇進階設定
啟用32位應用程式 後面選擇 True
安裝 ZendOptimizer
安裝過程非常友好,也比較簡單,因而此處無截圖說明。但需注意以下幾點:
(1) Zend Optimzer 的安裝目錄要指定為 D:\Service\Zend ;
(2) 在安裝過程中提示 php.ini 的位置是,注意觀察是否為 C:\Windows ,如果不是必須手動指定為 php.ini 的位置 ;也可以按預設,你把剛才配置的 php.ini 複製到 WINDOWS 目錄。 (3) 安裝過程中提示 IIS 網站根目錄的位置,指定為:D:\WEB 也既你儲存網站的總目錄 Zend Optimizer 安裝完成後會自動重啟 IIS 服務,重啟完成後需要再次開啟 IE 瀏覽器視窗, 查看 phpinfo.php 支援資訊,觀察是否包含了 Zend Optimizer 支援資訊,如果沒有,則說 明 Zend Optimizer 沒有安裝成功!
預設安裝完畢以後不不可以直接支援 Zend 加密,需要做特別的設定 ..下面將講解如何配置
Zend,並讓 php 可以支援 返回案頭,在”我的電腦”上面右鍵,點擊”屬性” 然後出現一下視窗,然後點擊右側邊欄的”進階系統設定” 然後再點擊下面的”環境變數”
雙擊開啟編輯 Path 變數視窗, 預設的是這樣的%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMRO
OT%\System32\WindowsPowerShell\v1.0\
然後在後面添加
;D:\service\Zend\lib;D:\service\Zend\lib\Optimizer-3.3.0\php-5.2.x
還可以指定 PHP 和 MYSQL 把支援庫的目錄一併添加 方便使用 PHP –V 來調試 PHP 載入 情況 ;D:\service\MYSQL\bin;D:\service\PHP;D:\service\PHP\ext 添加這行即可(根據自己安裝的檔案路徑自行填寫)
一路確定
重啟系統
想讓變數值生效需要重啟系統的。
注意:如果你的 Zend 版本和 php 版本和我所示範的不同的話,那麼上面的路徑可能會更改,請 時情況修改檔案路徑
現在 php,mysql,fastcgi,zend 配置工作已經完成,如果不出意外的話,那麼現在您的 IIS 7.5 就可 以支援以上環境了 請使用 PHP 探針程式或者 PHPINFO.PHP 查看是否配置成功。如果 OK
能看到如下資訊就行了