構建Nginx網站服務

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


Nginx的基本配置nginx

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


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服務腳本bash

   爲了使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)全局配置tcp

[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網站位置,能夠看到當前的統計信息

楊書凡10.png




配置虛擬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主機的配置成功

楊書凡11.png

相關文章
相關標籤/搜索