Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Linux系統教程 >> Linux教程 >> LEMP構建高性能WEB服務器

LEMP構建高性能WEB服務器

日期:2017/2/7 9:19:52      編輯:Linux教程
平台搭建環境: CentOS5.2 32/x86_64 GNU/Linux (32/64操作系統均通過,推薦使用64位操作系統) 目標:構建高性的LEMP環境提供WEB服務
一、系統安裝 1. 系統分區建議 /boot 100M (大約100左右) SWAP 物理內存的2倍(如果你的物理內存大於4G,分配4G即可) / 分區15~20G /usr/local 20G (用於安裝軟件) /data 剩余所有空間. 【注】具體分區請根據相關業務劃分,具體安裝本文不作介紹安裝過程中選擇最少的包,采用文本模式安裝請不要安裝圖形。
2.系統初始化 系統初始化腳本(根據具體需求關閉不需要的服務) # sh init_network.sh //下載本文提供的scripts.tar.gz包,即可找到此腳本.
二、編譯安裝基本環境 1. 安裝准備 1.1系統軟件包安裝規范 系統約定 軟件源代碼包存放位置 /usr/local/src 源碼包編譯安裝位置(prefix) /usr/local/software_name 腳本以及維護程序存放位置 /usr/local/sbin MySQL 數據庫位置 /data/mysql/data(可按情況設置) 網站根目錄 /data/www/wwwroot(可按情況設置) 虛擬主機日志根目錄 /data/logs(可按情況設置) Nginx運行賬戶 www:www install_software_name.sh //存放編譯參數腳本習慣將所有編譯腳本存放 在install_software_name.sh便於升級和更新軟件. 創建網站賬號及相關存放目錄 #add_webuser.sh /usr/sbin/groupadd www
/usr/sbin/useradd -g www www mkdir -p /data/www/wwwroot chmod +w /data/www/wwwroot chown www:www /data/www/wwwroot -R
1.2系統環境部署及調整 檢查系統是否正常 # tail -n100 /var/log/messages (檢查有無系統級錯誤信息) # dmesg (檢查硬件設備是否有錯誤信息) # ifconfig(檢查網卡設置是否正確) # ping www.linuxtone.org (檢查網絡是否正常)
1.3使用 yum 程序安裝所需開發包(以下為標准的 RPM 包名稱) 添加國內鏡像源加速軟件安裝下載速度請參照:http://bbs.linuxtone.org/thread-158-1-1.html yum -y install ntp vim-enhanced gcc gcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel \ ncurses-devel openssl-devel libtool* zlib-devel libxml2-devel libjpeg-devel libpng-devel libtiff-devel \ fontconfig-devel freetype-devel libXpm-devel gettext-devel curl curl-devel pam-devel \ e2fsprogs-devel krb5-devel libidn libidn-devel
1.4定時校正服務器時鐘,定時與中國國家授時中心授時服務器同步 # crontab -e 加入一行: 15 3 * * * /usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1
1.5下載編譯相關的源碼包. #vi list 在list文件裡填入以後下載地址列表. 官方下載軟件包名: #nginx ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.8.tar.gz http://sysoev.ru/nginx/nginx-0.7.30.tar.gz #PHP-GD-LIB http://www.libgd.org/releases/gd-2.0.35.tar.bz2 http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz http://jaist.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.bz2 http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz?modtime=1228695303&big_mirror=0 http://jaist.dl.sourceforge.net/sourceforge/mcrypt/mcrypt-2.6.7.tar.gz   #MySQL http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.30.tar.gz/from/http://mysql.cdpa.nsysu.edu.tw/ #php http://cn.php.net/get/php-5.2.8.tar.bz2/from/cn2.php.net/mirror
http://php-fpm.anight.org/downloads/head/php-5.2.8-fpm-0.5.10.diff.gz #PHP-EXT http://pecl.php.net/get/memcache-2.2.4.tgz http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2 #wget -i list
2. 編譯安裝軟件包 源碼編譯安裝所需包(Source) 1.1 編譯安裝Nginx tar zxvf pcre-7.8.tar.gz cd pcre-7.8 ./configure && make && make install tar zxvf nginx-0.7.30.tar.gz cd nginx-0.7.30 ./configure --user=www --group=www --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-openssl=/usr/lib make && make install
1.2編譯安裝GD及相關的LIB. tar jxvf gd-2.0.35.tar.bz2 cd gd-2.0.35 ./configure --prefix=/usr/local/gd2 && make && make install tar zxvf libiconv-1.12.tar.gz cd libiconv-1.12 ./configure --prefix=/usr && make && make install tar jxvf libmcrypt-2.5.8.tar.bz2 cd libmcrypt-2.5.8 ./configure --prefix=/usr && make && make install tar zxvf mhash-0.9.9.tar.gz cd mhash-0.9.9 ./configure --prefix=/usr && make && make install #vi /etc/ld.so.conf 添加/usr/lib include ld.so.conf.d/*.conf /usr/lib
# ldconfig 【注】ldconfig 命令的用途,主要是在默認搜尋目錄(/lib和/usr/lib)以及動態庫配置文件/etc/ld.so.conf內所列的目錄, 而當用戶安裝了一個新的動態鏈接庫時,就需要手工運行這個命令。 tar zxvf mcrypt-2.6.7.tar.gz cd mcrypt-2.6.7 ./configure --prefix=/usr && make && make install
1.3 編譯安裝MySQL #sh install_mysql.sh //具體腳本如下: CHOST="x86_64-pc-linux-gnu" CFLAGS="-march=nocona -O3 -pipe" CXXFLAGS="${CFLAGS}" ./configure \ "--prefix=/usr/local/mysql" \ "--localstatedir=/data/mysql/data" \ "--with-comment=Source" \ "--with-server-suffix=-Linuxtone.Org" \ "--with-mysqld-user=mysql" \ "--without-debug" \ "--with-big-tables" \ "--with-charset=gbk" \ "--with-collation=gbk_chinese_ci" \ "--with-extra-charsets=all" \ "--with-pthread" \ "--enable-static" \ "--enable-thread-safe-client" \ "--with-client-ldflags=-all-static" \ "--with-mysqld-ldflags=-all-static" \ "--enable-assembler" \ "--with-plugins=all" \ "--without-ndb-debug" make make install useradd mysql -d /data/mysql -s /sbin/nologin /usr/local/mysql/bin/mysql_install_db --user=mysql cd /usr/local/mysql chown -R root:mysql . mkdir -p /data/mysql/data chown -R mysql /data/mysql/data cp share/mysql/my-huge.cnf /etc/my.cnf cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld chmod 755 /etc/rc.d/init.d/mysqld
chkconfig --add mysqld /etc/rc.d/init.d/mysqld start cd /usr/local/mysql/bin for i in *; do ln -s /usr/local/mysql/bin/$i /usr/bin/$i; done   【注】編譯mysql前請正確配置好主機名,否則不能正常啟動. 例如: [root@lemp mysql-5.1.30]# cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.1.104 lemp.linuxtone.org 【注】將本文提供下載的scripts.tar.gz包中的my.cnf替換你的/etc/my.cnf,並根據你的硬件參數做相關調整,並可以利用包中的tuning-primer.sh 做初步性能調優。
1.4 編譯安裝PHP-FastCGI tar jxvf php-5.2.8.tar.bz2 gzip -cd php-5.2.8-fpm-0.5.10.diff.gz | patch -d php-5.2.8 -p1 cd php-5.2.8 #sh install_php.sh //具體腳本如下 CHOST="i686-pc-linux-gnu" CFLAGS="-march=prescott -O3 -pipe -fomit-frame-pointer" CXXFLAGS="${CFLAGS}" ./configure \ "--prefix=/usr/local/php-fcgi" \ "--enable-fastcgi" \ "--enable-fpm" \ "--enable-discard-path" \ "--enable-force-cgi-redirect" \ "--with-config-file-path=/usr/local/php-fcgi/etc" \ "--enable-zend-multibyte" \ "--with-mysql=/usr/local/mysql" \ "--with-libxml-dir" \ "--with-xmlrpc" \ "--with-gd=/usr/local/gd2" \ "--with-jpeg-dir" \ "--with-png-dir" \ "--with-bz2" \ "--with-freetype-dir" \ "--with-iconv-dir" \ "--with-zlib-dir" \ "--with-curl" \ "--with-curlwrappers" \
"--with-openssl" \ "--with-mcrypt" \ "--with-mhash" \ "--enable-pcntl" \ "--enable-sockets" \ "--enable-sysvsem" \ "--enable-inline-optimization" \ "--enable-soap" \ "--enable-gd-native-ttf" \ "--enable-ftp" \ "--enable-mbstring" \ "--enable-exif" \ "--disable-debug" \ "--disable-ipv6" #sed -i 's#-lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt#& -liconv#' Makefile make ZEND_EXTRA_LIBS='-liconv' make install cp php.ini-dist /usr/local/php-fcgi/etc/php.ini
1.5 編譯安裝PHP擴展 tar zxvf memcache-2.2.4.tgz cd memcache-2.2.4 /usr/local/php-fcgi/bin/phpize ./configure --with-php-config=/usr/local/php-fcgi/bin/php-config make && make install tar jxvf eaccelerator-0.9.5.3.tar.bz2 cd eaccelerator-0.9.5.3 /usr/local/php-fcgi/bin/phpize ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php-fcgi/bin/php-config make make install tar zxvf PDO_MYSQL-1.0.2.tgz cd PDO_MYSQL-1.0.2 /usr/local/php-fcgi/bin/phpize ./configure --with-php-config=/usr/local/php-fcgi/bin/php-config --with-pdo-mysql=/usr/local/mysql make make install

1.6 配置php.ini #sh init_php.sh //執行PHP配置腳本 【注】下載包中提供了此腳本.主要是添加自動添加PHP擴展及PHP安全相關設置,用戶可以編輯此文件根據具體情況做調整。 #vi /usr/local/php-fcgi/etc/php.ini //在最後加上 [eAccelerator] extension="eaccelerator.so" eaccelerator.shm_size="32" eaccelerator.cache_dir="/cache_tmpfs/eaccelerator" eaccelerator.enable="1" eaccelerator.optimizer="1" eaccelerator.check_mtime="1" eaccelerator.debug="0" eaccelerator.filter="" eaccelerator.shm_max="0" eaccelerator.shm_ttl="0" eaccelerator.shm_prune_period="0" eaccelerator.shm_only="0" eaccelerator.compress="1" eaccelerator.compress_level="9"
1.7 安裝ZendOptimizer-3.3.3 tar zxvf ZendOptimizer-3.3.3-linux-glibc23-x86_64.tar.gz cd ZendOptimizer-3.3.3-linux-glibc23-x86_64 ./install 解壓後進入目錄./install,安提示選擇相關的目錄及配置文件存放目錄即可.
1.8 配置php-fpm.conf rm -rf /usr/local/php-fcgi/etc/php-fpm.conf 將本文提供的php-fpm.conf文件上傳此目錄. /usr/local/php-fcgi/sbin/php-fpm start //啟動服務查看是否報錯,不報錯繼續。

1.9 配置nginx/conf

#cd /usr/local/nginx #mv conf conf_old #mkdir -p conf/{vhost,conf_example} #將本文提供的conf目錄替換成當前conf目錄.在下載的scripts.tar.gz包裡. 目錄結構介紹: /usr/local/nginx/conf //存放主配置文件 /usr/local/nginx/conf/vhost //存放虛擬主機配置文件. /usr/local/nginx/conf/conf_example //存放一些經典的配置示例{虛擬主機,防盜鏈,訪問控制,重定向,負載均衡等}
[root@lemp mysql]# /usr/local/nginx/sbin/nginx –t //驗證是否有配置語法錯誤. 2009/01/06 09:36:12 [info] 23353#0: the configuration file /usr/local/nginx//conf/nginx.conf syntax is ok 2009/01/06 09:36:12 [info] 23353#0: the configuration file /usr/local/nginx//conf/nginx.conf was tested successfully #chmod a+x /etc/init.d/nginx //將文本提供的nginx腳本上傳至/etc/init.d/目錄下 【注】此腳本已經含有php-fpm的管理.直接利用此腳本即可管理所有服務. # /etc/init.d/nginx stop //停止nginx服務 # /etc/init.d/nginx start //啟動nginx服務
2.0 驗證服務環境 配置完成虛擬主機以後,編輯php.ini把disable_functions裡的phpinfo去掉,仍後重啟服務,利用Phpinfo函數查看環環配置。 編寫phpinfo.php <?php phpinfo(); ?> http://ip/phpinfo.php 即可查看當前配置環境. 查看完成後出於安全考慮請再將此函數禁掉.
三、服務器簡單優化 1.簡單優化磁盤I/O # vi /etc/fstab //加入notaime LABEL=/data /data ext3 defaults,noatime 0 2 LABEL=/boot1 /boot ext3 defaults,noatime 1 2 #mount -oremount /data //重新掛載/data分區.
2.簡單優化Linux內核參數(更多的請根據服務器狀況做相關調整) #vi /etc/sysctl.conf net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 300 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.ip_local_port_range = 5000 65000 sysctl –p
3.其它優化根據具體情況還有硬件情況做調整. 更多的優化請參考: http://www.linuxtone.org/forum-31-1.html或聯系我們.

四、相關參考及介紹. 1.Nginx Tips(Nginx應用技巧含優化) http://bbs.linuxtone.org/thread-1241-1-1.html 2.LEMP構建高性能WEB服務器(第二版)http://bbs.linuxtone.org/thread-123-1-1.html 3.如果你想構建可用集群方案請參考 http://www.linuxtone.org/thread-1402-1-1.html 4.如果你想學習服務器監控請參考 http://www.linuxtone.org/forum-20-1.html
五、相關軟件包及腳本下載 http://www.linuxtone.org/lemp/lemp.tar.gz 所有軟件包如果發現不能下載請去官方下載。 http:///www.linuxtone.org/lemp/scripts.tar.gz 文中所有腳本及配置范例。   六、常見錯誤(疑問)解答 [守住每一天] 補充: 1、eaccelerator 與xcache 差在那? 當緩存的PHP二進制文件太多,以至於超過shm_size後,eAccelerator在性能方面要高於Xcache
2、按文檔安裝完成了結果出502 Bad Gateway ? 請查看http://www.linuxtone.org 相關版塊
3、nginx status 解釋 active connections -- 對後端發起的活動連接數server accepts handled requests -- nginx 總共處理了 43629083 個連接, 成功創建43629083 次握手 (證明中間沒有失敗的), 總共處理了 259552136 個請求reading -- nginx 讀取到客戶端的Header信息數writing -- nginx 返回給客戶端的Header信息數waiting -- 開啟 keep-alive 的情況下,這個值等於 active - (reading + writing),意思就是Nginx已經處理完成,正在等候下一次請求指令的駐留連接。在訪問效率高,請求很快被處理完畢的情況下,Waiting數比較多是正常的。如果reading + writing數較多,則說明並發訪問量非常大,正在處理過程中。
4、EA 或xcache 和zend 能一起使用? 可以
5、按腳本執行sed -i -e 's/^LANG=.*/LANG="en"/' /etc/sysconfig/i18n 後。可能會遇到如下錯誤: perl: warning: Please check thatyour locale settings: LANGUAGE = (unset),
LC_ALL = (unset), LANG = "en_US.UTF-8:en_US:en_US.ISO-8859-1" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). 解決辦法: LC_ALL=C;export LC_ALL ; LC_CTYPE=C ; export LC_CTYPE; 
Copyright © Windows教程網 All Rights Reserved