1. 簡介php
Nginx是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP代理服務器。linux
Nginx是一款輕量級的Web服務器/反向代理服務器以及電子郵件代理服務器,並在一個BSD-like協議下發行。由俄羅斯的程序設計師lgor Sysoev所開發,供俄國大型的入口網站及搜索引擎Rambler使用。其特色是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁服務器中表現較好。nginx
Nginx相較於Apache\lighttpd具備佔有內存少,穩定性高等優點,而且依靠併發能力強,豐富的模塊庫以及友好靈活的配置而聞名。在Linux操做系統下,nginx使用epoll事件模型,得益於此,nginx在linux操做系統下效率至關高。同時Nginx在OpenBSD或FreeBSD操做系統上採用相似於Epoll的高效事件模型kqueue.c++
2. Nginx的優點web
① 做爲Web服務器,Nginx處理靜態文件、索引文件,自動索引的效率很是高算法
② 做爲代理服務器,Nginx能夠實現無緩存的反向代理加速,提升網站運行速度vim
③ 做爲負載均衡服務器,Nginx既能夠在內部直接支持Rails和php,也能夠支持HTTP代理服務器對外進行服務,同時還支持簡單的容錯和利用算法進行負載均衡瀏覽器
④ 在性能方面,Nginx是專門爲性能優化而開發的,實現上很是注重效率。它採用內核Poll模型,能夠支持更多的併發鏈接,最大能夠支持對5萬個併發鏈接數的響應,並且只佔用很低的內存資源緩存
⑤ 在穩定性方面,Nginx採起了分階段資源分配技術,使得CPU與內存的佔用率很是低。Nginx官方表示,Nginx保持1萬個沒有活動的鏈接,而這些鏈接只佔用2.5MB內存,所以,相似DOS這樣的攻擊對Nginx來講基本上是沒有任何做用的性能優化
⑥ 在高可用性方面,Nginx支持熱部署,啓動速度特別迅速,所以能夠在不間斷服務的狀況下,對軟件版本或者配置進行升級,即便運行數月也無需從新啓動,幾乎能夠作到7x24小時不間斷地運行
Nginx具備很高的穩定性;
支持熱部署;
代碼質量很是高,代碼很規範,手法成熟,模塊擴展也很容易;
採用了一些os提供的最新特性如對sendfile(Linux2.2+),accept-filter(FreeBSD4.1+),TCP_DEFER_ACCEPT(Linux 2.4+)的支持,從而大大提升了性能。
3. 安裝依賴包
# yum -y update
# yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre* make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel
4. 建立用戶
[root@zabbix ~]# useradd nginx -s /sbin/nologin -M
5. 編譯安裝
[root@zabbix opt]# wget http://nginx.org/download/nginx-1.9.15.tar.gz [root@zabbix opt]# tar xvf nginx-1.9.15.tar.gz [root@zabbix opt]# cd nginx-1.9.15 [root@zabbix nginx-1.9.15]# ./configure \ --prefix=/usr/local/product/nginx-1.9.15 \ --user=www \ --group=www \ --with-http_ssl_module \ #支持https --with-http_v2_module \ --with-http_stub_status_module \ #支持nginx狀態查詢 --with-pcre #支持rewrite重寫功能,必須制定pcre [root@zabbix nginx-1.9.15]# make && make install [root@zabbix nginx-1.9.15]# ln -s /usr/local/product/nginx-1.9.15 /usr/local/nginx ==>建立軟連接
6. 啓動nginx
[root@localhost nginx-1.8.0]# /usr/local/nginx/sbin/nginx
7. Nginx啓動錯誤告警:
①
[root@zabbix nginx-1.8.0]# /usr/local/nginx/sbin/nginx nginx: [emerg] getpwnam(「www」) failed
解決方案一
在nginx.conf中 把user nobody的註釋去掉既可
解決方案二
錯誤的緣由是沒有建立www這個用戶,應該在服務器系統中添加www用戶組和用戶www,以下命令:
[root@zabbix ~]# groupadd -f www [root@zabbix ~]# useradd -g www www
②
[root@zabbix nginx-1.8.0]# /usr/local/nginx/sbin/nginx nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 80端口被佔用 [root@zabbix nginx-1.8.0]# netstat -tunlp 找到佔用80端口的進程 kill掉就好了
8. 將nginx添加到service管理,編寫腳本:
[root@zabbix ~]# vim /etc/rc.d/init.d/nginx #!/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
添加執行權限,加入chkconfig管理
[root@zabbix ~]# chmod +x /etc/rc.d/init.d/nginx [root@zabbix ~]# chkconfig --add nginx [root@zabbix ~]# chkconfig --level 345 nginx on #隨系統啓動
9. 防火牆開放80端口
# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT # service iptables save # service iptables restart
或者關閉防火牆
# service iptables stop
10. 瀏覽器檢測
在瀏覽器中輸入http://服務器IP地址/,出現如下頁面,安裝成功。