源码编译安装nginx
① centos5 婧愮爜瀹夎匩ginx + mysql + apache + php镄勬柟娉
涓昏佷緷镦х殑鏄寮犲寸殑涓绡囧崥鏂囥http://blog.s135.com/post/366/銆嬶纴瀹夎呯殑杞浠舵槸涔熸槸浠庝粬鎻愪緵镄勫垪琛ㄤ腑涓嬭浇锛岃繖閲岄兘鏄痶ar.gz镙煎纺锛屽傛灉镟村笇链涙槸rpm镙煎纺镄勮瘽锛屾彁渚涗竴涓缃戝潃銆http://rpmfind.net/linux/rpm2html/search.php銆嬭繖閲屽垪鍑轰简姣旇缉瀹屽叏镄勪笅杞藉寘銆
鎴戝畨瑁呯殑绯荤粺锛欳entos5
1銆佷笅杞斤绂
鎴戝畨瑁呯殑涓嬭浇𨱒ヨ嚜寮犲村崥鏂囦笅镄勫湴鍧锛屼笅杞戒缭瀛樼殑鏄痟ome涓嬭嚜宸辩洰褰旷殑涓涓鏂囦欢澶逛笅锛
澶嶅埗浠g爜
浠g爜濡备笅:
cd /home/xuxx/software
wget http://blog.s135.com/soft/linux/nginx_php/nginx/nginx-0.7.51.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/php/php-5.2.8.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/phpfpm/php-5.2.8-fpm-0.5.10.diff.gz
wget http://blog.s135.com/soft/linux/nginx_php/mysql/mysql-5.1.33.zip
wget http://blog.s135.com/soft/linux/nginx_php/libiconv/libiconv-1.13.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/mcrypt/libmcrypt-2.5.8.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/mcrypt/mcrypt-2.6.8.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/memcache/memcache-2.2.5.tgz
wget http://blog.s135.com/soft/linux/nginx_php/mhash/mhash-0.9.9.9.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/pcre/pcre-7.8.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/eaccelerator/eaccelerator-0.9.5.3.tar.bz2
wget http://blog.s135.com/soft/linux/nginx_php/pdo/PDO_MYSQL-1.0.2.tgz
wget http://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/imagick/imagick-2.2.2.tgz
2銆佸嗳澶囩紪璇戝畨瑁呯幆澧冿纴闇瑕佺紪璇戞簮镰佺敤鍒癵c++
寤鸿濡傛灉鏄鏂板畨瑁呯殑绯荤粺锛屼娇鐢▂um upgrade镟存柊涓嬬郴缁熴
澶嶅埗浠g爜
浠g爜濡备笅:
sudo -s
LANG=C
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel
glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel
openldap openldap-devel nss_ldap openldap-clients openldap-servers
娉ㄦ剰锛氲繖閲屾墍链夌殑锻戒护鏄涓琛岀殑钥屼笉鑳芥湁鎹㈣岀︼纴濡傛灉鏄痗opy镄勬椂鍊欙纴娉ㄦ剰瑕佸幓澶勮ユ崲琛岀
纭淇濆畨瑁呮垚锷燂紒镓嶈兘姝g‘浣跨敤缂栬疟銆
3銆佸畨瑁咃细
涓銆佸畨瑁匬HP 5.2.8锛团astCGI妯″纺锛
1銆佺紪璇戝畨瑁匬HP 5.2.8镓闇镄勬敮鎸佸簱锛
1锛 libiconv搴
澶嶅埗浠g爜
浠g爜濡备笅:
tar zxvf libiconv-1.13.tar.gz
cd libiconv-1.13/
./configure --prefix=/usr/local
make
make install
make clean
make distclean
cd ../
make clean 鍜宫ake distclean閮芥槸鍒犻櫎瀹夎呰繃绋嬩腑鐢熸垚镄勭紦瀛樻枃浠躲傚綋铹跺傛灉浣犱笉浠嬫剰鏀剧潃涔熷彲浠ヨ烦杩囱繖涓ゆユ竻鐞嗘搷浣溿
2锛絣ibmcrypt搴
澶嶅埗浠g爜
浠g爜濡备笅:
tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8/
./configure
make
make install
make clean
make distclean
/sbin/ldconfig
cd libltdl/
./configure --enable-ltdl-install
make
make install
make clean
make distclean
cd http://www.cnblogs.com/
3] mhash搴
澶嶅埗浠g爜
浠g爜濡备笅:
tar zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9/
./configure
make
make install
cd ../
4锛絤crypt搴
娉ㄦ剰锛氩洜涓鸿ュ簱鍜宭ibmcrypt链変緷璧栨э纴镓浠ュ湪瀹夎呭墠蹇呴’鐭ラ亾libmcrypt锛屽惁鍒欑殑璇濅细鍑虹幇锛
阌栾
澶嶅埗浠g爜
浠g爜濡备笅:
checking for libmcrypt 钬 version = 2.5.0钬
*** 钬榣ibmcrypt-config 钬捣ersion钬 returned 2.4.0, but LIBMCRYPT (2.5.8)
*** was found! If libmcrypt-config was correct, then it is best
*** to remove the old version of LIBMCRYPT. You may also be able to fix the error
*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing
*** /etc/ld.so.conf. Make sure you have run ldconfig if that is
*** required on your system.
*** If libmcrypt-config was wrong, set the environment variable LIBMCRYPT_CONFIG
*** to point to the correct of libmcrypt-config, and remove the file config.cache
*** before re-running configure
configure: error: *** libmcrypt was not found
鏄锲犱负path镄勯梾棰桡纴镓浠ユ墽琛岋细
澶嶅埗浠g爜
浠g爜濡备笅:
ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config
铹跺悗鍐嶅畨瑁咃细
澶嶅埗浠g爜
浠g爜濡备笅:
tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/
/sbin/ldconfig
./configure
make
make install
cd ../
浜屻佸畨瑁卪ysql
澶嶅埗浠g爜
浠g爜濡备笅:
/usr/sbin/groupadd mysql
/usr/sbin/useradd -g mysql xxx
unzip mysql-5.1.33.zip
cd mysql-5.1.33/
./configure --prefix=/usr/local/webserver/mysql/ --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables
--with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=innobase
make
make install
make clean
make distclean
chmod +w /usr/local/webserver/mysql
chown -R xxx:mysql /usr/local/webserver/mysql
cp support-files/my-medium.cnf.sh /usr/local/webserver/mysql/my.cnf
cd ../
娉ㄦ剰锛氲繖閲岀紪璇./configure锻戒护鏄涓琛岀殑钥屼笉鑳芥湁鎹㈣岀︼纴濡傛灉鏄痗opy镄勬椂鍊欙纴娉ㄦ剰瑕佸幓澶勮ユ崲琛岀
鍦ㄦ渶钖庝竴姝ユ嫹璐濈殑镞跺欙纴鎴戝畨瑁呭畬鍦╯upport-files涓嬫病链尘y-medium.cnf钥屽彧链尘y-medium.cnf.sh镓浠ュ皢杩欎釜鏂囦欢𨰾疯礉杩囧幓銆
锛犲紶瀹村师鏂囷细
闄勶细浠ヤ笅涓洪梼锷犳ラわ纴濡傛灉浣犳兂鍦ㄨ繖鍙版湇锷″櫒涓婅繍琛孧ySQL鏁版嵁搴掳纴鍒欐墽琛屼互涓嬩袱姝ャ傚傛灉浣犲彧鏄甯屾湜璁㏄HP鏀鎸丮ySQL镓╁𪾢搴掳纴鑳藉熻繛鎺ュ叾浠栨湇锷″櫒涓婄殑MySQL鏁版嵁搴掳纴闾d箞锛屼互涓嬩袱姝ユ棤闇镓ц屻
鈶犮佷互xxx鐢ㄦ埛甯愬彿镄勮韩浠藉缓绔嬫暟鎹琛锛
澶嶅埗浠g爜
浠g爜濡备笅:
/usr/local/webserver/mysql/bin/mysql_install_db --basedir=/usr/local/webserver/mysql --datadir=/usr/local/webserver/mysql/data --user=xxx
鈶°佸惎锷∕ySQL锛堟渶钖庣殑琛ㄧず鍦ㄥ悗鍙拌繍琛岋级
澶嶅埗浠g爜
浠g爜濡备笅:
/bin/sh /usr/local/webserver/mysql/bin/mysqld_safe --defaults-file=/usr/local/webserver/mysql/my.cnf
3銆佺紪璇戝畨瑁匬HP锛团astCGI妯″纺锛
澶嶅埗浠g爜
浠g爜濡备笅:
tar zxvf php-5.2.8.tar.gz
gzip -cd php-5.2.8-fpm-0.5.10.diff.gz | patch -d php-5.2.8 -p1
cd php-5.2.8/
./configure --prefix=/usr/local/webserver/php --with-config-file-path=/usr/local/webserver/php/etc --with-mysql=/usr/local/webserver/mysql
--with-mysqli=/usr/local/webserver/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib
--with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem
--enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect
--enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap
--with-ldap-sasl
make ZEND_EXTRA_LIBS='-liconv'
make install
cp php.ini-dist /usr/local/webserver/php/etc/php.ini
cd ../
娉ㄦ剰锛氲繖閲./configure锻戒护鏄涓琛岀殑钥屼笉鑳芥湁鎹㈣岀︼纴濡傛灉鏄痗opy镄勬椂鍊欙纴娉ㄦ剰瑕佸幓澶勮ユ崲琛岀
4銆佺紪璇戝畨瑁匬HP5镓╁𪾢妯″潡--鍙阃夊畨瑁
澶嶅埗浠g爜
浠g爜濡备笅:
tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5/
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config
make
make install
make clean
make distclean
cd ../
tar jxvf eaccelerator-0.9.5.3.tar.bz2
cd eaccelerator-0.9.5.3/
/usr/local/webserver/php/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/webserver/php/bin/php-config
make
make install
make clean
make distclean
cd ../
tar zxvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2/
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-pdo-mysql=/usr/local/webserver/mysql
make
make install
make clean
make distclean
cd ../
tar zxvf ImageMagick.tar.gz
cd ImageMagick-6.5.1-2/
./configure
make
make install
make clean
make distclean
cd ../
tar zxvf imagick-2.2.2.tgz
cd imagick-2.2.2/
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config
make
make install
make clean
make distclean
cd ../
5銆佷慨鏀筽hp.ini鏂囦欢
STRONG镓嫔伐淇鏀癸细/STRONG镆ユ垒/usr/local/webserver/php/etc/php.ini涓镄别xtension_dir = "./"
淇鏀逛负extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"
骞跺湪姝よ屽悗澧炲姞浠ヤ笅鍑犺岋纴铹跺悗淇濆瓨锛
extension = "memcache.so"
extension = "pdo_mysql.so"
extension = "imagick.so"
鍐嶆煡镓紧utput_buffering = Off
淇鏀逛负output_buffering = On
6銆侀厤缃甧Accelerator锷犻烶HP锛
mkdir -p /usr/local/webserver/eaccelerator_cache
vi /usr/local/webserver/php/etc/php.ini
鎸塻hift+g阌璺冲埌閰岖疆鏂囦欢镄勬渶链灏撅纴锷犱笂浠ヤ笅閰岖疆淇℃伅锛
澶嶅埗浠g爜
浠g爜濡备笅:
[eaccelerator]
zend_extension="/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="128"
eaccelerator.cache_dir="/usr/local/webserver/eaccelerator_cache"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="300"
eaccelerator.shm_prune_period="120"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
淇鏀归厤缃鏂囦欢锛
vi /etc/sysctl.conf
kernel.shmmax = 134217728
铹跺悗镓ц屼互涓嫔懡浠や娇閰岖疆鐢熸晥锛/sbin/sysctl -p
浠ヤ笅镄勬ラゅ拰寮犲存ラや腑涓镙烽厤缃锛屼笉鍐嶈禈璇
② nginx如何监控
本文将介绍如何在 Linux 环境下通过源码编译安装 Nginx,以及安装相关依赖库,并进行基本的监控配置。监控是运维过程中不可或缺的一部分,能够帮助我们及时了解 Nginx 的运行状态,以便在遇到问题时快速响应。
首先,确保编译环境已经准备好。这包括安装如 gcc、g++ 等开发库。可通过运行以下命令完成:
sudo yum install gcc automake autoconf libtool make
紧接着,安装 g++:
sudo yum install gcc g++
为了保证 Nginx 的性能,我们需要安装 PCRE(Perl 核心扩展)和 zlib 库。这两者分别用于正则表达式处理和数据压缩。
下载并编译安装 PCRE 和 zlib 库:
1. 下载并解压 PCRE 源码包,执行配置、编译和安装:
cd /usr/local/src
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
tar -zxvf pcre-8.39.tar.gz
cd pcre-8.39
./configure
make && make install
随后,下载 zlib 源码包并进行安装:
cd /usr/local/src
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make && make install
为了保证 Nginx 能够支持 SSL,需要安装 SSL 库。这里以 OpenSSL 为例:
cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.1.0b.tar.gz
tar -zxvf openssl-1.1.0b.tar.gz
cd openssl-1.1.0b
./config
cd
make && make install
最后,进行 Nginx 的安装:
cd /usr/local/src
wget https://nginx.org/download/nginx-1.22.1.tar.gz
解压并配置 Nginx 安装参数:
tar -zxvf nginx-1.22.1.tar.gz
cd nginx-1.22.1
./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_mole --with-pcre=/usr/local/src/pcre-8.39 --with-zlib=/usr/local/src/zlib-1.2.11 --with-openssl=/usr/local/src/openssl-1.1.0b --prefix=/usr/local/nginx --with-http_stub_status_mole
编译并安装 Nginx:
make && make install
启动 Nginx:
/usr/local/nginx/nginx
访问 http://192.168.0.194/ 查看 Nginx 是否正常启动。
为了监控 Nginx 的运行状态,我们可以在配置文件中添加如下代码:
# 设定 Nginx 状态访问地址
location /NginxStatus {
stub_status on;
access_log on;
auth_basic "NginxStatus";
}
配置完成后,重启 Nginx 并访问 http://192.168.0.194/NginxStatus/ 查看状态信息。
通过监控 Nginx 的状态,可以获取诸如活跃连接数、处理请求数等关键信息,有助于及时发现和解决问题。同时,监控 Nginx 的并发进程数和 TCP 连接状态,能够进一步优化系统性能。
总结而言,通过源码编译安装 Nginx 并配置相应的监控选项,可以有效地实现对 Nginx 运行状态的监控,确保其稳定运行并及时响应可能出现的问题。