一共支持三種虛擬主機類型
企業經常使用的是第一種基於域名的虛擬主機
基於IP地址的虛擬主機,一臺物理主機上須要兩個網卡
基於端口的虛擬主機html
[root@localhost ~]# yum install bind httpd -y 已安裝: bind.x86_64 32:9.11.4-9.P2.el7 httpd.x86_64 0:2.4.6-90.el7.centos 做爲依賴被安裝: apr.x86_64 0:1.4.8-5.el7 apr-util.x86_64 0:1.5.2-6.el7 bind-export-libs.x86_64 32:9.11.4-9.P2.el7 httpd-tools.x86_64 0:2.4.6-90.el7.centos mailcap.noarch 0:2.1.41-2.el7 做爲依賴被升級: bind-libs.x86_64 32:9.11.4-9.P2.el7 bind-libs-lite.x86_64 32:9.11.4-9.P2.el7 bind-license.noarch 32:9.11.4-9.P2.el7 bind-utils.x86_64 32:9.11.4-9.P2.el7 dhclient.x86_64 12:4.2.5-77.el7.centos dhcp-common.x86_64 12:4.2.5-77.el7.centos dhcp-libs.x86_64 12:4.2.5-77.el7.centos
須要改兩處 [root@localhost ~]# vim /etc/named.conf options { listen-on port 53 { any; }; //監聽全部地址 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"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { any; }; //容許其餘全部主機能夠進行解析
咱們加入兩個須要解析的域名區域配置 在正向解析上覆制5行 [root@localhost ~]# vim /etc/named.rfc1912.zones zone "accp.com" IN { //你須要解析的域名 type master; file "accp.com.zone"; //區域數據配置文件 allow-update { none; }; }; zone "kgc" IN { type master; file "kgc.com.zone"; allow-update { none; }; }; zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
[root@localhost ~]# cd /var/named/ [root@localhost named]# ls data dynamic named.ca named.empty named.localhost named.loopback slaves [root@localhost named]# cp -p named.localhost accp.com.zone //把模板複製到數據區域配置文件中 [root@localhost named]# vim accp.com.zone //配置 $TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 www IN A 192.168.136.136 //添加域名解析的地址 [root@localhost named]# cp -p accp.com.zone kgc.com.zone //這個只要複製過來不須要過來,咱們是基於不一樣的域名解析
[root@localhost named]# systemctl stop firewalld.service [root@localhost named]# setenforce 0 [root@localhost named]# systemctl start named
[root@localhost named]# cd /etc/httpd/ [root@localhost httpd]# ls conf conf.d conf.modules.d logs modules run [root@localhost httpd]# cd conf [root@localhost conf]# ls httpd.conf magic [root@localhost conf]# mkdir extra //建立一個擴展的文件夾,裏面放入子配置文件,方便咱們之後管理 [root@localhost conf]# ls extra httpd.conf magic [root@localhost conf]# cd extra/
[root@localhost extra]# vim vhost.conf <VirtualHost *:80> //標籤虛擬主機 ,*表明全部網絡 DocumentRoot "/var/www/html/accp/" //指定站點 ServerName www.accp.com //定義域名 ErrorLog "logs/www.accp.com.error_log" //網址要有日誌文件,錯誤日誌文件 Customlog "logs/www.accp.com.access_log" common //訪問日誌文件 <Directory "/var/www/html"> //站點須要設置權限,讓全部網絡能訪問這個網頁 Require all granted </Directory> </VirtualHost> //結尾標籤 <VirtualHost *:80> DocumentRoot "/var/www/html/kgc/" ServerName www.kgc.com ErrorLog "logs/www.kgc.com.error_log" Customlog "logs/www.kgc.com.access_log" common <Directory "/var/www/html"> Require all granted </Directory> </VirtualHost> ~
[root@localhost httpd]# cd /var/www/html [root@localhost html]# mkdier accp kgc //建立兩個站點目錄 [root@localhost html]# mkdir accp kgc [root@localhost html]# ls accp kgc [root@localhost html]# cd accp [root@localhost accp]# vim index.html //編輯網頁寫入內容 h1>this is accp web</h1> [root@localhost accp]# cd ../kgc/ [root@localhost kgc]# vim index.html <h1>this is kgc web</h1>
[root@localhost kgc]# cd /etc/httpd/ [root@localhost httpd]# cd conf [root@localhost conf]# ls extra httpd.conf magic [root@localhost conf]# vim httpd.conf #Load config files in the "/etc/httpd/conf.d" directory, if any. IncludeOptional conf.d/*.conf Include conf/extra/vhost.conf //調用子配置文件
[root@localhost conf]# cd extra/ [root@localhost extra]# vim vhost.conf 22 <VirtualHost *:8080> //端口加上8080 23 DocumentRoot "/var/www/html/kgc.port/" 24 ServerName www.kgc.port.com 25 ErrorLog "logs/www.kgc.port.com.error_log" 26 Customlog "logs/www.kgc.port.com.access_log" common 27 <Directory "/var/www/html"> 28 Require all granted 29 </Directory> 30 </VirtualHost>
[root@localhost extra]# cd /var/www/html/ [root@localhost html]# ls accp kgc [root@localhost html]# mkdir kgc.port [root@localhost html]# cd kgc.port/ [root@localhost kgc.port]# vim index.html <h1>this is kgc.port web</h1> ~
[root@localhost kgc.port]# vim /etc/httpd/conf/httpd.conf Listen 192.168.136.136:80 Listen 192.168.136.136:8080 #Listen 80
[root@localhost kgc.port]# systemctl restart httpd [root@localhost kgc.port]# netstat -ntap Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 192.168.136.136:8080 0.0.0.0:* LISTEN 59009/httpd tcp 0 0 192.168.136.136:80 0.0.0.0:* LISTEN
[root@localhost ~]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.136.136 netmask 255.255.255.0 broadcast 192.168.136.255 inet6 fe80::e3c7:14af:6e4d:7216 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:c9:dd:05 txqueuelen 1000 (Ethernet) RX packets 101 bytes 10639 (10.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 113 bytes 12291 (12.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.136.138 netmask 255.255.255.0 broadcast 192.168.136.255 inet6 fe80::658e:4c2d:2273:9cf5 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:c9:dd:0f txqueuelen 1000 (Ethernet) RX packets 108 bytes 14566 (14.2 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 42 bytes 5695 (5.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost ~]# cd /etc/httpd/conf/extra/ [root@localhost extra]# ls vhost.conf [root@localhost extra]# vim vhost.conf
<VirtualHost 192.168.136.138:80> //「*」改爲第二塊網卡的地址 2 DocumentRoot "/var/www/html/accp/" 3 ErrorLog "logs/www.accp.com.error_log" 4 Customlog "logs/www.accp.com.access_log" common 5 <Directory "/var/www/html"> 6 Require all granted 7 </Directory> 8 </VirtualHost> 9 10 11 <VirtualHost 192.168.136.136:80> //改爲第一塊網卡的地址 12 DocumentRoot "/var/www/html/accp02/" //從新在站點下寫一個網頁 13 ErrorLog "logs/www.accp02.com.error_log" 14 Customlog "logs/www.accp02.com.access_log" common 15 <Directory "/var/www/html"> 16 Require all granted 17 </Directory> 18 </VirtualHost> 19
[root@localhost extra]# cd /var/www/html/ [root@localhost html]# mkdir accp02 [root@localhost html]# cd accp02 [root@localhost accp02]# vim index.html <h1>this is 136 accp02 web</h1> ~ ~ ~ [root@localhost accp02]# vim ../accp/index.html <h1>this is 128 accp web</h1> ~ ~ ~
#prevent Apache from glomming onto all bound IP addresses. Listen 192.168.136.136:80 Listen 192.168.136.138:80 #Listen 192.168.136.136:8080 #Listen 80 [root@localhost extra]# systemctl status httpd
[root@localhost ~]# cd /etc/httpd/conf/extra/ [root@localhost extra]# ls vhost.conf [root@localhost extra]# vim vhost.conf <VirtualHost 192.168.136.138:80> DocumentRoot "/var/www/html/accp/" ErrorLog "logs/www.accp.com.error_log" Customlog "logs/www.accp.com.access_log" common <Directory "/var/www/html"> <RequireAll> //要加入子容器的標籤 Require not ip 192.168.136.137 //拒絕這個地址訪問,也能夠拒絕網段好比 Require not ip 192.168.136.0/24 Require all granted </RequireAll> //結尾標籤 </Directory> </VirtualHost> [root@localhost extra]# systemctl restart httpd //重啓服務
[root@localhost extra]# cd /etc/httpd/conf [root@localhost conf]# htpasswd -c /etc/httpd/conf/pwd chen01 //建立一個chen01用戶,放在路徑底下,起個名字pwd. htpasswd:用YUM安裝直接可使用,若是手工編譯安裝,要把這個命令加到/usr/local/bin系統識別的命令底下。 New password: //輸入你的密碼 Re-type new password: //重複輸入 Adding password for user chen01 [root@localhost conf]# ls extra httpd.conf magic pwd [root@localhost conf]# cat pwd chen01:$apr1$lOLJMVUo$EZ7qupc1bHN3k38OUw/1F. [root@localhost conf]# htpasswd /etc/httpd/conf/pwd chen02 //若是這個目錄已存在,就不要加-c了 New password: Re-type new password: Adding password for user chen02 [root@localhost conf]# cat pwd chen01:$apr1$lOLJMVUo$EZ7qupc1bHN3k38OUw/1F. chen02:$apr1$5cbb6tpU$mt5EZG/8y7qXhyi1Pz2Lk1 [root@localhost conf]#
[root@localhost extra]# vim vhost.conf <VirtualHost 192.168.136.136:80> DocumentRoot "/var/www/html/accp02/" ErrorLog "logs/www.accp02.com.error_log" Customlog "logs/www.accp02.com.access_log" common <Directory "/var/www/html"> AuthName "DocumentRoot" //聲明信息 AuthType Basic //驗證類型爲基本驗證 AuthUserFile /etc/httpd/conf/pwd //驗證文件,目錄位置 Require valid-user //受權給用戶登陸 </Directory> </VirtualHost> [root@localhost extra]# systemctl restart httpd