CentOS6.8下安裝Nginx-1.9.15

1. 簡介php

Nginx是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP代理服務器。linux

Nginx是一款輕量級的Web服務器/反向代理服務器以及電子郵件代理服務器,並在一個BSD-like協議下發行。由俄羅斯的程序設計師lgor Sysoev所開發,供俄國大型的入口網站及搜索引擎Rambler使用。其特色是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁服務器中表現較好。nginx

Nginx相較於Apache\lighttpd具備佔有內存少,穩定性高等優點,而且依靠併發能力強,豐富的模塊庫以及友好靈活的配置而聞名。在Linux操做系統下,nginx使用epoll事件模型,得益於此,nginxlinux操做系統下效率至關高。同時NginxOpenBSDFreeBSD操做系統上採用相似於Epoll的高效事件模型kqueue.c++

2. Nginx的優點web

① 做爲Web服務器,Nginx處理靜態文件、索引文件,自動索引的效率很是高算法

② 做爲代理服務器,Nginx能夠實現無緩存的反向代理加速,提升網站運行速度vim

③ 做爲負載均衡服務器,Nginx既能夠在內部直接支持Railsphp,也能夠支持HTTP代理服務器對外進行服務,同時還支持簡單的容錯和利用算法進行負載均衡瀏覽器

④ 在性能方面,Nginx是專門爲性能優化而開發的,實現上很是注重效率。它採用內核Poll模型,能夠支持更多的併發鏈接,最大能夠支持對5萬個併發鏈接數的響應,並且只佔用很低的內存資源緩存

⑤ 在穩定性方面,Nginx採起了分階段資源分配技術,使得CPU與內存的佔用率很是低。Nginx官方表示,Nginx保持1萬個沒有活動的鏈接,而這些鏈接只佔用2.5MB內存,所以,相似DOS這樣的攻擊對Nginx來講基本上是沒有任何做用的性能優化

⑥ 在高可用性方面,Nginx支持熱部署,啓動速度特別迅速,所以能夠在不間斷服務的狀況下,對軟件版本或者配置進行升級,即便運行數月也無需從新啓動,幾乎能夠作到7x24小時不間斷地運行

Nginx具備很高的穩定性;

支持熱部署;

代碼質量很是高,代碼很規範,手法成熟,模塊擴展也很容易;

採用了一些os提供的最新特性如對sendfile(Linux2.2+),accept-filterFreeBSD4.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地址/,出現如下頁面,安裝成功。

相關文章
相關標籤/搜索