Ecstore windows+Apache單機部署教程
2024-07-09 22:56:41
供稿:網友
聲明:
此方案只限于本地化開發.
ecstore目前不支持windows的生產環境
第一步:下載安裝的文件
Apache下載地址:(httpd-2.2.21-win32-x86-no_ssl.msi)[http://archive.apache.org/dist/httpd/binaries/win32/httpd-2.2.21-win32-x86-no_ssl.msi]
Mysql下載地址(mysql-5.5.19-win32.msi)[http://downloads.mysql.com/archives/mysql-5.5/mysql-5.5.19-win32.msi]
PHP下載地址(php-5.3.5-nts-Win32-VC6-x86.zip)[http://windows.php.net/download/]
mod_fcgid下載地址(mod_fcgid-2.3.6-win32-x86.zip)[http://download.csdn.net/detail/hm446434459/4146487]
mod_fastcgi和mod_fcgid的區別
mod_fcgid是一個跟mod_fastcgi二進制兼容的Apache module。
原來的mod_fastcgi因為實現方式的限制,所以可能會創建了很多不必要的進程,而實際上只需要更少的進程就能處理同樣的請求。
mod_fastcgi的另外一個問題是每一個CGI的多個進程都共享同一個管道文件,所有到同一個fastcgi的通訊都通過這個同名的管道
文件進行, 這樣當出現通訊錯誤的時候,根本不知道正在通訊的是哪一個fastcgi,于是也沒有辦法將這個有問題的進程殺死。
mod_fcgid嘗試使用共享內存來解決這個問題。共享內存里面有當前每個fastcgi進程的信息(包括進程號,進程使用的管道文件名等)
,當 每次嘗試請求fastcgi工作的時候,Apache將會首先在共享內存里面查詢,只有在共享內存里面發現確實沒有足夠的fastcgi進程了
,才會創建 新的進程,這樣可以保證當前創建的進程數量剛好能夠處理客戶的請求。另外,由于每一個fastcgi進程使用不同名稱的管道
文件,所以可以在通訊失敗的時 候知道到底哪個fastcgi進程有問題,而能夠盡早的將其剔除。
程序實現的目標跟mod_fastcgi二進制兼容只要在Apache中用mod_fcgid替換了mod_fastcgi,就能工作。原來的fastcgi程序不用重
新編譯,立即可以工作。
更嚴格的控制進程的創建
Apache中每一個request handler都能通過共享內存知道當前系統fastcgi運行的情況,這樣可以防止過度的創建fastcgi進程,無謂的
消耗系統的資源。
簡單清晰的進程創建速度控制策略
每一個fastcgi都會維護一個計數器,這個計數器在程序創建和程序結束的時候都會增加,而這個計數器每秒會減1,直到0。當計數器的值高于某個 閥值的時候,程序就會停止創建,直到計數器的值回落。這樣既可以保證在請求突然增多的時候能夠快速反應(特別是Apache剛啟動,需要大量創建
程序的時 候),也能保證當fastcgi程序有問題,不斷重起的時候,重起的速度不會過高而消耗過多的系統資源。
自動檢測出有問題的進程
因為每個fastcgi使用自己特定的管道文件,所以在通訊錯誤的時候可以輕易知道哪一個程序出現問題,而盡早的將其剔除。
可移植性
遵照Apache2的習慣,所有可移植的代碼都放到一起,所有不可移植的代碼都在arch目錄下分開存放。當前已經測試過的系統包括 Linux , FreeBSD(已經包含入FreeBSD4和FreeBSD5的port中), Solaris, Windows 2000.
支持FastCGI方式運行的PHP
可以直接支持以FastCGI方式運行的PHP。因為PHP現在還不能保證所有的擴展代碼都是線程安全的,所以并不建議在Apache2的線程模式 下使用mod_php。而以FastCGI方式運行的PHP則是其中一個解決辦法。另外,使用mod_fcgi還可以在不修改任何PHP代碼的情況下,獲 得數據庫連接池的功能,大大減少PHP進程到數據庫的連接。
第二步:安裝文件
在要安裝的磁盤建一個文件夾。為了以后管理方便我們在D盤的根目錄下創建一個WAMP文件夾。 E:/wamp(wamp是 windows+apache+mysql+php的縮寫)。
在wamp文件夾下創建一個www文件夾,用來存放你的PHP網站程序。E:/wamp/www。
安裝Apache服務器,把Apache服務器安裝到 E:/wamp/Apache 文件夾。具體Apache安裝過程可以參考文檔 Apache安裝圖解[http://www.admin10000.com/document/66.html]。
把下載的php-5.3.28-nts-Win32-VC9-x86 解壓到 E:/wamp/PHP 文件夾。
安裝MySql數據庫,把Mysql安裝到 E:/wamp/mysql文件夾。具體mysql安裝過程可以參考文檔 mysql安裝圖解。[http://www.admin10000.com/document/59.html]
第三步:配置 Apache
首先使用文本編輯工具(推薦 EditPlus )打開 D:/WAMP/Apache/conf/httpd.conf
文件,這個文件是Apache的配置文件,下面幾步都是在修改這個文件的內容。要注意
的是修改完 httpd.conf 文件需重新啟動Apache服務,新設置才會生效。
設置監聽端口
打開 httpd.conf 文件后,找到 Listen(大概在第46行),將它后面的數字改為8080,如下:
Listen 8080
這個參數用來設置Apache服務器的監聽端口,一般默認為80。修改為8080 是為了避免
和Windows 2003系統的IIS端口號沖突,如果你沒有啟用IIS,也可以使用默認的80端口
號。
修改網站存放目錄
我們知道Apache默認的網站存放目錄為Apache安裝目錄下的htdocs文件夾。當你更改
網站存放目錄,就必須修改相應的Apache配置。
在配置文件 httpd.conf 中查找 DocumentRoot,將其修改為指向網站目錄的正確文件夾。
我們這里改為
DocumentRoot "E:/wamp/www"
同時,查找 This should be changed to whatever you set DocumentRoot to,在它
下面有行 ,將其修改為你自己配置的DocumentRoot 路徑。我們這里修改
mod_fcgid 配置
我們將下載的 mod_fcgid-2.3.6-win32-x86.zip 壓縮包中的“mod_fcgid.so”文件復制到
apache的“modules”目錄。
打開 httpd.conf 文件,在最后加入如下配置:
LoadModule fcgid_module modules/mod_fcgid.soAddHandler fcgid-script .fcgi .php #php.ini的存放目錄 FcgidInitialEnv PHPRC "E:/wamp/PHP" # 設置PHP_FCGI_MAX_REQUESTS大于或等于FcgidMaxRequestsPerProcess,防止php-cgi進程在處理完所有請求前退出 FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000 #php-cgi每個進程的最大請求數 FcgidMaxRequestsPerProcess 1000 #php-cgi最大的進程數 FcgidMaxProcesses 5 #最大執行時間 FcgidIOTimeout 120 FcgidIdleTimeout 120 #php-cgi的路徑 FcgidWrapper "E:/wamp/PHP/php-cgi.exe" .php AddType application/x-httpd-php .php
修改DocumentRoot 路徑的配置為: Options Indexes FollowSymLinks ExecCGI Order allow,deny Allow from all AllowOverride All
修改目錄首頁文件
在配置文件 httpd.conf 中查找 DirectoryIndex index.html 將其修改成:
DirectoryIndex index.html index.htm index.php
DirectoryIndex 指的是當客戶瀏覽器訪問的路徑是一個目錄時,Apache默認執行的文件。
以我們所修改的為例:當客戶瀏覽器訪問一個目錄時,Apache會去找該目錄下的index.html,
如果沒有再找index.htm,還沒有再找 index.php。都找不到則默認顯示該目錄下的文件列表。
參考文檔:如果防止Apache顯示文件列表[http://www.admin10000.com/document/71.html]
第四步:配置PHP(修改完php.ini記得重新啟動Apache服務)
打開PHP安裝目錄,即E:/wamp/PHP,我們可以看到目錄下有兩個這樣的文件 php.ini-development
和 php.ini-production,第一個是開發使用的配置文件,第二個是生產環境的配置,因為我們是在本機
做開發,所以選擇前者。將php.ini-development復制一份到同目錄下,并改名為 php.ini。這個php.ini
就是當前使用的配置文件,以下幾步都是在修改這個php.ini文件的內容。要注意的是,修改php.ini文件
后需重新啟動Apache服務,新設置才會生效。
指定PHP擴展庫的存放目錄
在Windows下PHP的擴展庫通常以 DLL 形式存放在PHP的ext目錄中。
使用文本工具打開php.ini文件,查找extension_dir = "ext",也就是
在 On windows 下面那一行。把它前面的分號“;”去除掉,改為如下:
extension_dir = "E:/wamp/PHP/ext"
extension_dir 表示PHP擴展庫的具體目錄,以便調用相應的DLL文件。
開啟相應的擴展庫
默認情況下許多PHP的擴展庫都是關閉的,比如默認PHP不支持連接
Mysql數據庫,需開啟相應的擴展庫。這里我們開啟一些常用的擴展庫.
查找 ; Windows Extensions(大概在941行),在它的下面是extension
列表。找到如下擴展:
;extension=php_curl.dll
;extension=php_gd2.dll
;extension=php_mbstring.dll
;extension=php_exif.dll
;extension=php_mysql.dll
;extension=php_mysqli.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_odbc.dll
;extension=php_sockets.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
把以上extension 前面的分號 “;” 去掉。如果你希望加載其它擴展模塊,方法相同,
只要去掉前面的分號即可。
提示1:重啟Apache提示 “unable to load dynamic library......php_curl.dll”,
加載php_curl.dll錯誤。解決方法是拷貝 PHP 目錄下的 libeay32.dll 和
ssleay32.dll 到 windows 目錄或 windows/system32 目錄下,只要是
系統 Path 環境變量里包含的路徑就可以。如果不想拷貝,你也可以直接
把 PHP 路徑放到系統 Path 環境變量里。 右擊我的電腦=>屬性=>高級=>環境變量=>系統變量里有個Path,
雙擊打開,把你的PHP路徑加個分號“;”再前面( ;E:/wamp/PHP ),
添加進去就OK了。重啟Apache不再提示該錯誤。
提示2:Exif 擴展是用來顯示圖片的 exif 信息的,因為該擴展需要 mbstring.dll
支持,所以必須將 extension=php_exif.dll 這一行寫到extension=php_mbstring.dll 的后面
提示3:如果PHP自帶的擴展庫不能滿足你的需要,你可以去 pecl.php.net 查找并
下載你需要的庫。windows用戶可以去 pecl4win.php.net 或者 http://downloads.php.net/pierre/
下載已經編譯好的DLL文件,也可以去http://museum.php.net/php5/ 載PECL集合壓縮包。
提示4:很多人在找php_zip.dll,其實從php5.3開始已經集成了zip擴展,你可以用找到zip擴展的說明。
讓PHP支持短標簽
在 php.ini 配置文件查找 short_open_tag = Off (大概在266行)把它修改成:short_open_tag = On 讓其支持短標簽。
php的代碼一般包含在的標簽內,設置 short_open_tag = On 之后,可以寫成更簡潔的形式:。
配置PHP的Session功能
在使用session功能時,我們必須配置session文件在服務器上的保存目錄。
我們需要為session建立一個可讀寫的目錄,這個目錄最好獨立于網站目錄之外。
這里把目錄上建在了E:/wamp/sessiontmp,然后在 php.ini 配置文件中找
;session.save_path = "/tmp" (大概在1467行),去掉前面的分號“;” ,改為如下:
session.save_path = "E:/wamp/sessiontmp"
配置PHP的文件上傳功能
同session一樣,在使用PHP文件上傳功能時,我們必須要指定一個臨時文件夾以完成文件上傳功能,否則文件上傳功能會失敗。
我們建立一個可讀寫的目錄文件夾 E:/wamp/fileuploadtmp,然后在 php.ini 配置文件中找到
;upload_tmp_dir = (大概875行),修改為:
upload_tmp_dir = "E:/wamp/fileuploadtmp"
PHP默認上傳文件大小不超過2M,要想上傳大于2M的文件,請參考文檔 配置php.ini實現文件上傳功能。[http://www.admin10000.com/document/69.html]
設置時區
在 php.ini 配置文件查找 ;date.timezone = ,去掉前面的分號“;” 改為如下:
date.timezone = PRC
date.timezone是PHP5.1開始新增加的配置參數,用來設置時區。默認date.timezone是被注釋掉的,也就是默認時區是UTC格林威治標準時間。
我們這里改為 date.timezone = PRC(PRC,People’s Republic of China,中華人民共和國),也就是日期使用中國的時區。這樣可以解決時間相差八小時的問題。
第五步:測試
將如下代碼保存為index.php文件,放到E:/wamp/www目錄下面。
第六步:安裝ZendLoader
下載ZendLoader.dll (下載地址 http://pan.baidu.com/s/11lh9H) ,放置在PHP的ext目錄下(推薦)編輯php.ini, 修改為
[Zend.loader]
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
zend_loader.license_path=
zend_extension="E:/wamp/PHP/ext/ZendLoader.dll"
把php.ini拷貝到C:/Windows (如果沒有這步,無法運行加密的)增加環境變量
變量名:PHPRC
變量值:(你PHP安裝路徑):E:/wamp/PHP/ (如何添加環境變量,這里就不解說了)命令窗口 php -v出現
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies說明Zend Guard Loader
沒有運行起來,配置有問題。出現
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies with Zend Guard Loader v3.3, Copyright (c) 1998-2010, by Zend Technologies
說明 Zend Guard Loader成功。
最后一步:ecstore安裝
ecstore ego版本的代碼是有加密的,所以首先要配置解密工具,其次是獲取授權文件,最后才能成功安裝ecstore,具體步驟如下
獲取ecstore源碼安裝包
配置授權文件
解密文件 developer.zl在安裝包中/config/developer.zl下,配置php.ini文件。
;zend_loader.license_path=
zend_loader.license_path=E:/wamp/www/ecstores/config/developer.zl(這個是我的路徑,按照你的路徑配置)
注意:同時運行ecstore1.2與ecstore2.0或者ocs時,請做一下配置,
zend_loader.license_path指向一個目錄,該目錄下同時包含兩個developer.zl文件,一個是1.2,一個是2.0的。
請避免倆developer.zl文件重名,1.2的developer.zl改名為1.x.zl,2.0的developer.zl改名為2.x.zl,ocs的developer.zl改名為ocs.x.zl。
例如:zend_loader.license_path="d:/data/html/www/"
"d:/data/html/www/"目錄下存在ocs.150.zl、ecstore.12.zl、ecsotre.20.zl
重啟Apache
查看phpinfo,看看授權文件是否配置成功
安裝ecstore(dos命令行安裝 和 網頁安裝)
手動安裝采用的是dos命令安裝,這個可以查看文檔[http://ec-os.net/quickstart/notebook/new-project.html],文檔里有具體的安裝操作步驟
網頁安裝是通過網址解析路由來安裝,安裝網址是您網站的域名后跟”index.php/setup“,例如”localhost/ecstore/index.php/setup“