日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LEMP构建高性能WEB服务器(第三版)

發(fā)布時間:2025/4/5 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LEMP构建高性能WEB服务器(第三版) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

LEMP 自動化編譯腳本下載:http://docs.linuxtone.org/autoinstall/ (定期更新,歡迎多測試,找bug)
介紹參考:http://bbs.linuxtone.org/thread-6976-1-1.html

作者:NetSeek http://www.linuxtone.org
(IT
運維專家網|集群架構|性能調優(yōu))
歡迎轉載,轉載時請務必以超鏈接形式標明文章原始出處和作者信息及本聲明.
更新時間:2009-01-5

平臺搭建環(huán)境:
CentOS5.2 32/x86_64 GNU/Linux (32/64操作系統(tǒng)均通過,推薦使用64位操作系統(tǒng))

目標:構建高性的LEMP環(huán)境提供WEB服務

一、系統(tǒng)安裝
1. 系統(tǒng)分區(qū)建議
/boot 100M (大約100左右)
SWAP? ?? ?? ?物理內存的2(如果你的物理內存大于4G,分配4G即可)
/? ?? ?? ?? ?分區(qū)15~20G
/usr/local 20G? ???(用于安裝軟件)
/data? ?? ?? ?? ?? ???剩余所有空間.

【注】具體分區(qū)請根據(jù)相關業(yè)務劃分,具體安裝本文不作介紹安裝過程中選擇最少的包,采用文本模式安裝請不要安裝圖形。

2.系統(tǒng)初始化
系統(tǒng)初始化腳本(根據(jù)具體需求關閉不需要的服務)
# shinit_network.sh? ?? ?? ?? ?//下載本文提供的scripts.tar.gz包,即可找到此腳本.

二、編譯安裝基本環(huán)境
1. 安裝準備
1.1系統(tǒng)軟件包安裝規(guī)范
系統(tǒng)約定
軟件源代碼包存放位置? ?? ?/usr/local/src
源碼包編譯安裝位置(prefix)? ? /usr/local/software_name
腳本以及維護程序存放位置? ?/usr/local/sbin
MySQL 數(shù)據(jù)庫位置? ???/data/mysql/data(可按情況設置)
網站根目錄? ?? ?? ?? ?? ? /data/www/wwwroot(可按情況設置)
虛擬主機日志根目錄? ? /data/logs(可按情況設置)
Nginx運行賬戶? ?? ?? ???www:www
install_software_name.sh? ?? ?? ?//存放編譯參數(shù)腳本習慣將所有編譯腳本存放install_software_name.sh便于升級和更新軟件.

創(chuàng)建網站賬號及相關存放目錄
#add_user.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
系統(tǒng)環(huán)境部署及調整
檢查系統(tǒng)是否正常
#tail -n100 /var/log/messages(檢查有無系統(tǒng)級錯誤信息)
#dmesg (檢查硬件設備是否有錯誤信息)
#ifconfig(檢查網卡設置是否正確)
#ping www.linuxtone.org??(檢查網絡是否正常)

1.3
使用 yum 程序安裝所需開發(fā)包(以下為標準的 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-develgettext-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 && makeinstall 復制代碼 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

./configure --user=www --group=www --prefix=/usr/local/nginx/
--with-http_stub_status_module --with-http_ssl_module
--with-md5=/usr/lib --with-sha1=/usr/lib

make && make install 復制代碼


如果你編譯有問題請嘗試參考:http://bbs.linuxtone.org/thread-2281-1-1.html
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)以及動態(tài)庫配置文件/etc/ld.so.conf內所列的目錄, 而當用戶安裝了一個新的動態(tài)鏈接庫時,就需要手工運行這個命令。

tar zxvf mcrypt-2.6.7.tar.gz
[code]
cd mcrypt-2.6.7
./configure --prefix=/usr && make&& make install 復制代碼



1.3
編譯安裝MySQL

點擊:關于最新的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=utf8" \
"--with-collation=utf8_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@lempmysql-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.localdomainlocalhost
192.168.1.104??lemp.linuxtone.org 復制代碼


【注】將本文提供下載的
scripts.tar.gz包中的my.cnf替換你的/etc/my.cnf,并根據(jù)你的硬件參數(shù)做相關調整,并可以利用包中的tuning-primer.sh 做初步性能調優(yōu)。


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
makeZEND_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
//執(zhí)行PHP配置腳本
【注】下載包中提供了此腳本.主要是添加自動添加PHP擴展及PHP安全相關設置,用戶可以編輯此文件根據(jù)具體情況做調整。
#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 //啟動服務查看是否報錯,不報錯繼續(xù)。

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@lempmysql]# /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
驗證服務環(huán)境
配置完成虛擬主機以后,編輯php.inidisable_functions里的phpinfo去掉,仍后重啟服務,利用Phpinfo函數(shù)查看環(huán)環(huán)配置。
編寫phpinfo.php

<?php
phpinfo();
?> 復制代碼

http://ip/phpinfo.php
即可查看當前配置環(huán)境. 查看完成后出于安全考慮請再將此函數(shù)禁掉.

三、服務器簡單優(yōu)化
1.簡單優(yōu)化磁盤I/O
# vi /etc/fstab? ?//加入notaime

LABEL=/data? ?? ?? ?? ? /data? ?? ?? ?? ?? ?? ? ext3? ? defaults,noatime? ?? ???0 2 復制代碼

#mount -oremount??/data? ?? ?? ???//重新掛載/data分區(qū).

2.
簡單優(yōu)化Linux內核參數(shù)(更多的請根據(jù)服務器狀況做相關調整)
#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 復制代碼



修改文件描述符:
# ulimit -HSn 65535

#echo -ne "
* soft nofile 65536
* hard nofile 65536
" >>/etc/security/limits.conf

3.
其它優(yōu)化根據(jù)具體情況還有硬件情況做調整.
更多的優(yōu)化請參考: http://www.linuxtone.org/forum-31-1.html 或聯(lián)系我們.

四、相關參考及介紹.
1.Nginx Tips(Nginx應用技巧含優(yōu)化)??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.如果你想學習服務器監(jiān)控請參考??http://www.linuxtone.org/forum-20-1.html

、相關軟件包及腳本下載
http://www.linuxtone.org/lemp/scripts.tar.gz??文中所有腳本及配置范例。
http://www.linuxtone.org/lemp/lemp.tar.gz ? ? 所有軟件包如果發(fā)現(xiàn)不能下載請去官方下載。

六、常見錯誤(疑問)解答 [守住每一天] 補充:
? ?1、eaccelerator xcache 差在那?
   當緩存的PHP二進制文件太多,以至于超過shm_size后,eAccelerator在性能方面要高于Xcache
 2、按文檔安裝完成了結果出502Bad Gateway ?
   請查看http://www.linuxtone.org 相關版塊
 3、nginxstatus 解釋
? ?? ???active connections -- 對后端發(fā)起的活動連接數(shù)
? ?? ???server accepts handled requests -- nginx 總共處理了 43629083 個連接, 成功創(chuàng)建 43629083 次握手
? ?? ???(證明中間沒有失敗的), 總共處理了259552136 個請求
? ?? ???reading -- nginx 讀取到客戶端的Header信息數(shù)
? ?? ???writing -- nginx 返回給客戶端的Header信息數(shù)
? ?? ???waiting -- 開啟 keep-alive 的情況下,這個值等于 active - (reading +writing),意思就是Nginx已經處理完成,
? ?? ?正在等候下一次請求指令的駐留連接。在訪問效率高,請求很快被處理完畢的情況下,
Waiting數(shù)比較多是正常的。
? ?? ?如果
reading + writing數(shù)較多,則說明并發(fā)訪問量非常大,正在處理過程中。
??
? ? 4EA xcachezend 能一起使用?
? ?? ?可以
? ? 5、按腳本執(zhí)行sed -i -e 's/^LANG=.*/LANG="en"/'??/etc/sysconfig/i18n 后。
? ?? ?可能會遇到如下錯誤:


perl: warning: Please checkthat your 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;exportLC_ALL ; LC_CTYPE=C ; export LC_CTYPE;

下載PDF版(更利于閱讀): LEMP構建高性能WEB服務器(第三版).pdf

新版的介紹:
1.提供完整的配置腳本下載:http://www.linuxtone.org/lemp/scripts.tar.gz??
2.提供NGINX常見配置范例含(虛擬主機,防盜鏈,Rewrite,訪問控制,負載均衡等等)
3.將原版的xcache替換成EA,并提供相關簡單調優(yōu)腳本及配置文件。
4.PDF下載地址:http://www.linuxtone.org/lemp/lemp.pdf

?

?

編譯時發(fā)生錯誤:
/php-5.2.8/ext/iconv/iconv.c:191: (Each undeclared identifier is reported only once
/php-5.2.8/ext/iconv/iconv.c:191: for each function it appears in.)
make: *** [ext/iconv/iconv.lo] Error 1

造成這個錯誤的原因是,系統(tǒng)里本身裝了iconv和編譯安裝的iconv的版本不一致。
解決方法 cp /iconv/include/iconv.h /usr/include/
重新編譯就可以通過了

轉載于:https://blog.51cto.com/297020555/578965

《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的LEMP构建高性能WEB服务器(第三版)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。