要在一部主機上面存放多個網站, 可以透過 Apache 的 Virtual Host 實現。以下會示範在 RHEL 及 CentOS 建立 Apache Virtual Host 的方法。
在開始前, 先要建立存放網站的目錄, 即 Document Root, 在 CentOS 下 Apache 的預設目錄是 /var/www/html, 以下會以 website01.com 及 website02.com 為例, 在 /var/www/ 下建立兩個網站的 Document Root, 以及為兩個網站建立紀錄檔的目錄:
# mkdir /var/www/website01.com
# mkdir /var/www/website02.com
# mkdir /var/www/website02.com
上面建立 Document Root, 接著是建立了存放紀錄檔的目錄:
# mkdir /var/log/httpd/website01.com
# mkdir /var/log/httpd/website02.com
# mkdir /var/log/httpd/website02.com
然後為兩個網站建立一個測試頁面, 內容如下:
|
1 2 3 4 5 6 7 8 |
<html> <head> <title>Welcome to <?php echo $_SERVER['HTTP_HOST']?></title> </head> <body> <?php echo $_SERVER['HTTP_HOST']?> </body> </html> |
將上面內容放到 website01.comr 及 website02.com 的 Document Root 下, 儲存為 index.php:
# vi /var/www/website01.com/index.php
# vi /var/www/website02.com/index.php
# vi /var/www/website02.com/index.php
將 Document Root 的 owner 改為 Apache:
# chown -R apache:apache /var/www/website0*
下一步是設定 Apache, 讓 Apache 可以按 hostname 處理不同網站內容。為以上兩個網站建立 Apache 的 .conf 檔:
website01.com:
# vi /etc/httpd/conf.d/website01.com.conf
加入以下內容:
|
1 2 3 4 5 6 7 |
<VirtualHost *:80> ServerName website01.com ServerAlias www.website01.com DocumentRoot /var/www/website01.com CustomLog /var/log/httpd/website01.com/access.log common ErrorLog /var/log/httpd/website01.com/error.log </VirtualHost> |
website02.com:
# vi /etc/httpd/conf.d/website02.com.conf
加入以下內容:
|
1 2 3 4 5 6 7 |
<VirtualHost *:80> ServerName website02.com ServerAlias www.website02.com DocumentRoot /var/www/website01.com CustomLog /var/log/httpd/website02.com/access.log common ErrorLog /var/log/httpd/website02.com/error.log </VirtualHost> |
建立以上兩個網站的 Apache .conf 檔案後, 需要重新載入 Apache:
# systemctl reload httpd
然後是開放防火牆:
FirewallD:
# firewall-cmd –permanent –zone=public –add-service=http
# firewall-cmd –reload
# firewall-cmd –reload
iptables:
# iptables -A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
# /etc/init.d/iptables save
# /etc/init.d/iptables save
最後一步就是在 DNS 伺服器, 設定兩個 Domain 指到以上網頁伺服器的 IP, 如果用瀏覽器開啟網站可以看到相應的網站便完成了。
你好,請問為什麼要將 Document Root 的 owner 改為 Apache?謝謝