My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
index  

AceLNMP
Updated Nov 10, 2010 by hide1h...@gmail.com

AceLNMP 1.8

檔案簡介

AceLNMP是一個基於CentOS系統的自動安裝Shell Script,主要都是以各軟體官方釋出最新的穩定版本為主,目前主要軟體的版本為NGiNX 0.8.53、MySQL 5.1.52、PHP 5.3.3。

什麼是LNMP? 就是Linux + NGiNX + MySQL + PHP的一個網站開發環境,本檔案僅適合於紅帽或Fedora(好像是廢話)或CentOS系列的Linux,其他Linux系統請參考acelnmp.sh的內容分別安裝軟體。 :D

其他Debian、Gentoo、Slackware、Ubuntu之類的當然也很牛,不過我比較習慣玩帽子,而VPS的主機商大多提供的都會有CentOS,有興趣學習CentOS的先看看維基的介紹:$ 對於Linux新手,鳥哥的Linux私房菜是個入門的好選擇。 (Y)

更新歷史

2009/10/28 – 開始研究自動安裝腳本
2009/11/01 – 成功安裝在Yourwebhoster.eu的OpenVZ規格 VPS
2009/11/11 – 成功安裝在RapidVPS.com的XEN規格VPS
2009/11/12 – 成功安裝在1xen.co.uk的XEN規格VPS
2009/11/14 – 成功安裝在HostingInside.com的OpenVZ規格VPS

2009/11/15 – 公佈AceLNMP 1.0
2009/11/16 – 成功安裝在servainet.com的XEN規格VPS
2009/11/17 – 新增安裝ZendOptimizer的安裝方法
2009/11/25 – NGiNX更新到0.7.64
2009/12/03 – phpMyAdmin更新到3.2.4
2009/12/15 – MySQL更新到5.1.41
2010/09/21 – 更新AceLNMP 1.5(更新一大堆 :kao )

2010/10/15 – MySQL更新到5.1.51(修正5.1.50版的DDOS疑慮)
2010/11/09 – 更新粉多~ MySQL更新到5.1.52、NGiNX更新到0.8.53、PHP更新到5.3.3、phpMyAdmin更新到3.3.8
2010/11/10 – 修正幾個ln錯誤的連結

本檔案參考了以下網站,非常感謝他們提供的資訊 :P

簡體中文

Nginx 的中文維基
LNMP-Linux下Nginx+PHP+MySQL+phpMyAdmin+eAcelerator一鍵安裝包 – Licess’s Blog
最新Linux下的Nginx+MySQL+PHP+Memcache+Vsftpd一鍵安裝包 | 貓言貓語
瘋人醉語 ? Blog Archive ? LNMP-LNMPz-最新Linux下的Nginx+MySQL+PHP+phpMyAdmin+eAcelerator+Zend Optimizer一鍵安裝包

LNMP Debian/Ubuntu下Nginx+MySQL+PHP+phpMyAdmin+Zend一鍵安裝包beta發佈 – VPS偵探
Nginx 0.8.x + PHP 5.2.10(FastCGI)搭建勝過Apache十倍的Web服務器(第5版)[原創] – 回憶未來[張宴] – 服務器系統架構與底層研發
Nginx 中文網
Nginx使用幫助

英文

NGiNX WiKi

nginx Web Server Tutorials
Install NGINX (better than Apache or Lighttpd) – VPS Bible Pt 11 – GUVNR
Setup WordPress on NGINX (FURLs & Cache) – VPS Bible Pt 13 – GUVNR
Nginx – VPSLink Wiki
Virtual Private Server Life: NGINX, PHP-CGI, SPAWN-FCI, FTP, VHOSTS, MYSQL | centos-fedora-redhat
howto: nginx with php and Passenger (mod_rails) at once | Matejunkie
Very low memory VPS Linux for Rails | Ruby, Rails, OSX and Linux fun

Perfect Setup: Ubuntu Hardy+Nginx+MySQL5+PHP5+Wordress | MENSK Technologies Corporation
Using Nginx as a Reverse Proxy to Get the Most Out of Your VPS. | Ubuntu Geek

使用上有任何問題可留下錯誤訊息或附上記錄檔,我有空可以幫忙檢查,目前只碰過如果記憶體太少的時候,編譯MySQL時會發生錯誤,這個需要請主機商幫忙暫時加大記憶體。 :|

範例:

iProber PHP探針 : http://gy.la/iProber.php

PHPINFO : http://gy.la/phpinfo.php
PHP Benchmark : http://gy.la/php-benchmark.php

裝在 HostingInside 的 htop 結果,吃了 82 MB 記憶體。

安裝介紹

安裝步驟1. 首先下載AceLNMP安裝包

cd /usr/src
 wget http://acelnmp.googlecode.com/files/acelnmp_1.8.zip 

unzip acelnmp_1.8.zip cd acelnmp

下載LNMP環境所需的檔案

主機在美國請服用這帖

chmod +x download_us.sh
 ./download_us.sh

主機在台灣請服用這帖

chmod +x download_tw.sh
 ./download_tw.sh

主機在其他地方? 不論你在哪都有GOOGLE吧!

chmod +x download_googlecode.sh
 ./download_googlecode.sh

下載完畢之後先檢查一下檔案是不是都在

另外我在可愛的Googlecode上面也開了一個AceLNMP專案,檔案也同步放在上面,還有特別要注意的是如果SSH連線到主機時跑很慢或是不太順暢的,請先執行下列指令先安裝必須的套件再開始安裝AceLNMP :kao

yum -y remove httpd mysql php vsftpd
 yum -y install automake autoconf bison bzip2 bzip2-devel curl curl-devel e2fsprogs e2fsprogs-devel flex fonts-chinese freetype freetype-devel gcc gcc-c++ gd gd-devel gettext glib2 glib2-devel gzip libidn libidn-devel libjpeg libjpeg-devel libpng libpng-devel libtool libtool-libs libxml2 libxml2-devel libXpm libXpm-devel libxslt libxslt-devel krb5-devel make ncurses ncurses-devel patch re2c openssl openssl-devel sendmail tar t1lib t1lib-devel unzip wget zlib zlib-devel
 yum update -y && yum clean packages

安裝步驟2. 開始安裝AceLNMP(請記得開啟你的SSH連線軟體紀錄的功能,如果有問題也可以方便抓) (H)

chmod +x acelnmp.sh
 ./acelnmp.sh

安裝步驟3. acelnmp.sh剛開始只要輸入你的域名,再來就是全自動化的編譯+安裝,大約需要20~30分鐘才會跑完,視VPS的硬體規格而定。 :pu

安裝步驟4. 跑完acelnmp.sh之後進入MySQL Shell增加phpMyAdmin關聯功能

service mysql restart
 /usr/local/mysql/bin/mysql -u root -proot
 create database phpmyadmin;
 FLUSH PRIVILEGES;
 USE phpmyadmin;
 quit;
 /usr/local/mysql/bin/mysql -u root -proot phpmyadmin < /web/www/phpmyadmin/scripts/create_tables.sql

再修改MySQL ROOT帳號的密碼,預設為root / root

---

安裝步驟5. 最後執行NGiNX來打開探針或是phpMyAdmin看看有沒有問題吧~ :D

service nginx restart
 service php-fpm restart

一切都OK之後,完工~ 恭喜你的LNMP環境完成了,結束囉! :P 完工~

cd /usr/src/
 rm -rf acelnmp*

日後需要更新NGiNX的時候只要先下這個指令再編譯安裝NGiNX好就可以啟動新版的NGiNX而且網站不會中斷 (Y)

kill -HUP cat /var/run/nginx.pid

---

NGiNX 安裝資料夾 : /usr/local/nginx
MySQL 安裝資料夾 : /usr/local/mysql
PHP 安裝資料夾 : /usr/local/php
網站資料夾 : /web/www
ImageMagick程序路徑 : /usr/local/bin/
ImageMagick 轉換程序路徑 : /usr/local/bin/convert

MySQL 設定檔 : /etc/my.cnf
NGiNX 設定檔 : /usr/local/nginx/conf/nginx.conf
FastCGI 設定檔 : /usr/local/php/etc/php-fpm.conf
PHP 設定檔 : /usr/local/php/etc/php.ini

NGiNX 記錄檔 : /var/log/nginx-error.log
FastCGI記錄檔 : /var/log/php-fpm.log

MySQL記錄檔 : /var/log/mysql.log

phpMyAdmin : http://的域名/phpmyadmin/
iProber PHP 探針 : http://的域名/iProber.php
PHPINFO : http://的域名/phpinfo.php
PHP Benchmark : http://的域名/php-benchmark.php

---

備註1:調整NGiNX的負載能力

nginx.conf裡面我有註釋一些解釋在上面,另外附上WordPress、Discuz、ZEND Framework的Rewrite規則,其他可以參考NginxHttpRewriteModulenginx rewrite的參數大全來寫自己的Rewrite規則。

vi /usr/local/nginx/conf/nginx.conf

NGiNX以的負載能力最主要的設定就是工作線程,因為NGiNX本身只有簡單的HTTP伺服器基本功能,大多數的功能都依賴別的套件來發揮它強大的高負載功力 :D

worker_processes 5;

測試NGiNX設定檔是否正確

/usr/local/nginx/sbin/nginx -t

啟用新的NGiNX設定值

kill -HUP cat /var/run/nginx.pid

備註2:調整FastCGI的負載能力

vi /usr/local/php/etc/php-fpm.conf

其實試裝了PHP 5.3.3一個多月以來,我是覺得還算不錯才更新上來的,畢竟整體效能是有提升一些,再加上PHP已經收入了FastCGI,就證明FastCGI是個不錯的東西,雖然要拋棄一些舊參數,不過我想這也是應該的,畢竟搞唉踢的是要往前看的。 :P

FastCGI的啟動方式依舊是檔案或端口做處理,這邊已經改成用端口方式比較方便,以後要是需要做負載平衡或是後端轉發給apache或lighthttpd也不用東改西改。

listen = 127.0.0.1:9000

然後記得增加9000端口到iptables規則或是你使用中的防火牆信任規則。

iptables -A INPUT -p tcp --dport 9000 -j ACCEPT

要注意的是新版PHP針對FastCGI設定線程可選兩種模式處理,static靜態模式,dynamic是動態模式處理,這邊的設定是依128MB的VPS為準,因為pm.max_children僅在靜態模式底下有效,所以使用靜態模式讓FastCGI的工作線程數量總共只使用2個,比較能控制記憶體消耗量。

pm = static
 pm.max_children = 1

而記憶體在512MB左右的。而且主要是跑網站服務為主的可以試用dynamic的動態模式,動態模式剛開始啟動是pm.start_servers指定的數量,如果請求較多則會自動增加FastCGI的工作線程,但不會超過pm.max_spare_servers指定的數量,空閒時也不會降低到pm.min_spare_servers指定的數量。另外pm.start_servers指定的數量可以參考設定檔裡面所提的: min_spare_servers + (max_spare_servers - min_spare_servers) / 2。

pm = dynamic
 pm.start_servers = 5
 pm.min_spare_servers = 2
 pm.max_spare_servers = 10

如果記憶體1GB以上的話也可以換成PHP 5.3.3裡面原始的設定或是再增加pm.max_spare_servers的數量。

pm = dynamic
 pm.start_servers = 20
 pm.min_spare_servers = 5
 pm.max_spare_servers = 35

最後延長中斷時間的設定這對降低FastCGI負荷量很有效果,而且比較不會造成FastCGI的工作線程死翹翹。

request_terminate_timeout = 15s

啟用新的FastCGI設定值,FastCGI死掉的時候也可用這個指令~

service php-fpm restart

---

備註3:調整my.cnf設定

vi /etc/my.cnf

my.cnf的設定是最討厭的部份 = = 懶人法當然是直接把官方預設的檔案直接複製過去~

my-small.cnf // 記憶體少於 128MB。
my-medium.cnf // 記憶體 256MB~512MB。
my-large.cnf // 記憶體 512MB。
my-huge.cnf // 記憶體 1GB~2GB。
my-innodb-heavy-4G.ini // 記憶體 4GB 以上。

但是實際上要跑出最好的效能是需要一直做調整才抓的出來的,而我參考了LowEndBox的
Reducing MySQL Memory Usage for Low End Boxes 這篇文章來設定記憶體小於256MB的VPS,另外MySQL配置文件例子翻譯這是一位中國網友翻譯的也可以看看,根據某不具名的DBA大帥是說依據這個規範就對了

MySQL消耗的記憶體量 = key_buffer +
max_connections 乘 (join_buffer_size + read_buffer_size + sort_buffer_size + thread_stack + tmp_table_size)

---

備註4:調整php.ini設定

vi /usr/local/php/etc/php.ini

特別要注意的是符合此規範才能順利上傳檔案唷 8-)

A. memory_limit 大於或等於 post_max_size
B. post_max_size 大於或等於 upload_max_filesize

memory_limit 128M // 程式最多允許使用記憶體量
post_max_size 8M // POST的大小
upload_max_filesize 2M // 允許上傳檔案的大小
max_execution_time 30 秒 // 程式最長運行時間

max_input_time 60 秒 // 每個Script處理輸入資料可用時間上限

一般中小型網站的範例

post_max_size = 50M
upload_max_filesize = 50M
max_execution_time = 600
max_input_time = 600

一個可上傳影音檔案或大型的網站的範例

post_max_size = 128M
upload_max_filesize = 128M
max_execution_time = 1800
max_input_time = 1800

如果需求超過128MB以上時,除了在加大參數之外同時也要編輯nginx.conf中的調整client_max_body_size這個參數來符合需求

vi /usr/local/nginx/conf/nginx.conf

client_max_body_size 128m;

最後可能會需要調整的是分配記憶體給eAccelerator加速器大小的參數是16MB,適合記憶體在256MB以下的主機,視主機記憶體多寡可以自行調整來加強效能

eaccelerator.shm_size="16"

---

備註5:有人問我可不可以裝了eAccelerator再裝ZendOptimizer,我裝起來看了一下好像沒什麼問題就把安裝方法也貼上來囉~! :D

32 位元版本系統請服用

mkdir -p /usr/local/zend
 wget -c http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz tar xvf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
 cp ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp/ZendOptimizer.so /usr/local/zend
 rm -rf ZendOptimizer-3.3.9-linux-glibc23-i386*

64 位元版本系統請服用

mkdir -p /usr/local/zend
 wget -c http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz tar xvf ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz
 cp ZendOptimizer-3.3.9-linux-glibc23-x86_64/data/5_2_x_comp/ZendOptimizer.so /usr/local/zend
 rm -rf ZendOptimizer-3.3.9-linux-glibc23-x86_64*

打開php.ini

vi /usr/local/php/etc/php.ini

在eaccelerator段落的後方加上以下設定(eac比zend前面比較不會出怪手)

[Zend] zend_extension="/usr/local/zend/ZendOptimizer.so"
 zend_optimizer.optimization_level=1023
 zend_optimizer.encoder_loader=1


Sign in to add a comment
Powered by Google Project Hosting