1. 程式人生 > >構建Nginx網站服務

構建Nginx網站服務

程序 系統資源 $? 準備 /var/ with sts access 穩定

隨著計算機與Internet技術的蓬勃發展,各種Web站點成為直接面向用戶的中堅力量,在各種網站服務器軟件中,除了Apache外,還有一款輕量級的HTTP服務器軟件——Nginx,其穩定性、高效的特性逐漸被越來越多的用戶認可。本篇博客將搭建Nginx網站服務器,並配置基於域名的虛擬Web主機


Nginx的基本配置

Nginx是由俄羅斯的Igor Sysoev專為性能優化而開發,其最知名的優點是它的穩定性和低系統資源消耗,以及對HTTP並發連接的高處理能力(單臺物理服務器可支持30 000~50 000個並發請求)。正因為如此,大量提供社交網絡、新聞資訊、電子商務及虛擬主機等服務的企業紛紛選擇Nginx來提供Web服務


1. 安裝Nginx

Nginx的安裝文件可以從官方網站http://www.nginx.org/下載,下面以穩定片1.6.0為例,介紹Nginx的安裝和運行控制

[root@localhost ~]# yum -y install pcre-devel zlib-devel            //Nginx的配置需要pcre、zlib等軟件包的支持
[root@localhost ~]# useradd -M -s /sbin/nologin nginx               //創建一個nginx的程序用戶
[root@localhost ~]# tar zxf nginx-1.6.0.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/nginx-1.6.0/
[root@localhost nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
[root@localhost nginx-1.6.0]# make && make install   //啟用http_stub_status_module模塊以支持狀態統計,便於查看服務器的連接信息

[root@localhost nginx-1.6.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/     
[root@localhost nginx-1.6.0]# nginx -t                        //檢查配置文件是否有錯誤
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost nginx-1.6.0]# nginx                           //開啟服務
[root@localhost nginx-1.6.0]# netstat -anpt | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*        LISTEN      4614/nginx  

[root@localhost nginx-1.6.0]# killall -s HUP nginx           //重載服務
[root@localhost nginx-1.6.0]# killall -s QUIT nginx          //關閉服務


2. 編寫Nginx服務腳本

為了使Nginx服務的啟動、停止等操作更加方便,可以編寫Nginx服務腳本,並使用chkconfig和service工具來進行管理

[root@localhost ~]# vim /etc/init.d/nginx      
#!/bin/bash
# chkconfig: 2345 99 20
# description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
  start)
   netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null
   if [ $? -eq 0 ]
   then
     echo "Nginx service already running."
   else
     $PROG -t &> /dev/null
     if [ $? -eq 0 ] ; then
       $PROG
       echo "Nginx service start success."
     else
     $PROG -t
     fi
   fi
   ;;
  stop)
   netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null
   if [ $? -eq 0 ]
   then
    kill -s QUIT $(cat $PIDF)
    echo "Nginx service stop success." 
   else
    echo "Nginx service already stop"
   fi
  ;;
  restart)
    $0 stop
    $0 start
    ;;
  status)
   netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null
   if [ $? -eq 0 ]
   then
     echo "Nginx service is running."
   else
     echo "Nginx is stop."
   fi
  ;;
  reload)
   netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null
   if [ $? -eq 0 ]
   then
    $PROG -t &> /dev/null
    if [ $? -eq 0 ] ; then
      kill -s HUP $(cat $PIDF)
      echo "reload Nginx config success."
    else
      $PROG -t
    fi
   else
      $PROG -t
    fi
   else
    echo "Nginx service is not run." 
   fi
    ;;
  *)
   echo "Usage: $0 {start|stop|restart|reload}"
   exit 1
esac

[root@localhost ~]# chmod +x /etc/init.d/nginx 
[root@localhost ~]# chkconfig --add nginx           //將nginx添加到系統服務


2. 配置文件nginx.conf

在Nginx服務器的主配置文件,包括全局配置、I/O事件配置、HTTP配置三大塊內容

(1)全局配置

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
#user  nobody;                     //運行用戶
worker_processes  1;               //工作進程數量,可參考CPU核心總數來指定工作進程數
#error_log  logs/error.log;        //錯誤日誌文件的位置
#pid        logs/nginx.pid;        //PID文件的位置


(2)I/O事件配置

建議使用epoll模型以提高性能,進程的連接數根據實際需求來定,一般在10000以下(默認1024)

events {
    use epoll;                   //使用epoll模型
    worker_connections  1024;    //每個進程處理1024個連接,可按需求進行調整
}


(3)HTTP配置

包括訪問日誌、HTTP端口、網頁目錄、默認字符集、連接保持等



Nginx的訪問狀態統計

Nginx內置了HTTP_STUB_STATUS狀態統計模塊,用來反饋當前的Web訪問情況。除了編譯安裝時需要啟動該模塊外,還需要修改nginx.conf配置文件,指定訪問位置並打開stub_status配置

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
……省略部分內容
    server {
        location /status {        //訪問的位置為/status
          stub_status on;         //打開狀態統計功能
          access_log off;         //關閉此位置的日誌記錄
}
……省略部分內容
}

[root@localhost ~]# service nginx restart


在瀏覽器中訪問Nginx服務器的/status網站位置,可以看到當前的統計信息

技術分享圖片




配置虛擬Web主機

在前面的Apache服務中,已經介紹了基於域名、基於IP地址、基於端口號三種虛擬Web主機。而使用Nginx搭建虛擬Web主機服務器時,每個虛擬Web站點擁有獨立的“server{ }”配置項,網站名稱、IP地址、端口號都可以單獨指定,下面將配置基於域名的虛擬Web主機

(1)搭建DNS服務器

這裏采用另一種方法,修改hosts文件,只能在本機解析域名

[root@localhost ~]# vim /etc/hosts
127.0.0.1       www.ysf.com
127.0.0.1       www.yangshufan.com


(2)準備網站目錄及測試文件

[root@localhost ~]# mkdir /var/www/ysf
[root@localhost ~]# mkdir /var/www/yangshufan
[root@localhost ~]# echo www.ysf.com > /var/www/ysf/index.html
[root@localhost ~]# echo www.yangshufan.com > /var/www/yangshufan/index.html

(3)調整nginx.conf配置文件

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
http {
……省略部分內容
    server {
        listen       80;
        server_name  www.ysf.com;
        charset utf-8;
        #access_log  logs/host.access.log  main;
        location / {
            root   /var/www/ysf;
            index  index.html index.htm;
        }
     }
    server {
        listen       80;
        
        server_name  www.yangshufan.com;

        location / {
            root   /var/www/yangshufan;
            index  index.html index.htm;
        }
    }  
}   
[root@localhost ~]# service nginx reload


(4)訪問虛擬Web主機

在瀏覽器中分別訪問兩個站點,若能看到測試文件,就表示虛擬Web主機的配置成功

技術分享圖片




構建Nginx網站服務