1、下載pcre, 是一個(gè)用c語(yǔ)言編寫的正則表達(dá)式函數(shù)庫(kù)
[root@localhost?pcre-8.36]#?cd?/tmp/download/ [root@localhost?download]#?wget?http://nchc.dl.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz [root@localhost?download]#?tar?zxvf?pcre-8.36.tar.gz
2、下載zlib庫(kù)
[root@localhost?pcre-8.36]#?cd?/tmp/download/ [root@localhost?download]#?wget?http://ncu.dl.sourceforge.net/project/libpng/zlib/1.2.8/zlib-1.2.8.tar.gz [root@localhost?download]#?tar?-zxvf?zlib-1.2.8.tar.gz?cd?zlib-1.2.8
4、下載ssl
[root@localhost?zlib-1.2.8]#?cd?.. [root@localhost?download]#?wget?http://www.openssl.org/source/openssl-1.0.1p.tar.gz [root@localhost?download]#?cd?openssl-1.0.1c [root@localhost?openssl-1.0.1c]#?tar?-zxvf?openssl-1.0.1c.tar.gz
5、下載nginx
[root@localhost?download]#?wget?http://nginx.org/download/nginx-1.2.8.tar.gz [root@localhost?download]#?tar?-zxvf?nginx-1.2.8.tar.gz
6、安裝
[root@localhost?download]mv?pcre-8.36?/usr/local/ [root@localhost?download]mv?zlib-1.2.8?/usr/local/ [root@localhost?download]mv?openssl-1.0.1c?/usr/local/ [root@localhost?download]mv?nginx-1.2.8?/usr/local/ [root@localhost?download]cd?/usr/local/ [root@localhost?local]#?cd?pcre-8.36 [root@localhost?pcre-8.36]#?./configure&&make&&make?install [root@localhost?pcre-8.36]?cd?../zlib-1.2.8 [root@localhost?zlib-1.2.8]#?./configure?&&?make?&&?make?install [root@localhost?zlib-1.2.8]#?cd?../openssl-1.0.1c [root@localhost?openssl-1.0.1c]#?./config?&&?make?&&?make?install [root@localhost?openssl-1.0.1c]#?cd?../nginx-1.2.8 [root@localhost?nginx-1.2.8]#?./configure?--prefix=/usr/local/nginx?&&?make?&&?make?install
7、啟動(dòng)nginx
[root@localhost?nginx]#?/usr/local/nginx/sbin/nginx?-c?/usr/local/nginx/conf/nginx.conf
8、測(cè)試
在確保可以連接到服務(wù)器的電腦上,瀏覽器輸入裝了nginx的機(jī)器的ip地址,會(huì)看到welcome to nginx!的提示說明安裝配配置成功了。
9、設(shè)置開機(jī)自動(dòng)啟動(dòng)(shell腳本處理)
[root@localhost?logs]#?vi?/etc/init.d/nginx
添加以下shell腳本。
#!/bin/bash #?nginx?startup?script?for?the?nginx?http?server #?it?is?v.0.0.2?version. #?chkconfig:?-?85?15 #?description:?nginx?is?a?high-performance?web?and?proxy?server. #???????it?has?a?lot?of?features,?but?it's?not?for?everyone. #?processname:?nginx #?pidfile:?/var/run/nginx.pid #?config:?/usr/local/nginx/conf/nginx.conf nginxd=/usr/local/nginx/sbin/nginx nginx_config=/usr/local/nginx/conf/nginx.conf nginx_pid=/var/run/nginx.pid retval=0 prog="nginx" #?source?function?library. .?/etc/rc.d/init.d/functions #?source?networking?configuration. .?/etc/sysconfig/network #?check?that?networking?is?up. [?${networking}?=?"no"?]?&&?exit?0 [?-x?$nginxd?]?||?exit?0 #?start?nginx?daemons?functions. start()?{ if?[?-e?$nginx_pid?];then ??echo?"nginx?already?running...." ??exit?1 fi ??echo?-n?$"starting?$prog:?" ??daemon?$nginxd?-c?${nginx_config} ??retval=$? ??echo ??[?$retval?=?0?]?&&?touch?/var/lock/subsys/nginx ??return?$retval } #?stop?nginx?daemons?functions. stop()?{ ????echo?-n?$"stopping?$prog:?" ????killproc?$nginxd ????retval=$? ????echo ????[?$retval?=?0?]?&&?rm?-f?/var/lock/subsys/nginx?/var/run/nginx.pid } #?reload?nginx?service?functions. reload()?{ ??echo?-n?$"reloading?$prog:?" ??#kill?-hup?`cat?${nginx_pid}` ??killproc?$nginxd?-hup ??retval=$? ??echo } #?see?how?we?were?called. case?"$1"?in start) ????start ????;; stop) ????stop ????;; reload) ????reload ????;; restart) ????stop ????start ????;; status) ????status?$prog ????retval=$? ????;; *) ????echo?$"usage:?$prog?{start|stop|restart|reload|status|help}" ????exit?1 esac exit?$retval
保存后,設(shè)置權(quán)限讓所有人可以操作。
[root@localhost?~]#?chmod?a+x?/etc/init.d/nginx [root@localhost?logs]#?/etc/init.d/nginx?status nginx?(pid?2417?2416)?is?running... [root@localhost?logs]#?/etc/init.d/nginx?stop stopping?nginx:?[?ok?] [root@localhost?logs]#?/etc/init.d/nginx?start starting?nginx:?[?ok?] [root@localhost?logs]#?/etc/init.d/nginx?status nginx?(pid?2454?2452)?is?running... [root@localhost?~]#?vi?/etc/rc.local
添加:
/etc/init.d/nginx?start
重啟電腦就會(huì)生效。
注意:腳本里面關(guān)于啟動(dòng)目錄的,如果你的安裝地址不一樣,要進(jìn)行修改。
負(fù)載均衡配置:
現(xiàn)有兩部服務(wù)器:
192.168.137.197???? (按照以上操作安裝有nginx,作為轉(zhuǎn)發(fā)機(jī),虛擬機(jī))
192.168.137.33???? (無安裝nginx,運(yùn)行有測(cè)試用的web工程,虛擬機(jī))
10.10.33.59??? (無安裝nginx,運(yùn)行有測(cè)試用的web工程,本地電腦地址)
,運(yùn)行有測(cè)試用的web工程
127.0.0.1 web_app
[root@a?conf]#?vi?/usr/local/nginx/conf/nginx.conf
配置如下展示:
worker_processes?8; pid?/usr/local/nginx/nginx.pid; worker_rlimit_nofile?102400; events { use?epoll; worker_connections?102400; } http { ?include????mime.types; ?default_type?application/octet-stream; ?fastcgi_intercept_Errors?on; ?charset?utf-8; ?server_names_hash_bucket_size?128; ?client_header_buffer_size?4k; ?large_client_header_buffers?4?32k; ?client_max_body_size?300m; ?sendfile?on; ?tcp_nopush???on; ?keepalive_timeout?60; ?tcp_nodelay?on; ?client_body_buffer_size?512k; ?proxy_connect_timeout??5; ?proxy_read_timeout????60; ?proxy_send_timeout????5; ?proxy_buffer_size????16k; ?proxy_buffers??????4?64k; ?proxy_busy_buffers_size?128k; ?proxy_temp_file_write_size?128k; ?gzip?on; ?gzip_min_length?1k; ?gzip_buffers???4?16k; ?gzip_http_version?1.1; ?gzip_comp_level?2; ?gzip_types????text/plain?application/x-javascript?text/css?application/xml; ?gzip_vary?on; ###2012-12-19?change?nginx?logs log_format?main?'$http_x_forwarded_for?-?$remote_user?[$time_local]?"$request"?' ???????'$status?$body_bytes_sent?"$http_referer"?' ???????'"$http_user_agent"?$request_time?$remote_addr'; upstream?web_app?{ server?192.168.137.197:8080?weight=1?max_fails=2?fail_timeout=30s; server?192.168.137.33:8080?weight=1?max_fails=2?fail_timeout=30s; server?10.10.33.59:8080?weight=1?max_fails=2?fail_timeout=30s; } ####chinaapp.sinaapp.com server?{ ??listen?80; ??server_name?chinaapp.sinaapp.com; ??index?index.jsp?index.html?index.htm; ??#發(fā)布目錄/data/www ??root?/data/www; ??location?/ ??{ ??proxy_next_upstream?http_502?http_504?error?timeout?invalid_header; ??proxy_set_header?host?$host; ??proxy_set_header?x-real-ip?$remote_addr; ??proxy_set_header?x-forwarded-for?$proxy_add_x_forwarded_for; ??proxy_pass?http://web_app; ??expires???3d; ??} ?} }
設(shè)置host:
[root@a?conf]#?vi?/etc/hosts
添加hosts:
127.0.0.1?web_app
啟動(dòng)nginx
[root@localhost?nginx]#?/usr/local/nginx/sbin/nginx?-c?/usr/local/nginx/conf/nginx.conf
啟動(dòng)三部服務(wù)器的web應(yīng)用:
在192.168.137.197執(zhí)行指令:
[root@a?program]#?curl?"http://web_app/index.jsp"
測(cè)試結(jié)果如下:
常見問題及解決辦法:
1、安裝pcre時(shí)提示configure: error: you need a c++ compiler for c++ support.
原因是沒有安裝c++編譯器,采用下面的命令安裝:
[root@localhost?pcre-8.37]#?yum?install?-y?gcc?gcc-c++
2、啟動(dòng)nginx失敗
[root@localhost?nginx]#?/usr/local/nginx/sbin/nginx?-c?/usr/local/nginx/conf/nginx.conf /usr/local/nginx/sbin/nginx:?error?while?loading?shared?libraries:?libpcre.so.1:?cannot?open?shared?object?file:?no?such?file?or?directory
原因是64bit的系統(tǒng),但是默認(rèn)取了/usr/local/lib里面的包
檢查方法:
[root@localhost?nginx]#?cd?/usr/local/ [root@localhost?local]#?ls?/lib64/?|grep?pcre libpcre.so.0 libpcre.so.0.0.1 [root@localhost?local]#?ls?/lib/?|grep?pcre
說明缺失的包在lib64
設(shè)置軟連接來解決:
[root@localhost?local]#?ln?-s?/lib64/libpcre.so.0.0.1?/lib64/libpcre.so.1 [root@localhost?local]#?cd?nginx [root@localhost?nginx]#?/usr/local/nginx/sbin/nginx?-c?/usr/local/nginx/conf/nginx.conf
3、啟動(dòng)報(bào)錯(cuò):
報(bào)錯(cuò):nginx: [emerg] bind() to 0.0.0.0:80 failed (98: address already in use)
解決辦法:sudo fuser -k 80/tcp
端口被占用,關(guān)閉占用端口