Centos 7部署Nginx網站服務

1、Nginx服務基礎

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

一、Nginx服務的優點

Nginx是一個很牛的高性能Web和反向代理服務器,它具備有不少很是優越的特性:html

  • 高併發鏈接:官方測試能支撐5萬併發鏈接,在實際生產環境中跑到2,~3W併發連;
  • 內存消耗少:在3W併發鏈接下,開啓的10個NGINX進程才消耗150M內存(15M*10=150M);
  • 配置文件很是簡單:風格跟程序同樣通俗易懂;
  • 成本低廉:Nginx做爲開源軟件,能夠無償使用,而購買F5 BIG-IP、NetScaler等硬件負載均衡交換機則須要十多萬至幾十萬人民幣;
  • 支持rewrite重寫規則:可以根據域名、URL的不一樣,將HTTP請求分發到不一樣的後端服務器羣組;
  • 內置的健康檢查功能:若是Nginx Proxy後端的後臺web服務器宕機了,不會影響前端訪問;
  • 節省帶寬:支持GZIP壓縮,能夠添加瀏覽器本地緩存的Header頭;
  • 穩定性高:用於反向代理,宕機的機率微乎其微;

2、安裝部署Nginx

一、前提準備

Nginx最新的穩定版本爲1.12.0,其安裝文件能夠從官方網站Nginx官方網站/下載。前端

1)Centos 7服務器一臺;
2)Windows客戶端一臺:
3)Centos 7操做系統鏡像;
4)Nginx鏡像;
安裝Nginx用到的全部鏡像及軟件包能夠訪問網盤提取:https://pan.baidu.com/s/18iRCuiMEyGbEFSeBp17uVQ
提取碼:qsztnginx

二、開始安裝部署Nginx服務器

1)掛載Linux光盤,拷貝nginx依賴程序到/usr/src/目錄

Centos 7部署Nginx網站服務

[root@centos02 ~]# mount /dev/cdrom /mnt/    <!--掛載光盤-->
mount: /dev/sr0 寫保護,將以只讀方式掛載
[root@centos02 ~]# cp /mnt/nginx-1.6.0.tar.gz /usr/src/ <!--拷貝Nginx包到/usr/src/目錄-->

2)切換LAMP光盤,將mnt目錄下全部數據拷貝到/usr/src/目錄

[root@centos02 ~]# umount /mnt/ &lt;!--卸載光盤--&gt;
Centos 7部署Nginx網站服務web

[root@centos02 ~]# mount /dev/cdrom /mnt/   <!--掛載光盤-->
mount: /dev/sr0 寫保護,將以只讀方式掛載
[root@centos02 ~]# cp /mnt/* /usr/src/ <!--將光盤目錄下全部數據拷貝到/usr/src/目錄-->

3)切換到操做系統光盤,安裝nginx依賴程序

[root@centos02 ~]# umount /mnt/ &lt;!--卸載光盤--&gt;
Centos 7部署Nginx網站服務vim

[root@centos02 ~]# mount /dev/cdrom /mnt/   <!--掛載光盤-->
mount: /dev/sr0 寫保護,將以只讀方式掛載
[root@centos02 ~]# rm -rf /etc/yum.repos.d/CentOS-* <!--清除系統自帶yum源-->
[root@centos02 ~]# yum -y install pcre-devel zlib-devel <!--安裝Nginx的依賴程序-->
[root@centos02 ~]# useradd -M -s /sbin/nologin nginx <!--建立管理Nginx的用戶-->
[root@centos02 ~]# tar zxvf /usr/src/nginx-1.6.0.tar.gz -C /usr/src/ 
<!--解壓縮Nginx軟件包-->
[root@centos02 ~]# cd /usr/src/nginx-1.6.0/ 
[root@centos02 nginx-1.6.0]# ./configure --prefix=/usr/local/nginx
--user=nginx --group=nginx --with-http_stub_status_module
<!--配置Nginx-->
[root@centos02 nginx-1.6.0]# make && make install  <!--編譯安裝Nginx-->
[root@centos02 ~]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ <!--優化Nginx執行命令-->

三、Nginx服務的基本管理

[root@centos02 ~]# nginx    <!--啓動Nginx服務-->
[root@centos02 ~]# netstat -anptu | grep nginx 
                     <!--監聽Nginx服務是否啓動成功-->
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4663/nginx: master  
[root@centos02 ~]# killall -s QUIT nginx   <!--關閉Nginx服務-->
[root@centos02 ~]# killall -3 nginx       <!--關閉Nginx服務-->
[root@centos02 ~]# killall -1 nginx     <!--從新啓動Nginx-->
[root@centos02 ~]# killall -s HUP nginx   <!--從新啓動Nginx-->
[root@centos02 ~]# vim /etc/init.d/nginx <!--編寫Nginx服務管理腳本-->
#!/bin/bash
#chkconfig: 35 90 30
#description:nginx server
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill 0s HUP $(cat $PIDF)
;;
*)
echo "Usage:$0 (start|stop|restart|reload)"
exit 1
esac
exit 0
[root@centos02 ~]# chmod +x /etc/init.d/nginx <!--添加腳本執行權限-->
[root@centos02 ~]# chkconfig --add nginx <!--添加爲系統服務-->
[root@centos02 ~]# chkconfig --level 35 nginx on <!--設置開機自動啓動-->
[root@centos02 ~]# /etc/init.d/nginx stop<!--腳本中止Nginx服務-->
[root@centos02 ~]# /etc/init.d/nginx start<!--腳本啓動Nginx服務-->
[root@centos02 ~]# /etc/init.d/nginx restart<!--腳本重啓Nginx服務-->

客戶端配置和Nginx服務器同一塊網卡同網段,設置網關便可訪問Nginx網站服務器
Centos 7部署Nginx網站服務後端

四、Nginx常見的配置文件

[root@centos02 ~]# ls -ld /usr/local/nginx/conf/nginx.conf
-rw-r--r-- 1 root root 2656 11月 28 17:22
/usr/local/nginx/conf/nginx.conf       <!--Nginx的主配置文件-->
[root@centos02 ~]# ls -ld /usr/local/nginx/sbin/
drwxr-xr-x 2 root root 19 11月 28 17:22
/usr/local/nginx/sbin/      <!--管理Nginx服務程序文件-->
[root@centos02 ~]# ls -ld /usr/local/nginx/html/
drwxr-xr-x 2 root root 40 11月 28 17:22
/usr/local/nginx/html/      <!--Nginx的網站根目錄-->
[root@centos02 ~]# ls -ld /usr/local/nginx/logs/
drwxr-xr-x 2 root root 58 11月 28 17:47 
/usr/local/nginx/logs/   <!--Nginx的網站日誌記錄-->

五、修改Nginx主配置文件

[root@centos02 ~]# cp /usr/local/nginx/conf/nginx.conf
/usr/local/nginx/conf/nginx.conf.bak   <!--備份主配置文件-->
[root@centos02 ~]# vim /usr/local/nginx/conf/nginx.conf 
                            <!--編輯主配置文件-->
  3 user  nginx;       <!--運行用戶-->
  4 worker_processes  1;     <!--工做進程數量-->
  6 error_log  logs/error.log;   <!--錯誤日誌文件的位置-->
12 pid        logs/nginx.pid;     <!--PID文件的位置-->
16     use epoll;        <!--使用epoll模型-->
17     worker_connections  1024; <!--每進程處理1024個鏈接-->
29     #access_log  logs/access.log  main; <!--訪問日誌的位置-->
31     sendfile        on;           <!--開啓高效傳輸文件模式-->
35     keepalive_timeout  65;       <!--鏈接保持超時-->
39     server { <!--server的開始,一個server表示一個虛擬主機-->
40         listen       80;     <!--Web服務的監聽配置-->
41         server_name  localhost; <!--網站名稱(FQDN)-->
44         charset utf-8;    <!--網頁的默認字符集-->
48         location / {     <!--根目錄配置-->
49             root   html; <!--網站根目錄的位置,相對於安裝目錄-->
50             index  index.html index.html;<!--默認首頁(索引頁)-->
51         }
84     }            <!--server結束-->
  • listen:限定端口的同時容許限定IP地址,採用「IP地址:端口號」形式,root語句用來設置特定訪問位置的網頁文檔路徑,默認爲Nginx安裝目錄下的html/目錄,根據須要可改成/var/www/html等其餘路徑,但更改後需保證nginx用戶對其具備讀取權限。centos

  • worker_processes :表示工做進程的數量,若服務器由多塊CPU或者使用多核處理器,能夠參考CPU核心總數來指定工做進程數。具體含義在worker_connections配置項中體現出來。瀏覽器

  • worker_connections:這個配置項指定的是每一個進程處理的鏈接,通常在10000如下(默認爲1024),與上面工做進程數量的配置項關聯,例如:若工做進程數爲8,每一個進程處理4096個鏈接,則容許Nginx正常提供服務的鏈接數已經超過了3萬個(4096*8=32768)。固然,具體還要看服務器硬件、網絡帶寬等物理條件的性能表現。

六、配置Nginx的訪問狀態統計

[root@centos02 ~]# vim /usr/local/nginx/conf/nginx.conf 
 <!--修改nginx配置文件,指定訪問位置並打開stub_status配置-->
 52         location /status {
 53                 stub_status     on;
 54                 access_log off;
 55         }
[root@centos02 ~]# /etc/init.d/nginx restart<!--重啓Nginx服務-->

客戶端訪問狀態統計頁:
Centos 7部署Nginx網站服務緩存

  • Active connections:表示當前的活動鏈接數;

  • server accepts handled requests:表示已經處理的鏈接信息,三個數字依次表示已處理的鏈接數、成功的TCP握手次數、已經處理的請求數。

3、配置虛擬主機

一、安裝DNS服務器

[root@centos02 ~]# yum -y install bind bind-chroot bind-utils 
                              <!--安裝DNS-->
[root@centos02 ~]# echo "" > /etc/named.conf 
           <!--清空主配置文件-->
[root@centos02 ~]# vim /etc/named.conf <!--修改主配置文件-->
options {
        listen-on port 53 { 192.168.100.20; };
        directory "/var/named";
}
zone    "benet.com"     IN      {
        type    master;
        file    "benet.com.zone";
}
zone    "accp.com"      IN      {
        type    master;
        file    "accp.com.zone";
}
[root@centos02 ~]# named-checkconf -z /etc/named.conf
              <!--檢查主配置文件是否配置錯誤-->
[root@centos02 ~]# vim /var/named/benet.com.zone  
               <!--配置benet.com的正向解析區域-->
$TTL    86400
@       SOA     benet.com.      root.benet.com(
        2019112801
        1H
        15M
        1W
        1D
)
@       NS      centos02.benet.com.
centos02 A      192.168.100.20
www      A      192.168.100.20
[root@centos02 ~]# chmod +x /var/named/benet.com.zone  
                    <!--正向解析區域配置文件添加執行權限-->
[root@centos02 ~]# chown named:named
/var/named/benet.com.zone <!--修改屬主屬組-->
[root@centos02 ~]# named-checkzone benet.com
/var/named/benet.com.zone   
         <!--檢查benet.com正向解析區域配置文件是否錯誤-->
zone benet.com/IN: loaded serial 2019112801
OK
[root@centos02 ~]# cp /var/named/benet.com.zone
/var/named/accp.com.zone  
   <!--複製benet.com正向解析區域到accp.com正向解析區域-->
[root@centos02 ~]# vim /var/named/accp.com.zone  
                    <!--修改accp.com正向解析區域配置文件-->
$TTL    86400
@       SOA     accp.com.       root.accp.com(
        2019112801
        1H
        15M
        1W
        1D
)
@       NS      centos02.accp.com.
centos02 A      192.168.100.20
www      A      192.168.100.20
[root@centos02 ~]# named-checkzone accp.com
/var/named/accp.com.zone  
           <!--檢查accp.com正向解析區域配置文件是否錯誤-->
[root@centos02 ~]# vim /etc/sysconfig/network-scripts/
ifcfg-ens32  <!--編輯網卡添加主DNS-->
DNS1=192.168.100.20   <!--添加主DNS-->
[root@centos02 ~]# systemctl restart network<!--重啓網卡服務-->
[root@centos02 ~]# systemctl start named <!--啓動DNS服務器-->
[root@centos02 ~]# systemctl enable named<!--設置開機自動啓動-->
[root@centos02 ~]# nslookup www.benet.com  
                 <!--解析域名測試是否正常-->
Server:     192.168.100.20
Address:    192.168.100.20#53

Name:   www.benet.com
Address: 192.168.100.20

[root@centos02 ~]# nslookup www.accp.com
                  <!--解析域名測試是否正常-->
Server:     192.168.100.20
Address:    192.168.100.20#53

Name:   www.accp.com
Address: 192.168.100.20

二、配置基於域名的虛擬主機

Nginx的配置文件使用「http { }」界定標記用於設定HTTP服務器,包括訪問日誌、http端口、網頁目錄、默認字符集、鏈接保持,以及虛擬web主機、php解析等網站全局設置,其中大部分包含在子界定標記 「 server { }」內。「 server { }」表明一個具體的網站設置。

<!--建立虛擬主機網站根目錄--> 
[root@centos02 ~]# mkdir -p /var/www/benetcom  
[root@centos02 ~]# mkdir -p /var/www/accpcom  
              <!--建立虛擬主機的網站主頁--> 
[root@centos02 ~]# echo "www.benet.com" > 
/var/www/benetcom/index.html
[root@centos02 ~]# echo "www.accp.com" > 
/var/www/accpcom/index.html
[root@centos02 ~]# vim /usr/local/nginx/conf/nginx.conf  
                     <!--修改Nginx主配置文件支持虛擬主機-->
http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;
        server  {           <!--server開始-->
                listen www.benet.com:80;  <!--監聽的域名及端口-->
                server_name www.benet.com;     <!--網站名稱-->
                charset utf-8;          <!--默認字符集-->
                access_log      logs/www.benet.com.access.log; 
                                                    <!--訪問日誌位置-->
                error_log       logs/www.benet.com.error.log;
                                                       <!--錯誤日誌位置-->
                location / {       <!--根目錄配置-->
                                root /var/www/benetcom/; <!--網站根目錄-->
                                index index.html;       <!--默認首頁-->
                        }
                }       <!--server結尾-->

<!--如下配置請參考以上註釋-->
        server  {
                listen www.accp.com:80;
                server_name www.accp.com;
                charset utf-8;
                access_log      logs/www.accp.com.access.log;
                error_log       logs/www.accp.com.error.log;
                location / {
                                root /var/www/accpcom/;
                                index index.html;
                        }
                }
[root@centos02 ~]# nginx -t   <!--檢查Nginx是否配置錯誤-->
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@centos02 ~]# systemctl restart named<!--從新啓動DNS服務-->
[root@centos02 ~]# /etc/init.d/nginx restart<!--從新啓動Nginx服務-->

客戶端添加DNS地址,訪問域名測試是否成功
Centos 7部署Nginx網站服務

Centos 7部署Nginx網站服務

—————— 本文至此結束,感謝閱讀 ——————

相關文章
相關標籤/搜索