Apache搭建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虛擬主機