系統環境:
os:centos6.5x64
hostname:test1.lxm.com
ip:10.0.10.11
nginx:nginx-1.6.1.tar.gz
openssl:openssl-1.0.1i.tar.gz
software path:/root/soft/
software install path: /usr/localphp
1.安裝系統所需的編譯軟件(若是安裝過了,則跳過,本人新裝系統,因此須要安裝)
#yum -y install gcc* compact-gcc* automake make autoconflinux
2.安裝nginx依賴軟件
#yum -y install pcre pcre-develnginx
注:pcre軟件包提供了nginx正則表達式的支持,若是不想使用系統自帶的pcre軟件包或者想要使用更高版本的pcre軟件包,能夠自行編譯安裝,本人採用人rpm包安裝
編譯安裝pcre:
#tar -zxvf pcre-8.35.tar.gz
#cd pcre-8.35
#mkdir /usr/local/pcre (建立pcre安裝的目錄,本人習慣將編譯安裝的軟件放置於/usr/local/目錄下.不過這裏要注意的是,若是自行下載pcre包,nginx使用的是源碼解壓的目錄,而不是安裝後的目錄,這跟apache不同)
#./configure --prefix=/usr/local/pcre
#make && make installweb
3.安裝nginx
#cd /root/soft
#tar -zxvf openssl-1.0.1i.tar.gz
#tar -zxvf nginx-1.6.1.tar.gz
#mkdir /usr/local/nginx
#mkdir -pv /usr/local/nginx/{client_body_temp,proxy_temp,fastcgi_temp,uwsgi_temp,scgi_temp}
#./configure --prefix=/usr/local/nginx/ --with-pcre --with-http_ssl_module --with-openssl=/root/soft/openssl-1.0.1i --with-http_gzip_static_module --with-http_realip_module --with-http_stub_status_module --http-client-body-temp-path=/usr/local/nginx/client_body_temp/ --http-proxy-temp-path=/usr/local/nginx/proxy_temp/ --http-fastcgi-temp-path=/usr/local/nginx/fastcgi_temp/ --http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp/ --http-scgi-temp-path=/usr/local/nginx/scgi_temp/
#make && make install
#make clean正則表達式
注:此處的nginx編譯時加入了ssl的功能,可是不須要事先編譯安裝openssl,由於這裏只須要調用openssl的源碼包.此外temp幾個目錄文件必須手工建立,不然安裝完後默認是沒有的,這也是高版本和低版本的區別apache
4.啓動並測試nginx
建立nginx的啓動用戶和組:
#groupadd -g 48 nginx
#useradd -g 48 -u 48 -s /sbin/nologin nginx -M
#cd /usr/local/nginx/conf/
#vim nginx.conf
將#user nobody; 修改成user nginx;編程
#/usr/local/nginx/sbin/nginx -t : 測試配置文件是否有語法錯誤
#/usr/local/nginx/sbin/nginx :啓動nginx服務
#ps aux | grep nginx :查看是否有nginx進程
#netstat -nultp | grep 80 :nginx默認監聽80端口,查看是否正常vim
若是檢查一切正常,則使用瀏覽器進程訪問測試:
http://10.0.10.11
正常狀況下會返回nginx的歡迎界面:centos
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.瀏覽器
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.
Thank you for using nginx.
注:這裏的內容爲複製,第一次寫發現插入不了圖片,有待研究,哈哈哈。。。。。
若是發現不能訪問,測試可能有兩個問題:
1)查看selinux是否關閉
#sestatus
若是selinux開啓,則臨時容許:
#setenforce 0
若是想永久關閉,則修改配置文件,以後在重啓系統便可;
#sed -i '/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
若是不會使用sed命令,則使用vim打開/etc/sysconfig/selinux文件,將其中的SELINUX=enforcing改成SELINUX=disabled便可,以後重啓系統生效。
2)查看iptables是否開啓
系統默認是開啓iptables來保護系統的安全,默認狀況下只容許ssh的遠程鏈接和已經創建鏈接以及相關聯的進程進行交互訪問,所以默認開啓狀況下是阻止80端口訪問的。此時有兩種經常使用的解決辦法:
(1):清空規則,由於iptables鏈的默認規則是ACCEPT
#iptables -F
(2):添加一條容許訪問80端口的規則
#iptables -t filter -I INPUT 5 -m state --state NEW -m tcp -p tcp -s 0/0 --dport 80 -j ACCEPT
注意:我這裏使用的是-I(插入)選項,該選項默認是在匹配該number規則的前面插入一條規則。
附:
1.nginx 編譯選項解釋
nginx的編譯選項雖然不是不少,可是也很多,所以這裏不作一一解釋,也沒有必要,只對一些常見的選項進行解釋
查看編譯的選項:
#cd /root/soft/nginx-1.6.1 //即nginx的解壓目錄下
#./configure --help | less
注:在編譯軟件的時候,新手一般會問,到底這個軟件默認開啓了那些功能,哪些功能又是沒開啓的。這裏提供你們一個簡單的判斷方法,當咱們查看編譯選項的時候,--with開頭的一般是默認沒有開啓的功能,若是要開啓該功能,則須要編譯的時候手動添加該選項開啓該功能,若是是已--without開頭的,則默認是開啓該功能的,不作任何設置,編譯安裝好的軟件就可使用該功能
--with-rtsig_module
--with-select_module
--without-select_module
--with-poll_module
--without-poll_module
以上幾個模塊都是web站點底層併發鏈接的信號處理機制,對nginx來講,默認採用的epoll機制,可以輕鬆的應付c10K的問題
--with-file-aio
開啓對內核文件異步io傳輸的支持,可以提供nginx的性能,可是在使用前,建議你們對於氣底層的原理要熟悉
--with-ipv6
開啓對ipv6的支持
--with-http_ssl_module
開啓對ssl的支持,支持證書的功能
--with-http_spdy_module
開啓對spdy的支持,spdy是google開發的一種tcp應用層協議,能夠下降網絡延遲,提高網絡性能
--with-http_realip_module
開啓該模塊,能夠記錄真實的源ip地址
--with-http_p_w_picpath_filter_module
開啓該模塊可用用來對圖片內容進行過來,可是該模塊須要gd庫的支持
--with-http_dav_module
開啓該模塊能夠用來針對性的設置文件或者目錄的權限
--with-http_flv_module
該選項用來開啓nginx對flv視頻流的支持
--with-http_mp4_module
開啓該模塊支持mp4視頻流
--with-http_gunzip_module
開啓該模塊支持對gzip壓縮文件的解壓功能
--with-http_gzip_static_module enable ngx_http_gzip_static_module
開啓該模塊能夠對文件進行檢查是否已經被gzip壓縮,由於使用nginx時,爲了下降帶寬的使用,加快網絡傳輸速度,一般會採用gzip壓縮必定格式的文件。該模塊就能夠防止已經被壓縮的文件再次壓縮
--with-http_auth_request_module
該模塊用來設置nginx的基於子請求的認證功能
--with-http_random_index_module
該選項可讓nginx支持隨機選項一個索引頁面返回給客戶端
--with-http_secure_link_module
這個模塊用於爲所需的安全性「令牌」計算和檢查請求URL
--with-http_degradation_module
開啓該選項容許nginx在內層不足的狀況下返回204或者444狀態碼
--with-http_stub_status_module
使用該選項,能夠是nginx支持使用web界面查看nginx的實時鏈接狀態,也就是一些狀態信息
--without-http_gzip_module
該選項是用來設置gizp壓縮功能的設置
--without-http_userid_module
該選項是用來獲取客戶端cookie功能的設置
--without-http_access_module
該選項是用來設置nginx對訪問權限的設置
--without-http_auth_basic_module
該選項用來設置nginx是否支持給予用戶和密碼認證的訪問權限控制
--without-http_autoindex_module
該選項用來設置nginx對自動因此的支持,也就是web節目訪問時,能夠返回一個文件列表
--without-http_referer_module
該選項用來設置nginx的防盜鏈功能
--without-http_rewrite_module
該選項用來設置nginx支持重定向轉發規則
--without-http_proxy_module
該選項用來設置nginx支持proxy功能
--without-http_fastcgi_module
該選項用來設置nginx支持fastcgi,一般用來和php進行整合
--without-http_uwsgi_module
該選項用來設置nginx是否支持uwsgi的程序
--without-http_scgi_module
該選項用來設置nginx是否支持scgi的程序
--without-http_memcached_module
該選項用來設置nginx是否支持memcached
--without-http_limit_conn_module
該選項用來設置nginx是否支持併發鏈接數的限制,一般用來防止攻擊
--without-http_limit_req_module
該選項用來設置nginx是否支持請求數的限制
--without-http_browser_module
該選項用來設置nginx是否支持識別客戶段的瀏覽器功能,能夠針對不一樣的客戶端瀏覽器來返回不一樣的內容
--without-http_upstream_ip_hash_module
--without-http_upstream_least_conn_module
--without-http_upstream_keepalive_module
以上幾個選項是針對nginx做爲反向代理時的設置
--with-http_perl_module
--with-perl_modules_path=PATH
--with-perl=PATH
以上幾個選項用來開啓對perl正則表達式的支持,一般咱們會使用pcre來開啓對perl正則表達式的支持,在編譯的時候使用--with-pcre
--http-log-path=PATH
指定nginx的日誌存放路徑
--http-client-body-temp-path=PATH
--http-proxy-temp-path=PATH
--http-fastcgi-temp-path=PATH
--http-uwsgi-temp-path=PATH
--http-scgi-temp-path=PATH
以上幾個選項都是針對nginx運行中的一些臨時文件的存放目錄的設置,在nginx的新版本中,必須手動指定,不然編譯安裝後,不存在此類目錄
--without-http
nginx默認也是一個web軟件,支持大件web站點,若是要關閉此功能,則使用該選項
--without-http-cache
nginx默認支持http的緩存功能,若是要關閉緩存功能,則使用該選項
--with-mail
--with-mail_ssl_module
--without-mail_pop3_module
--without-mail_imap_module
--without-mail_smtp_module
以上幾個選項都是跟mail有關,nginx也支持main反向代理
--with-google_perftools_module
該選項用來開啓支持google perftools工具,該工具能夠完成對nginx實時性能的檢測和調優
--add-module=PATH
該選項特別重要,nginx默認自帶的模塊,並不能完成須要的全部功能,此時若是要使用額外的模塊來實現相應的功能,就須要使用該選項來添加額外的模塊到nginx中
2.nginx LSB啓動腳步
#vim /etc/rc.d/init.d/nginx
複製下面的內容到該文件中:
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemin
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
lockfile=/var/lock/subsys/nginx
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
;;
esac
保存該文件
#chmod a+x /etc/rc.d/init.d/nginx
#dos2unix /etc/rc.d/init.d/nginx :將該腳步的格式轉換爲linux下的格式,主要區別在於行結束符,每每一些複製的腳步看起來內容沒有任何錯誤,但在linux下執行就是報錯,一般都是格式沒轉換的緣由
#service nginx restart :重啓一下nginx,若是重啓成功,則表示該腳步能夠正常使用
#chkconfig --add nginx
#chkconfig --level 3 nginx on
以上兩行能夠設置nginx開機時在3級別上自動啓動
注:使用該腳步時,要確保腳步中可執行文件和配置文件的路徑是正確的,不然會報錯.其次,所謂LSB腳步是linux/unix的一種腳步編程規範,反正在/etc/rc.d/init.d/目錄下的啓動腳步,都必須支持LSB的格式
到此爲止,nginx的安裝部署就說到這裏。更多nginx技術文檔請看下回分解。。。。。。。
結束!!!