1. 程式人生 > >Apache搭建web虛擬主機

Apache搭建web虛擬主機

Apache 虛擬主機 虛擬目錄

在同一臺Apache服務器中運行多個web站點,其中的每一個站點實際上不會占用著整個服務器,通過虛擬web主機服務可以充分利用服務器的硬件資源,從而降低網站構建以及運行成本。虛擬主機主要類型分為三種:
1、基於IP端口
對每個不同域名的虛擬主機設置單獨IP,因此,在服務器中需要設置多個網卡,對於硬件成本和IP成本要求都高,此種方式在實際中不常用,本文暫且略過;
2、基於端口IP
使用TCP不同端口來區分不同的站點內容,需要在用戶訪問站點時跟上指定端口號才可實現訪問;
3、基於主機名
每個服務器主機可以構建多個不同域名服務器,但都使用相同IP地址;此種方式在實際中較為常用!

當網頁分類內容較多,對於後臺運維數據處理與更新壓力較大,因此需要建立分類管理的目錄,方便管理,稱為虛擬目錄;

實驗描述:

  • 實驗環境Redhat6.5版本
  • 服務器IP地址:192.168.100.107
  • Redhat鏡像掛載至/mnt下
  • 本實驗使用Apache2.2版本

rpm -q httpd //查看Apache版本

環境部署

rpm -q httpd //檢查是否安裝Apache
service iptables stop //關閉防火墻
setenforce 0 //關閉增強安全×××

建立Apache虛擬目錄(用戶訪問控制)

1、虛擬目錄訪問

rpm -ivh /mnt/Packages/httpd-2.2.15-29.el6_4.x86_64.rpm // 安裝Apache2.2
vim /etc/httpd/conf/httpd.conf //編輯主配置文件

Listen 192.168.100.107:80  //更改監聽地址和監聽端口
#Listen 80   //註釋IPV6的監聽
...
ServerName www.yun.com:80  //打開主機域名

vim /etc/httpd/conf.d/vdir.conf
//在子配置文件目錄下創建虛擬目錄配置文件 vdir.conf

在vdir.conf中寫入以下內容:

Alias /test "/opt/test/"   //指定虛擬目錄名稱為test,並指定目錄站點在/opt/test

<Directory "/opt/test/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    AuthName "hello" //認證名稱
    authtype basic //用戶認證方式為基本認證方式
    authuserfile /etc/httpd/user  //指定用戶認證文件存放位置
    #authgroupfile /etc/httpd/group
    #require Valid-user  //設置用戶訪問權限,取消註釋時即可實現用戶授權訪問; 
    #require user test 
    #Require group admin
</Directory>

mkdir -p /opt/test //創建虛擬目錄站點
vim /opt/test/index.html //創建虛擬目錄首頁
service httpd start //開啟httpd服務

技術分享圖片

2、用戶授權訪問

vim /etc/httpd/conf.d/vdir.conf //編輯服務子配置文件

Alias /test "/opt/test/"   //指定虛擬目錄名稱為test,並指定目錄站點在/opt/test

<Directory "/opt/test/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    AuthName "hello" //認證名稱
    authtype basic //用戶認證方式為基本認證方式
    authuserfile /etc/httpd/user  //指定用戶認證文件存放位置
    #authgroupfile /etc/httpd/group
    #require Valid-user  //取消註時即可實現用戶授權訪問; 
    #require user test 
    #Require group admin
</Directory>

htpasswd -c /etc/httpd/user zhangsan //創建授權訪問用戶
service httpd restart //重啟httpd服務

當再一次訪問網頁時變成了需要授權的用戶才可訪問:
技術分享圖片

相同IP不同端口

1、配置DNS

可參見:DNS域名解析服務配置

rpm -ivh /mnt/Packages/bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm //首先安裝DNS域名解析服務
vim /etc/named.conf //配置域名解析主配置文件

options {
        listen-on port 53 { 192.168.100.107; }; //監聽端口主機IP
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };   //允許任意網段主機都可解析
        recursion yes;

vim /etc/named.rfc1912.zones //編輯區域配置文件

zone "yun.com" IN {
        type master;
        file "yun.com.zone";
        allow-update { none; };
};

cd /var/named //切換到區域數據配置目錄下
cp -p named.localhost yun.com.zone //復制區域數據配置文件模板
vim yun.com.zone //配置區域數據配置文件

$TTL 1D
@       IN SOA  @ admin. (     //修改管理員郵箱
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
www IN  A       192.168.100.107   //設置解析地址

service named start //開啟DNS服務

2、不同端口不同內容

vim /etc/httpd/vhost.conf //創建虛擬主機端口配置文件

寫入以下內容:

NameVirtualHost 192.168.100.107:80   //設置主機IP及端口號
<VirtualHost 192.168.100.107:80>
   ServerAdmin [email protected]
   DocumentRoot /opt/yun/  //設置80端口網頁站點
   ServerName www.yun.com  //解析域名
   ErrorLog logs/yun.com-error_log  //錯誤日誌存放位置
   CustomLog logs/yun.com-access_log common  //訪問日誌存放位置
</VirtualHost>

NameVirtualHost 192.168.100.107:250
<VirtualHost 192.168.100.107:250>
   ServerAdmin [email protected]
   DocumentRoot /opt/yun01/  //設置80端口網頁站點
   ServerName www.yun.com   //解析域名
   ErrorLog logs/yun01.com-error_log  //錯誤日誌存放位置
   CustomLog logs/yun01.com-access_log common  //訪問日誌存放位置
</VirtualHost>

mkdir -p /opt/yun //創建80端口站點
echo "yun port 80 test web" > /opt/yun/index.html // 創建 www.yun.com:80的首頁內容

mkdir -p /opt/yun01 //創建250端口站點
echo "yun port 250 test web" > /opt/yun01/index.html // 創建 www.yun.com:250的首頁內容

vim /etc/httpd/conf/httpd.conf //編輯httpd服務主配置文件

Listen 192.168.100.107:80   //原有監聽端口
Listen 192.168.100.107:250  //添加監聽端口

service httpd restart //重啟httpd服務
service named restart //重啟DNS服務

當訪問相同IP域名不同端口時出現不同內容:

技術分享圖片
技術分享圖片

相同IP不同主機

1、配置DNS解析服務

vim /etc/named.rfc1912.zones //編輯區域配置文件

zone "yun.com" IN {
        type master;
        file "yun.com.zone";
        allow-update { none; };
};
zone "abc.com" IN {         //添加新的解析域名
        type master;
        file "abc.com.zone";
        allow-update { none; };
};      

cd /var/named
cp -p yun.com.zone abc.com.zone //復制區域數據配置文件模板
vim abc.com.zone

$TTL 1D
@       IN SOA  @ admin. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
www IN  A       192.168.100.107

2、不同主機

vim /etc/httpd/conf.d/vhost.conf

加入以下內容:

<VirtualHost 192.168.100.107:80>
   ServerAdmin [email protected]
   DocumentRoot /opt/abc/
   ServerName www.abc.com
   ErrorLog logs/abc.com-error_log
   CustomLog logs/abc.com-access_log common
</VirtualHost>

mkdir -p /opt/abc //創建 www.abc.com的站點
echo "this is abc" > /opt/abc/index.html //創建內容

service httpd restart //重啟httpd服務
service named restart //重啟DNS服務

技術分享圖片
技術分享圖片

Apache搭建web虛擬主機