Nginx是一個web服務器也可以用來做負載均衡及反向代理使用沙峻,目前使用最多的就是負載均衡,具體簡介我就不介紹了百度一下有很多锹杈,下面直接進入安裝步驟撵孤。
官網(wǎng)下載
Nginx的官網(wǎng)下載地址是:http://nginx.org/en/download.html〗咄可以點擊進入邪码,看到如圖所示頁面:
其中紅圈圈住的代表當前最新的穩(wěn)定正式版本,我們也下載此版本咬清。因為是在centos上面安裝闭专,我們下載Linux版本:
下載完后,上傳到服務器上面枫振,比如我們上傳的路徑為 /packages喻圃。
環(huán)境準備
安裝前先要確定Linux的內(nèi)核版本要在2.6以上,只有2.6之后才支持epool 粪滤,在此之前使用select或pool多路復用的IO模型,無法解決高并發(fā)壓力的問題雀扶。通過命令uname -a 即可查看:
另外Nginx需要GCC編譯器杖小,用來編譯C語言環(huán)境,Nginx不會提供二進制可執(zhí)行程序愚墓,只能下載源碼進行編譯予权;
另外還需要PCRE庫,是專門用來做正則表達式的浪册,Nginx里面很多地方都用到了正則表達式扫腺,因此需要進行安裝;
另外還需要zlib庫村象,zlib庫用于對HTTP包的內(nèi)容做gzip格式的壓縮笆环,如果我們在nginx.conf里配置了gzip on,并指定對于某些類型(content-type)的HTTP響應使用gzip來進行壓縮以減少網(wǎng)絡傳輸量厚者;
另外還需要OpenSSL開發(fā)庫躁劣,如果我們的服務器不只是要支持HTTP,還需要在更安全的SSL協(xié)議上傳輸HTTP库菲,那么就需要擁有OpenSSL了账忘。另外,如果我們想使用MD5、SHA1等散列函數(shù)鳖擒,那么也需要安裝它溉浙;
上面幾個庫都是Nginx 基礎功能所必需的,為簡單起見我們可以通過yum 命令統(tǒng)一安裝:
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre pcre-devel
解壓安裝
安裝完畢后蒋荚,解壓nginx戳稽,在對應的目錄/packages中,有我們下載的包:
執(zhí)行解壓命令:
tar -zxvf nginx-1.16.0.tar.gz
可以看到解壓到了目錄下面:
進入nginx文件夾圆裕,執(zhí)行命令:
./configure
然后執(zhí)行命令:
make
然后執(zhí)行命令:
make install
執(zhí)行完成之后nginx 運行文件 就會被安裝在 /usr/local/nginx 下广鳍。
進入安裝目錄:
cd? /usr/local/nginx
可以看到目錄下有四個文件夾,conf是配置目錄吓妆,html是靜態(tài)資源目錄赊时,logs是日志,sbin是一些執(zhí)行命令行拢。
下面介紹幾種啟動方式:
#默認方式啟動:
./sbin/nginx
#指定配置文件啟動
./sbing/nginx -c /tmp/nginx.conf
#指定nginx程序目錄啟動
./sbin/nginx -p /usr/local/nginx/
介紹幾種停止方式:
#快速停止
./sbin/nginx -s stop
#優(yōu)雅停止
./sbin/nginx -s quit
其它命令:
# 熱裝載配置文件 祖秒,不用停止可以刷新配置(一定要熟練,這是用的最多的命令)
./sbin/nginx -s reload
# 重新打開日志文件(下面單說)
./sbin/nginx -s reopen
# 檢測當前使用的是哪個配置文件,配置是否正確(可以在配置文件加點亂碼測試一下)(這個命令也經(jīng)常使用)
./sbin/nginx -t
我們啟動nginx,訪問頁面桐经,查看是否啟動成功:
可以看到啟動成功击喂!
注意,nginx默認使用的端口是80先口,如果端口已經(jīng)被占據(jù),那么需要修改默認端口!默認的配置在安裝文件夾下的conf文件夾下的ngixn.conf文件中湿故,目錄為?/usr/local/nginx/conf ,修改端口:
啟動可以看到端口改為8080:
除了上面最簡單的安裝方式之外膜蛔,在執(zhí)行./configure命令的時候坛猪,還可以指定一些參數(shù),比如安裝目錄皂股,構建模塊等等墅茉。下面我們以基于參數(shù)的形式安裝:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-debug
上面的參數(shù)中包含了安裝目錄,加入了http_stub_status(用來做連接數(shù)檢測)模塊呜呐,和http_ssl(https協(xié)議)模塊就斤,with debug表示打開debug開關。
然后執(zhí)行make卵史,
執(zhí)行完后战转,源文件目錄下有個objs文件夾,
進入這個文件夾以躯,把其中的nginx文件替換掉安裝目錄下的sbin下的nginx文件槐秧,執(zhí)行下面的命令:
cd objs
cp nginx /usr/local/nginx/sbin/
會出現(xiàn)一個是否覆蓋的問題啄踊,輸入y,點擊回車即可刁标。
啟動完后颠通,我們可以看到nginx有兩個進程:
一個master,一個worker膀懈。master進程主要用來做熱裝載更新或者日志之類的顿锰。worker進程才是真正執(zhí)行客戶端連接的進程,為了提高性能启搂,worker進程是可以設置成多個的硼控。后面文章再說。
上面有個命令?./sbin/nginx -s? ? 是從新打開日志文件胳赌,什么意思呢牢撼?下面做個演示,首先查看我們?nèi)罩灸夸浵旅娴娜罩疚募笮疑苫。?/p>
然后打開頁面熏版,連續(xù)刷新幾次,再查看大泻床簟:
可以看到access.log文件變大了撼短,那么我們把現(xiàn)在的日志文件備份一下,然后新建一個access.log文件:
cd /usr/local/nginx/logs/
mv access.log access.log.bak
然后新建一個文件命名為access.log:
現(xiàn)在再次刷新頁面挺勿,然后查看哪個日志文件變大了:
發(fā)現(xiàn)不是新的日志文件變大了曲横,而是老的備份文件,說明日志還是寫到老文件里面去了不瓶,這是什么原因呢胜榔?
nginx把日志寫入日志文件的時候,并不是根據(jù)文件路徑去找文件湃番,而是根據(jù)日志文件的句柄,而句柄中記錄了使用哪個日志文件吭露,不會因為文件的名字改變而改變吠撮。
這個時候要寫使用新建的日志文件,必須使用?reopen 命令從新打開文件讲竿,相當于從新切換句柄中的日志文件引用泥兰,現(xiàn)在執(zhí)行命令:
./sbin/nginx -s reopen
然后再刷新頁面,可以看到日志寫入到新文件中:
用上面這種方式可以進行日志切割備份题禀。