Nginx服務(wù)器的編譯安裝與配置
Nginx服務(wù)器的編譯安裝與配置
Nginx 是一個(gè)很強(qiáng)大的輕量級(jí)、高性能Web和反向代理服務(wù)器,由俄羅斯人開(kāi)發(fā)而成。它具有很多非常優(yōu)越的特性:在高連接并發(fā)的情況下,Nginx是Apache服務(wù)器不錯(cuò)的替代品。而且還可以作為負(fù)載均衡服務(wù)器,代碼用C語(yǔ)言完成,運(yùn)行效率非常高,還可以做郵件代理服務(wù)器。下面是學(xué)習(xí)啦小編跟大家分享的是Nginx服務(wù)器的編譯安裝與配置,歡迎大家來(lái)閱讀學(xué)習(xí)。
Nginx服務(wù)器的編譯安裝與配置
工具/原料
Linux服務(wù)器或虛擬機(jī)一臺(tái)(這里使用的CentOS6.5)
Nginx源碼包 (這里使用1.44的版本,下載鏈接:http://pan.baidu.com/s/1qWoe2te 密碼:fqji)
方法/步驟
1要編譯安裝Nginx,首先我們要安裝依賴(lài)包 pcre-devel 和 zlib-devel:
# yum install pcre-devel zlib-devel -y
程序默認(rèn)是使用 nobody 身份運(yùn)行的,我們建議使用 nginx 用戶(hù)來(lái)運(yùn)行,首先添加Nginx組和用戶(hù),不創(chuàng)建家目錄,不允許登陸系統(tǒng)
# groupadd nginx
# useradd -M -s /sbin/nologin -g nginx nginx
2準(zhǔn)備工作完成后就是下載編譯安裝Nginx了,可以從我提供的網(wǎng)盤(pán)下載,也可以去Nginx的官網(wǎng)下載。
首先解壓源碼包:
# tar xf nginx-1.4.4.tar.gz
然后 cd 到解壓后的目錄就可以執(zhí)行 ./configure 了
# cd nginx-1.4.4
指定安裝目錄和運(yùn)行時(shí)用的屬主和屬組,并啟用狀態(tài)監(jiān)控模塊等
# ./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/tmp/nginx/client/ \
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
--http-scgi-temp-path=/var/tmp/nginx/scgi \
--with-pcre
等配置完成后就可以 make && make install 了
# make && make install
# mkdir /var/tmp/nginx/client/ -pv
3等編譯安裝完成后在 /usr/local 下就會(huì)出現(xiàn) Nginx 這個(gè)目錄了,進(jìn)入這個(gè)目錄后發(fā)現(xiàn)目錄非常簡(jiǎn)單。它的配置文件存放在 conf 目錄中,網(wǎng)頁(yè)文件存放在 html 中,日志文件存放在 logs 中,sbin 目錄下只有一個(gè)可執(zhí)行程序 "nginx"
接下來(lái)我們簡(jiǎn)單的為它提供一個(gè)服務(wù)腳本吧!
# vim /etc/init.d/nginx
新建文件/etc/rc.d/init.d/nginx,內(nèi)容如下:
#!/bin/bash
# chkconfig:235 85 15
# description: Nginx is an HTTP server
. /etc/rc.d/init.d/functions
start() {
echo "Start..."
/usr/local/nginx/sbin/nginx &> /dev/null
if [ $? -eq 0 ];then
echo "Start successful!"
else
echo "Start failed!"
fi
}
stop() {
if killproc nginx -QUIT ;then
echo "Stopping..."
fi
}
restart() {
stop
sleep 1
start
}
reload() {
killproc nginx -HUP
echo "Reloading..."
}
configtest() {
/usr/local/nginx/sbin/nginx -t
}
case class="main">
Nginx服務(wù)器的編譯安裝與配置
start)
start ;;
stop)
stop ;;
restart)
restart ;;
reload)
reload ;;
configtest)
configtest ;;
*)
echo "Usage: nginx {start|stop|restart|reload|configtest}"
;;
esac
之后給這個(gè)文件可執(zhí)行權(quán)限:
# chmod +x /etc/init.d/nginx
好了,現(xiàn)在可以使用 start,stop 這些參數(shù)控制Nginx服務(wù)了
4由于腳本是我自己寫(xiě)的,還有許多不盡人意的地方,歡迎大家修改和完善!
現(xiàn)在我們就試試啟動(dòng)服務(wù)看看效果吧:
# service nginx start
記得關(guān)閉 SElinux 和 iptables 防火墻哦,
# service iptables stop
# setenforce 0
接下來(lái)就在瀏覽器中訪(fǎng)問(wèn)你服務(wù)的IP看看效果吧!是不是出項(xiàng)了歡迎的字樣呢
接下來(lái)就研究下 Nginx 的配置文件吧!
# vim /usr/local/nginx/conf/nginx.conf
各項(xiàng)參數(shù)的意義如下:
worker_processes 1; 工作進(jìn)程數(shù)量
error_log logs/error.log; 日志文件位置
pid logs/nginx.pid; pid文件位置
worker_connections 1024; 沒(méi)進(jìn)程的連接數(shù)
listen 80; 監(jiān)聽(tīng)端口
server_name localhost; 主機(jī)名
root html; 網(wǎng)站根目錄
index index.html index.htm; 網(wǎng)站索引頁(yè)
error_page 500 502 503 504 /50x.html; 訪(fǎng)問(wèn)錯(cuò)誤頁(yè)面
剩下的其他被注釋掉的代碼塊:
location ~ \.php$ { . . . . . . } 對(duì)PHP的支持,需要安裝PHP
server { . . . . . . } 添加server代碼塊能添加虛擬主機(jī)
剩下還有監(jiān)聽(tīng)443端口的超文本傳輸安全協(xié)議 HTTPS server 需要在編譯Nginx時(shí)添加ssl的支持
接下來(lái)我們?cè)囍砑右慌_(tái)虛擬主機(jī)吧,虛擬主機(jī)的添加可以基于端口,可以基于IP,也可以基于主機(jī)名,我們挨個(gè)來(lái)看看:
基于端口:
首先編輯配置文件,添加server代碼塊,記得要寫(xiě)到http{ . . . . . . }這個(gè)大的代碼塊中。
server {
listen 8080;
server_name localhost;
location / {
root /var/www/html;
index index.html index.htm;
}
}
這樣就添加了一個(gè)監(jiān)聽(tīng)8080端口的服務(wù),你也可以定義自己喜歡的端口哦。
接下來(lái)檢查下配置文件有沒(méi)有問(wèn)題,如果最后一個(gè)單詞顯示successful就代表沒(méi)問(wèn)題了,可以重新啟動(dòng)Nginx了
# service nginx configtest
# service nginx restart
接下來(lái)就給第二個(gè)虛擬主機(jī)寫(xiě)一個(gè)index吧!首先創(chuàng)建目錄
# mkdir -pv /var/www/html
# echo '
Hi! This is 8080!
' > /var/www/html/index.html好了 接下來(lái)試著在瀏覽器中訪(fǎng)問(wèn)訪(fǎng)問(wèn),記得第二個(gè)主機(jī)要加上端口訪(fǎng)問(wèn)哦
現(xiàn)在試著用不同的IP建立虛擬主機(jī)吧!我們可以在一塊網(wǎng)卡上綁定多個(gè)IP地址的方式來(lái)實(shí)現(xiàn)
# ifconfig eth0:0 10.0.0.4/8
記得把IP換成你自己的哦!然后ifconfig看看是不是多出來(lái)一個(gè)網(wǎng)卡IP了呢
讓后繼續(xù)修改配置文件,這回要修改兩個(gè)地方,一個(gè)是原本自帶的站點(diǎn)的 listen 項(xiàng),一個(gè)是自己添加的站點(diǎn)的 listen 項(xiàng)。
基于IP:
server {
listen 10.0.0.3:80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
server {
listen 10.0.0.4:80;
server_name localhost;
location / {
root /var/www/html;
index index.html index.htm;
}
}
讓他們只監(jiān)聽(tīng)不同的IP,用相同的端口
接下來(lái)再瀏覽器上用不同的IP來(lái)訪(fǎng)問(wèn)試試吧,及的還得重啟Nginx,先檢查一下,出現(xiàn)錯(cuò)誤了看看哪里配置的不對(duì),然后就可以重啟了。
# service nginx congiftest
# service nginx restart
如果配置給網(wǎng)卡的第二個(gè)IP不想要了,把它停掉就可以了
# ifconfig eth0:0 down
再 ifconfig 看看是不是沒(méi)有了呢
現(xiàn)在試試用不同的主機(jī)名吧!也是企業(yè)用的最多的方式。我們把兩個(gè)站點(diǎn)的listen項(xiàng)都改為80,然后修改service_name項(xiàng)為定義的主機(jī)名
基于主機(jī)名:
server {
listen 80;
server_name ybmq.com;
location / {
root html;
index index.html index.htm;
}
}
server {
listen 80;
server_name zhzz.com;
location / {
root /var/www/html;
index index.html index.htm;
}
}
然后重啟Nginx吧!
可是我們?cè)跒g覽器上怎么通過(guò)域名訪(fǎng)問(wèn)呢?要知道我們?cè)L問(wèn) baidu 啊,qq 啊之類(lèi)的是通過(guò)DNS服務(wù)器的,難道我們還要配置一臺(tái)DNS服務(wù)器?其實(shí)不然,我們通過(guò)修改客戶(hù)機(jī)的 hosts 文件就可以了。hosts文件是一個(gè)本地的域名解析文件,我們要解析哪些域名只要把域名和對(duì)應(yīng)的IP寫(xiě)到一起就可以了。在Windows XP之后的系統(tǒng)中,這個(gè)文件位于:
C:\Windows\System32\drivers\etc\hosts
我們用文本編輯器打開(kāi),添加兩個(gè)相同的IP對(duì)應(yīng)的兩個(gè)不同的主機(jī)名就可以了。
如下圖所示
如果你打開(kāi)這個(gè)文件發(fā)現(xiàn)已經(jīng)有很多IP地址了,可以直接在最后加入這兩行,也可以直接清空這個(gè)文件,不會(huì)有什么問(wèn)題的。這個(gè)文件的用途還可以屏蔽一些網(wǎng)站哦,只需要把網(wǎng)址對(duì)于的IP改為 127.0.0.1 也就是本地回環(huán)地址,瀏覽器查詢(xún)域名對(duì)應(yīng)的IP時(shí)時(shí)先通過(guò)查詢(xún)這個(gè)文件的,如果查詢(xún)到了,不管對(duì)錯(cuò)都不會(huì)訪(fǎng)問(wèn)DNS服務(wù)器了,所以我們給它一個(gè)錯(cuò)誤的地址,那它一輩子也打不開(kāi)被屏蔽掉的網(wǎng)站了。
好了 接下來(lái)就在瀏覽器中試試用用域名訪(fǎng)問(wèn)你的兩個(gè)站點(diǎn)吧。
如果大家還用IP訪(fǎng)問(wèn)會(huì)是什么情況呢?我不說(shuō)了,大家還是自己測(cè)試吧 哈哈o(^▽^)o
Nginx的如何新建虛擬主機(jī)就到這里了,還記不記得在編譯安裝的時(shí)候的
--with-http_stub_status_module 這個(gè)參數(shù)?它的作用是啟用狀態(tài)統(tǒng)計(jì)模塊,下面我們就開(kāi)啟這個(gè)模塊看看吧!
還是編輯Nginx的配置文件,要監(jiān)控哪一個(gè)站點(diǎn),就在那個(gè)站點(diǎn)的server中添加:
location ~ /status {
stub_status on;
access_log off;
}
接著重啟Nginx
我們可以通過(guò)在域名或IP后添加 " /status " 來(lái)訪(fǎng)問(wèn)狀態(tài)統(tǒng)計(jì):
http://ybmq.com/status
它會(huì)顯示活動(dòng)的連接和響應(yīng)的次數(shù),還有其他更多的統(tǒng)計(jì)選項(xiàng)這里就不再列舉了,感興趣的話(huà)可以問(wèn)度娘查閱更多資料