- 論壇徽章:
- 0
|
轉自:
http://www.gaojinbo.com/nginx%E4%B8%8Bmagento%E9%85%8D%E7%BD%AE%E4%B8%8E%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96.html
Nginx下Magento配置與性能優(yōu)化
十一月 13th, 2009 Posted in
PHP
| 540次瀏覽
文章目標:能夠成功的使Magento運行于Nginx服務器上,并對Magento的性能進行優(yōu)化。
閱讀前提:對Web服務器配置有一定的經(jīng)驗,知道Nginx和Magento是什么,假設你已經(jīng)在LAMP環(huán)境中安裝過Magento,本文對基礎環(huán)境和Magento的安裝不作介紹, 只介紹 Nginx 下的配置以及性能優(yōu)化。本文所有的配置都是基于Linux環(huán)境,Windows可以參考但不一定適用。
軟件版本:Nginx:0.7.63; PHP:5.2.x; Mysql: 5.0.x; Magento:1.3.2.4
正文:
一 安裝Nginx+PHP+Mysql基礎環(huán)境
本文不重點介紹這個基礎環(huán)境的安裝,請通過Google搜索相關資料,本文假設Nginx+PHP(fastcgi)+Mysql環(huán)境工作正常.
注意事項:PHP版本必須是5.2.x,不能是最新的5.3,不然Magento安裝使用時會有String處理的異常出現(xiàn)。
關于這個問題的討論,參考Magento論壇:
http://www.magentocommerce.com/boards/viewthread/29670/P0/
二 Nginx配置文件(本文重點之一,只列出和Magento相關的,并假設Magento安裝在web根目錄,而不是子目錄內)
server {
listen 80;
server_name www.example.com; #修改為你的服務器名
access_log logs/host.access.log main;
location / {
root /Your/Magento/RootDoc; #修改為你的Magento安裝目錄
index index.php index.html index.htm;
# rewrite ^(/index.php)?/minify/([^/]+)(/.*.(js|css))$ /lib/minify/m.php?f=$3&d=$2 last;
#上面的這條Rewrite規(guī)則是為了性能優(yōu)化,安裝fooman-speedster插件時需要的, 如果你沒有安裝這個插件,請注釋掉這條規(guī)則。
if (-f $request_filename) {
expires 30d;
break;
}
if (!-e $request_filename) {
rewrite ^(.+)$ /index.php last;
}
#上面的兩條Rewrite規(guī)則可以確保Magento在Nginx下完成正常Rewrite工作。
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME /Your/Magento/RootDoc$fastcgi_script_name; #修改為你的Magento目錄夾
include fastcgi_params; #請檢查fastcgi_params文件是否存在, 默認是有的
}
location /app/etc {
deny all;
}
#上面這條規(guī)則禁止訪問/app/etc/目錄夾,防止別人非法讀取配置文件,得到密碼等信息
}
如果你為Magento安裝并使用了SSL證書,請增加下面一個server配置
server {
listen 443;
server_name example.com www.example.com; #同上說明
ssl on; #打開ssl
ssl_certificate /usr/local/nginx/conf/ssl/server.crt; #證書位置,如果有chain證書,把chain證書合并到主證書里
ssl_certificate_key /usr/local/nginx/conf/ssl/server.key; #key位置
#關于證書的配置,以及Chain證書的配置,請參考nginx網(wǎng)站:
http://wiki.nginx.org/NginxHttpSslModule
location / {
root /Your/Magento/Dir; #同上說明
index index.php index.html index.htm;
#rewrite ^(/index.php)?/minify/([^/]+)(/.*.(js|css))$ /lib/minify/m.php?f=$3&d=$2 last; #同上說明
if (-f $request_filename) {
expires 30d;
break;
}
if (!-e $request_filename) {
rewrite ^(.+)$ /index.php last;
}
#同上說明
location /app/etc {
deny all;
}
#同上說明
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param HTTPS on; #注意,這是與80端口不一樣的地方, 沒有這一條,會出現(xiàn)循環(huán)重定向問題
fastcgi_param SCRIPT_FILENAME /your/magento/dir$fastcgi_script_name; #同上說明
include fastcgi_params; #同上說明
}
}
三 Magento性能優(yōu)化(本文重點之二)
Magento是很不錯,但性能一直不行,但優(yōu)化好,完全可以達到實用的目的,采用Nginx服務器本身也是對Magento性能的一種優(yōu)化。
1 開啟gzip進行帶寬優(yōu)化
nginx配置文件, 加入 gzip on;
注意: 如果采用了Apache服務器, 在開啟Gzip優(yōu)化前, 請你注意, 存在一個bug。在蘋果系統(tǒng)Safari4 瀏覽器上會不斷出現(xiàn)異常而無法正確顯示網(wǎng)站。 這個問題也花了我不少時間, 關于更多這個問題的討論,請參考Magento官方論壇:
http://www.magentocommerce.com/boards/viewthread/34925/
, 但在nginx服務器上開啟gzip后卻沒有這個問題出現(xiàn)。
2 安裝fooman-speedster插件
這個插件的官方網(wǎng)址: www.magentocommerce.com/extension/457/fooman-speedster
這個插件的目的是把CSS和JS壓縮和minify,以及把多個CSS,JS文件整合到一個文件里。我本以為目前帶寬的情況下沒有必要進行這類包掛gzip的優(yōu)化。但在真實不斷測試過程中發(fā)現(xiàn)還是很有必要的。 其實最重要的原因不是壓縮,而是文件整合,這樣可以減少瀏覽器端不斷發(fā)出新的連接請求,就像FTP服務器一樣,多個小文件和一個大文件耗時是不一樣的。在沒有緩存的情況下,會發(fā)現(xiàn)第一次打開Magento比較慢, 打開后就比較快了。如果你安裝了這個插件, 這一情況將得到很大的改善。
安裝好這個插件后,需要在nginx配置里增加下面這條rewrite規(guī)則:
rewrite ^(/index.php)?/minify/([^/]+)(/.*.(js|css))$ /lib/minify/m.php?f=$3&d=$2 last;
請注意這條規(guī)則的位置, 以及請注意這條規(guī)則和官方不一樣,官方的是因為magento論壇格式轉換而出現(xiàn)了一個“;”錯誤。
3 PHP優(yōu)化
正常就是zend optimizer, APC, eAccelerator, xcache
官方優(yōu)化文檔里面測試比較并推薦了eAccelerator,但文檔里面沒有提到xcache,而我選擇了Xcache, 原因是有admin界面,可以觀察并調整配置。 個人感覺都一樣, 上一個就行。
安裝配置很簡單, 參考:
http://xcache.lighttpd.net/
4 Mysql優(yōu)化
由于Magento采用了InnoDB核,所以Mysql優(yōu)化還是有必要的, 主要是根據(jù)服務器具體情況修改參數(shù),參考Magento官方建議:
http://www.magentocommerce.com/blog/comments/performance-is-key-notes-on-magentos-performance/
5 將magento的cache和session文件夾mount到內存里, 提高讀取cache和session的速度
mount -t tmpfs -o size=256M,mode=0777 tmpfs /var/html/var/cache/
mount -t tmpfs -o size=64M,mode=0777 tmpfs /var/html/var/session/
#注意修改為你的文件夾路徑,為了能夠重啟后生效,請在/etc/fstab文件里加入
tmpfs /var/html/var/cache/ tmpfs size=256,mode=0777 0 0
tmpfs /var/html/var/session/ tmpfs size=64,mode=0777 0 0
6 開啟Magento后臺里面的cache功能
這個對性能的提高很重要,不需要重新分析那些xml配置文件,一些模板文件, 但請注意,開發(fā)過程中不要開啟這個功能,不然不能即時看到更新, 生產(chǎn)系統(tǒng)一定要開啟。
由于Magento自帶的Compile功能還是Beta版,目前發(fā)現(xiàn)開啟后,Magento Connect 和 AW_Blog有bug出現(xiàn),由于是Beta建議生產(chǎn)系統(tǒng)中不要開啟,避免不必要的異常出現(xiàn)。
通過采用Nginx服務器和上面的6點優(yōu)化,Magento的性能完全沒有問題, Demo網(wǎng)站: www.tomsbedding.com , Demo網(wǎng)站服務器采用的是 Linode.
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/32889/showart_2178768.html |
|