Nginx部署

一、Nginx簡介


  • Nginx (engine x) 是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務器。Nginx是由伊戈爾·賽索耶夫爲俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0發佈於2004年10月4日。
  • 其將源代碼以類BSD許可證的形式發佈,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。2011年6月1日,nginx 1.0.4發佈。
  • Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。其特點是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。

二、Nginx優點


  • 輕量化:安裝簡單,配置文件簡潔(還能夠支持perl語法)、Bug非常少
  • 高併發:相較於Apache擁有更高的單臺併發量
  • 多平臺:Nginx代碼完全用C語言從頭寫成,已經移植到許多體系結構和操作系統,可以在大多數 Unix、Linux上編譯運行,並有 Windows 移植版
  • 函數庫:Nginx有自己的函數庫,並且除了zlib、PCRE和OpenSSL之外,標準模塊只使用系統C庫函數。而且,如果不需要或者考慮到潛在的授權衝突,可以不使用這些第三方庫。
  • 模塊化結構:包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCGI或其它代理服務器處理單頁中存在的多個 SSI,則這項處理可以並行運行,而不需要相互等待。FastCGI,擁有簡單的負載均衡和容錯。
  • 郵件代理服務器:Nginx 同時也是一個非常優秀的郵件代理服務器(最早開發這個產品的目的之一也是作爲郵件代理服務器),Last.fm 描述了成功並且美妙的使用經驗
  • 負載均衡服務器(Tomcat+Nginx):Nginx 既可以在內部直接支持 Rails 和 PHP 程序對外進行服務,也可以支持作爲 HTTP代理服務器對外進行服務。Nginx採用C進行編寫,不論是系統資源開銷還是CPU使用效率都比 Perlbal 要好很多
  • 支持 SSL 和 TLSSNI
  • Nginx支持的平臺
    FreeBSD 3— 10 / i386; FreeBSD 5— 10 / amd64;
    Linux 2.2— 4 / i386; Linux 2.6— 4 / amd64; Linux 3— 4 / armv6l, armv7l, aarch64;
    Solaris 9 / i386, sun4u; Solaris 10 / i386, amd64, sun4v;
    AIX 7.1 / powerpc;
    HP-UX 11.31 / ia64;
    Mac OS X / ppc, i386;
    Windows XP, Windows Server 2003.

    參考百度百科:https://baike.baidu.com/item/nginx/3817705?fr=aladdin#1_2

三、Nginx部署


1.安裝軟件包

nginx:http://nginx.org/en/download.html

yum -y install pcre-devel           //支持地址重寫功能(防盜鏈)
useradd -M -s /sbin/nologin nginx       //新建運行用戶
tar -zxvf nginx-1.6.0.tar.gz -C /usr/src/   //解壓nginx源碼包
cd /usr/src/nginx-1.6.0/            //進入nginx源碼解壓目錄
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

詳解
--user:指定運行用戶
--group:指定運行組
--with-http_stub_status_module:啓用狀態統計模塊支持

make && make install

2.修改配置文件

vim /usr/local/nginx/conf/nginx.conf //編輯nginx主配置文件

user  nobody nginx;             //指定Nginx運行用戶和組
worker_processes  1;                //啓動進程數(根據物理CPU個數設置)
error_log  logs/error.log  info;        //定義錯誤日誌,記錄級別爲info(信息)
pid        logs/nginx.pid;          //指定PID文件(存儲程序進程號)位置
events {
    use epoll;                  //使用epoll網絡I/O模型,優化Nginx
    worker_connections  1024;           //每個工作進程允許最大的同時連接數
}
http {
    include       mime.types;           
//額外加載該文件(mime.types內定義各文件類型映像,如image/png  png;png格式文件爲圖片類型;主要用於識別文件類型,什麼類型使瀏覽器用什麼方式呈現)
    default_type  application/octet-stream; //默認響應爲文件流
    access_log  logs/access.log  main;          //指定所有站點訪問日誌存放路徑
    sendfile        on;                 //打開系統函數sendfile()提高性能
    tcp_nopush     on;                  //sendfile開啓後才生效,調用tcp_cork方法
    #keepalive_timeout  0;
    keepalive_timeout  65;              //會話保持時間,指定時間內客戶端無訪問請求,斷開連接,需連接時重新請求
    gzip  on;                       //網頁壓縮
    server {
        listen       80;                    //定義服務器監聽端口
        server_name  localhost;                 //定義服務器名及監聽IP
        charset utf-8;                  //網站的字符編碼
        access_log  logs/host.access.log  main;     //指定當前站點訪問日誌存放路徑
        location / {                        ////匹配客戶端所有請求,執行如下操作
            root   html;                    //網頁存放目錄
            index  index.html index.htm;            //Nginx首頁支持頁面
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {                  //錯誤頁面
        }
    }
}

3.啓動服務

ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ 或echo "PATH=$PATH:/usr/local/nginx/sbin/" >>/etc/profile && source /etc/profile
//將命令做軟鏈接或加入到PATH環境變量,方便命令執行
vim /etc/init.d/nginx    //編寫服務啓動腳本
#!/bin/bash
#chkconfig: - 99 20
#description: Nginx Server Control Script
NP="/usr/local/nginx/sbin/nginx"
NPF="/usr/local/nginx/logs/nginx.pid"
case "$1" in 
  start)
    $NP;
    if [ $? -eq 0 ] 
    then
      echo "nginx is starting!! "
    fi
  ;;
  stop)
    kill -s QUIT $(cat $NPF)
    if [ $? -eq 0 ]
    then
    echo "nginx is stopping!! "
    fi
  ;;
  restart)
    $0 stop
    $0 start
  ;;
  reload)
    kill -s HUP $(cat $NPF)
    if [ $? -eq 0 ]
    then
      echo "nginx config file is reload! "
    fi
  ;;
  *)
    echo "Usage: $0 {start|stop|restart|reload}"
    exit 1
esac
exit 0
chmod +x /etc/init.d/nginx
/etc/init.d/nginx start && chkconfig --level 35 nginx on
nginx -t            //檢查配置文件是否有誤

4.增加狀態統計支持

vim /usr/local/nginx/conf/nginx.conf

    location  /status {         //在server下添加如下行
        stub_status on;
        access_log off;
    }
/etc/init.d/nginx restart

客戶端訪問:http://192.168.1.10/status

5.awstats狀態統計頁面

(1)awstats部署

tar -zxvf awstats-7.3.tar.gz                //解壓
mv awstats-7.3 /usr/local/awstats           //移動並重命名爲/usr/local/awstats目錄
chown -R root:root /usr/local/awstats           //設置目錄所有者及所有組爲root用戶
chmod -R 755 /usr/local/awstats/            //給予所有者完整權限
chmod +x /usr/local/awstats/tools/*.pl          //給予所有以.pl結尾的文件所有人擁有執行權限
chmod +x /usr/local/awstats/wwwroot/cgi-bin/*.pl    //給予所有以.pl結尾的文件所有人擁有執行權限

(2)awstats配置

cd /usr/local/awstats/tools/
./awstats_configure.pl              //生成配置文件及目錄(y-->none-->y-->主機名-->回車-->回車)
vim /etc/awstats/awstats.www.hiahia.com.conf        //編輯生成的配置文件
  50 LogFile="/usr/local/nginx/logs/access.log"     //修改Nginx訪問日誌路徑
mkdir /var/lib/awstats              //創建圖表存放目錄
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl --update --config=www.hiahia.com      //根據日誌生成圖表

(3)生成html靜態頁面

mkdir /usr/local/nginx/html/awstats         //創建靜態頁面存放目錄
./awstats_buildstaticpages.pl --update --config=www.xueluo.org --lang=cn --dir=/usr/local/nginx/html/awstats/
//根據配置文件生成中文的html靜態文件到/usr/local/nginx/html/awstats/
vim /usr/local/nginx/conf/nginx.conf
 39         location ~ ^/awstats {
 40            root   /usr/local/nginx/html/awstats;
 41            index  index.html;
 42         }
 43 
 44         location ~ ^/icon|/css|/js|/classess {
 45              root /usr/local/awstats/wwwroot/;
 46         }
crontab -e                      //新建計劃任務,每隔5分鐘生成圖表並轉換爲html文件
    */5 * * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl --update --config=www.hiahia.com && /usr/local/awstats/tools/awstats_buildstaticpages.pl --update --config=www.hiahia.com --lang=cn --dir=/usr/local/nginx/html/awstats/  

(4)訪問
http://<IP>/awstats.www.hiahia.com.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章