我是誰?你又是誰?
AceLNMP 1.4
********** 檔案簡介 **********
AceLNMP 是一個基於 CentOS 系統的自動安裝 Shell Script,主要都是以各軟體官方釋出最新的穩定版本為主。
什麼是 LNMP? 就是 Linux + NGiNX + MySQL + PHP 的一個網站開發環境,本檔案僅適合於紅帽或 Fedora (好像是廢話)或 CentOS 系列的 Linux,其他 Linux 系統請參考 acelnmp.sh 的內容分別安裝軟體。
其他 Debian、Gentoo、Slackware、Ubuntu 之類的當然也很牛,不過我比較習慣玩帽子,而VPS 的主機商大多提供的都會有 CentOS,有興趣學習 CentOS 的先看看維基的介紹吧
對於 Linux 新手,鳥哥的 Linux 私房菜是個入門的好選擇。
本檔案參考了以下網站,非常感謝他們提供的資訊
簡體中文
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 時會發生錯誤,這個需要請主機商幫忙暫時加大記憶體。
********** 更新歷史 **********
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
範例:
iProber PHP 探針 : http://996.net.ru/index.php
PHPINFO : http://996.net.ru/phpinfo.php
PHP Benchmark : http://996.net.ru/php-benchmark.php
裝在 HostingInside 的 htop 結果,吃了 82 MB 記憶體。

********** 安裝介紹 **********
安裝步驟1. 首先下載 AceLNMP 安裝包
cd /usr/src
wget http://acelnmp.googlecode.com/files/acelnmp_1.4.zip
unzip acelnmp_1.4.zip
rm -f acelnmp_1.4.zip
cd acelnmp.googlecode.com
下載 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
下載完畢之後先檢查一下檔案是不是都在
eaccelerator-0.9.5.3.tar.bz2
libiconv-1.13.1.tar.gz
libmcrypt-2.5.8.tar.gz
imagick-2.3.0.tgz
ImageMagick-6.5.6-10.tar.gz
mcrypt-2.6.8.tar.gz
memcache-2.2.5.tgz
mhash-0.9.9.9.tar.gz
mysql-5.1.41.tar.gz
nginx-0.7.64.tar.gz
pcre-8.00.tar.gz
PDO_MYSQL-1.0.2.tgz
php-5.2.11.tar.gz
php-5.2.11-fpm-0.5.13.diff.gz
phpMyAdmin-3.2.4-all-languages.tar.gz
另外我在可愛的 Googlecode 上面也開了一個 AceLNMP 專案,檔案也同步放在上面,還有特別要注意的是如果 SSH 連線到主機時跑很慢或是不太順暢的,請先執行下列指令先安裝必須的套件再開始安裝 AceLNMP
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++ gcc-g77 gd glib2 glib2-devel gzip libidn libidn-devel libjpeg libjpeg-devel libmcrypt libmcrypt-devel libtool libpng libpng-devel libtool-libs libxml2 libxml2-devel krb5 krb5-devel make ncurses ncurses-devel patch openssl openssl-devel sendmail tar unzip wget zlib zlib-devel
---
安裝步驟2. 開始安裝 AceLNMP (請記得開啟你的 SSH 連線軟體紀錄的功能,如果有問題也可以方便抓)
chmod +x acelnmp.sh
./acelnmp.sh
安裝步驟3. acelnmp.sh 剛開始只要輸入你的域名,再來就是全自動化的編譯+安裝,大約需要20~30分鐘才會跑完,視 VPS 的硬體規格而定。
---
http://photocouncil.com/photo/whoami/abpp734gsxtjs.jpg
安裝步驟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 看看有沒有問題吧~
chmod +x /root/run.sh
/root/run.sh
一切都OK之後,完工~ 恭喜你的 LNMP 環境完成了,設定開機自動執行 NGiNX 就結束囉!
chmod +x /usr/src/acelnmp.googlecode.com/startup.sh
/usr/src/acelnmp.googlecode.com/startup.sh
cd /usr/src/
rm -rf acelnmp.googlecode.com
日後需要更新 NGiNX 的時候只要先下這個指令再編譯安裝 NGiNX 好就可以啟動新版的 NGiNX 而且網站不會中斷
kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
---
NGiNX 安裝資料夾 : /usr/local/nginx
MySQL 安裝資料夾 : /usr/local/mysql
PHP 安裝資料夾 : /usr/local/php
網站資料夾 : /web/www
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
phpMyAdmin : http://你的域名/phpmyadmin/
iProber PHP 探針 : http://你的域名/index.php
PHPINFO : http://你的域名/phpinfo.php
PHP Benchmark : http://你的域名/php-benchmark.php
---
備註1:調整NGiNX以及FastCGI的負載能力
nginx.conf 裡面我有註釋一些解釋在上面,另外附上 WordPress、Discuz、ZEND Framework 的 Rewrite 規則,其他可以參考 NginxHttpRewriteModule、nginx rewrite 的 參數大全來寫自己的 Rewrite 規則。
vi /usr/local/nginx/conf/nginx.conf
NGiNX以及FastCGI的負載能力最主要的設定就是工作線程,因為 NGiNX 本身只有簡單的 HTTP 伺服器基本功能,大多數的功能都依賴別的套件來發揮它強大的高負載功力,
worker_processes 1;
測試 NGiNX 設定檔是否正確
/usr/local/nginx/sbin/nginx -t
打開 php-fpm.conf 調高 max_children 參數來增加 FastCGI 的工作線程數量
-
vi /usr/local/php/etc/php-fpm.conf
-
<value name="max_children">1</value>
啟用新的 NGiNX 設定值
kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
啟用新的 FastCGI 設定值
/usr/local/php/sbin/php-fpm restart
---
備註2:調整 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)
---
備註3:調整 php.ini 設定
在編譯 PHP 尾聲時 PEAR 這邊會報錯,解決方法是
rm -rf /usr/local/lib/php/.channels
/usr/local/php/bin/pecl update-channels
另外提醒的一個地方,不放心的可以自己手動在 474 行下面加入指定路徑
vi /usr/local/php/etc/php.ini
include_path = "/usr/local/php/lib/php"
另外特別要注意的是
memory_limit 128M // 程式最多允許使用記憶體量
post_max_size 8M // POST 的大小
upload_max_filesize 2M // 允許上傳檔案的大小
max_execution_time 30 秒 // 程式最長運行時間
max_input_time 60 秒 // 每個 Script 處理輸入資料可用時間上限
A. memory_limit 大於或等於 post_max_size
B. post_max_size 大於或等於 upload_max_filesize
符合此規範才能順利上傳檔案唷
一般中小型網站的範例
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"
---
備註4:調整VPS的時區以及增加SWAP (可用可不用)
optimizer.sh 是設定增加 swapfile,並且調整時區為台北時間GMT+8 (swapfile 不一定能增加,尤其是 OpenVZ 規格的 VPS)
chmod +x /root/acelnmp.googlecode.com/optimizer.sh
/root/acelnmp.googlecode.com/optimizer.sh
---
備註5:早上有人問我可不可以裝了 eAccelerator 再裝 ZendOptimizer,我裝起來看了一下好像沒什麼問題就把安裝方法也貼上來囉~!
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
rm -f ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
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
rm -f ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz
打開 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
---
轉 載 請 註 明 出 處
http://520.be/1413.html
2009/11/25
| Print article | This entry was posted by 窮苦人家的小孩 on 2009年十一月15日 at 3:07 下午, and is filed under 精華文章. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |





about 4 months ago
鋼喵了一下張宴的BLOG
他寫的真詳細....@@
他的OK嗎 有什麼缺陷嗎??