源碼編譯安裝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 運行狀態的監控,確保其穩定運行並及時響應可能出現的問題。