1. 程式人生 > >詳解Nginx搭建多網站實現虛擬主機應用

詳解Nginx搭建多網站實現虛擬主機應用

檢測服務 roo linux 聯網 應用程序 top n 行修改 ESS 系統用戶

簡介

虛擬主機是指在網絡服務器上分出一定的磁盤空間,管理員可以利用此部分空間,放置站點及應用組件,提供必要的數據存放和傳輸功能。虛擬主機,就是把一臺運行在互聯網上的物理服務器劃分成多個“虛擬”服務器。

優點

價格低廉。相對於購買獨立服務器,網站建設的費用大大降低,為普及中小型網站提供了極大便利。
提升效率。由於多臺虛擬主機共享一臺真實主機的資源,大大增加了服務器和帶寬的利用率,使得一臺服務器上能夠毫無沖突地配置多個網絡IP地址。

缺點

功能限制。比如可能耗用系統資源的論壇程序、流量統計功能等。
訪問速度及流量限制。一臺服務器上的不同虛擬主機是各自獨立的,並由管理員管理。但一臺服務器主機只能夠支持一定數量的虛擬主機,當超過這個數量時,服務器性能急劇下降。

自主性差。虛擬主機不能由客戶隨意的安裝軟件及遠程桌面等操作。

用途

適合作為中小企業的小型門戶網站,節省資金資源。
中小企業、專業門戶網站可以使用虛擬主機空間提供數據共享、數據下載服務。
可以為中小企業提供數據存儲數據功能。由於成本比獨立服務器低,安全性高做為小型數據庫首選。
虛擬主機空間特有的應用程序模板,使用者可以快速的進行批量部署,是中小型企業運行ASP或PHP應用的首選平臺。

實驗環境

  • 系統環境:CentOS7.4
  • 服務器IP地址:192.168.100.71
  • 客戶端IP地址:192.168.100.72
  • yum掛載目錄:/mnt/sr0
  • 相關源碼包下載地址:百度雲下載 ??密碼:uhzm

搭建步驟

一、準備工作

1、關閉防火墻及selinux

[root@localhost ~]# systemctl stop firewalld.service #關閉防火墻
[root@localhost ~]# systemctl disable firewalld.service #隨開機自動關閉

[root@Init5 ~]# vim /etc/sysconfig/selinux
技術分享圖片

[root@localhost ~]# reboot #重啟Linux生效

二、搭建DNS服務器

1、安裝bind軟件包

[root@localhost ~]# cd /mnt/sr0/Packages/
[root@localhost Packages]# rpm -ivh bind-9.9.4-50.el7.x86_64.rpm

2、修改主配置文件named.conf

[root@localhost ~]# vim /etc/named.conf
技術分享圖片

3、創建並修改DNS正向解析文件

[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p named.localhost bt.com.zone #將模板文件改為正向解析文件進行修改
[root@localhost ~]# vim /var/named/bt.com.zone #修改正向解析文件
技術分享圖片

[root@localhost named]# cp -p bt.com.zone cloud.com.zone
[root@localhost ~]# vim /var/named/bt.com.zone
技術分享圖片

4、啟動DNS服務器

[root@localhost ~]# systemctl start named.service

5、修改DNS客戶機配置文件

[root@localhost ~]# echo "nameserver 192.168.100.71" >> /etc/resolv.conf

6、測試DNS解析

[root@localhost ~]# nslookup www.bt.com #nslookup 用於查詢DNS的記錄,查看域名解析是否正常
[root@localhost ~]# nslookup www.cloud.com
技術分享圖片

二、搭建Nginx服務

1、安裝相應的工具包以及C語言編譯器

[root@localhost ~]# yum -y install pcre-devel zlib-devel gcc gcc-c++

2、創建Nginx進程用戶

[root@localhost ~]# useradd -M -s /sbin/nologin nginx

3、配置、編譯及編譯安裝Nginx源碼包

[root@localhost ~]# tar xvf nginx-1.12.0.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/nginx-1.12.0/
[root@localhost nginx-1.12.0]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx

參數解析:

prefix #指定安裝位置
user=nginx #指定nginx系統用戶
group=nginx #指定組

[root@localhost nginx-1.12.0]# make && make install

4、優化路徑

[root@localhost ~]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/

三、設置Nginx運行控制

1、檢測語法

[root@localhost ~]# nginx -t #測試配置是否有語法錯誤
技術分享圖片

2、啟動Nginx服務

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf #修改主配置文件
技術分享圖片

[root@localhost ~]# nginx #啟動Nginx
[root@localhost ~]# netstat -anpt | grep ":80" #檢測服務是否啟動
[root@localhost ~]# cat /usr/local/nginx/logs/nginx.pid #查看pid
技術分享圖片

3、停止Nginx服務

[root@localhost ~]# kill -1 3809 #平滑重啟Nginx服務。相當於killall -s HUP nginx;nginx -s reload
[root@localhost ~]# kill -3 1514 #關閉Nginx服務。相當於killall -s QUIT nginx;nginx -s quit
[root@localhost ~]# nginx #重啟服務
[root@localhost ~]# cat /usr/local/nginx/logs/nginx.pid #查看pid號
技術分享圖片

4、編輯Nginx服務腳本

[root@localhost ~]# vim /lib/systemd/system/nginx.service

[Unit]

Description=Nginx Server Control Script #說明
After=network.target #描述服務類別

[Service]

Type=forking #後臺運行形式
PIDFile=/usr/local/nginx/logs/nginx.pid #PID文件位置
ExecStart=/usr/local/nginx/sbin/nginx #啟動服務
ExecReload=/usr/bin/kill -s HUP $PIDFile #重載服務
ExecStop=/usr/bin/kill -s QUIT $PIDFile #停止服務

[Install]

WanteBy=multi-user.target

[root@localhost ~]# systemctl daemon-reload #重新加載服務單元
[root@localhost ~]# systemctl enable nginx.service #設置開機自啟動

[root@localhost ~]# systemctl stop nginx.service#停止服務
[root@localhost ~]# systemctl start nginx.service#開啟服務
[root@localhost ~]# systemctl reload nginx.service#平滑重啟服務
[root@localhost ~]# systemctl restart nginx.service#重啟服務

四、基於域名的虛擬主機搭建(相同IP,相同端口,不同主機名)

1、創建虛擬Web主機網站目錄以及網頁

[root@localhost ~]# mkdir -p /var/www/html/{btcom,cloudcom}#創建網站目錄

[root@localhost ~]# echo "this is bt.com AAAAAAAAAA" > /var/www/html/btcom/index.html #創建網頁
[root@localhost ~]# echo "this is cloud.com BBBBBBBBBB" > /var/www/html/cloudcom/index.html #創建網頁

2、修改配置文件,添加虛擬主機配置

[root@localhost ~]# cd /usr/local/nginx/conf/
[root@localhost conf]# cp nginx.conf nginx.conf.bak #將源配置文件進行備份
[root@localhost conf]# grep -v "#" nginx.conf.bak > nginx.conf #將註釋過濾掉
[root@localhost conf]# vim nginx.conf
技術分享圖片

3、重啟Nginx服務

[root@localhost ~]# systemctl restart nginx.service

4、客戶機測試

[root@Init5 ~]# echo "nameserver 192.168.100.71" >> /etc/resolv.conf #修改DNS客戶機配置文件
技術分享圖片

五、基於IP地址的虛擬主機(相同端口,相同主機名,不同IP)

1、服務器端添加一塊子網卡

[root@localhost ~]# ifconfig ens33:0 192.168.100.77
技術分享圖片

2、修改主配置文件

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
技術分享圖片

3、重啟Nginx服務

[root@localhost ~]# systemctl restart nginx.service

4、客戶機測試

技術分享圖片

六、基於端口的虛擬主機(相同端口,相同主機名,不同IP)

1、修改主配置文件

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
技術分享圖片

2、重啟Nginx服務

[root@localhost ~]# systemctl restart nginx.service

3、客戶機測試

技術分享圖片

詳解Nginx搭建多網站實現虛擬主機應用