2009-11-08

Ubuntu 如何設定 Apache 的虛擬網站 / 虛擬主機 ( VirtualHost ) ?

以下是在說明以網域名稱 ( Name Based )為基礎的 Virtual Host,也就是說,在一個 Apache 伺服器上依網域名稱來架設多個網站的,除了以網域名稱外,還有的,就是以 IP 為基礎 ( IP Based ) 的方式。

假設這次要架的網站是 : xyz.arthurtoday.com

1. 先安裝 Apache2

2.建立虛擬主機 ( Virtual Host ) 設定檔
在 /etc/apache2/sites-available 下,建立一個檔案名稱叫做 xyz.arthurtoday.com 的文字檔

sudo vi /etc/apache2/sites-available/xyz.arthurtoday.com

3.調整設定檔

把下面這一串打到 /etc/apache2/sites-available/xyz.arthurtoday.com 檔案裡..

<VirtualHost *:80>
           #管理者郵箱 
           ServerAdmin xyz@arthurtoday.com
           #網站名稱 
           ServerName xyz.arthurtoday.com
          #網站別名
          ServerAlias www.xyz.arthurtoday.com
          #網站的根目錄
          DocumentRoot /var/www/xyz.arthurtoday.com/public_html/
          #網站的錯誤日誌檔存放的位置與檔名
          ErrorLog /var/www/xyz.arthurtoday.com/logs/error.log
          #網站日誌檔存放的位置與檔名
          CustomLog /var/www/xyz.arthurtoday.com/logs/access.log combined
</VirtualHost>

4.建立網站資料夾
sudo mkdir -p /var/www/xyz.arthurtoday.com/public_html
sudo mkdir /var/www/xyz.arthurtoday.com/logs

5.啟用虛擬網站
sudo a2ensite xyz.arthurroday.com

6.重新載 Apache 的設定
sudo /etc/init.d/apache2 reload

7.在 arthurtoday.com 的 DNS 上,加一筆 xyz 的 A Record 指到這台 Apache Server 的 IP。


這樣就算完成了,只要在瀏覽器打入 xyz.arthurtoday.com 應該就可以看到一個沒有檔案的資料夾網頁了 (因為還沒放任何的 html 檔到 /var/www/xyz.arthurtoday.com/public_html )

8.如果要停用這個虛擬網站
sudo a2dissite xyz.arthurtoday.com
sudo /etc/init.d/apache2 reload


[+] Ubuntu 指令新手會用到的35個技法 - 這是以阿舍的使用經驗編寫出來的電子書,三天內應該就看的完,學的起來哩 ! 有空就參考一下囉 ! ... ^^=

關於阿舍

好文不藏私,請多分享囉!! ^^=



5 則留言 :

鄭元傑 提到...

您好
我想請問如果是要自己架設DNS server的話又該如何修該Apache設定呢?
另外 有辦法一台server同時跑多個apache嗎(一台web server支援多個web)?
謝謝

Arthur Yu 提到...

Hello,

1. 在 DNS 上建立 A 記錄指向這台 Apache 的 IP,這樣,用新建的 A記錄網址就可以連到這台 Apache Server 了。

2. 要在同一台 Server 上架多個網站只需要安裝一個 Apache Server 即可,然後,是透過阿舍這篇的方式來建立多個不同的網站的哩 !

供參囉 ! ...^^=

shiki60215 提到...

您好,我最近剛學Ubuntu及Apache2很多地方都不懂
例如
1.192.168.1.5 這個IP能提供同個WIFI的手機連線嗎
2.我使用的IP是浮動IP 所以到no-ip申請了免費DNS
但我不知道如何設定Apache2讓我的電腦可以被外網看到
因為我看到Apache2設定需要IP位置
no-ip的IP位置好像每三十分鐘都會換一個
只有DNS是固定的
不知道從何下手
很想知道如何架Server因為之前只有寫android做數據填充
但是卻不知道後台怎麼建立及返回數據
很想摸透這一塊,謝謝

李昀陞 提到...

我想請問一下,因為研究需要,有沒有可能同一台機器上跑多個 Apache ?
且每個 Apache 是由不同使用者啟動的?(即用 ps -aux 可以看到不同使用者在 run Apache process)
謝謝。

Arthur Yu 提到...

Hello,

要同時執行多個 Apache 的話,請參考下面這個連結的說明,不過,看來是有點麻煩,阿舍會建議改用 Docker 或 lxc 的方式來做,可能會比較簡單些哩 ...

https://wiki.apache.org/httpd/RunningMultipleApacheInstances

供參囉 ... ^^=

張貼留言

如果留言後,發現留言不見了,這通常是因為 Goolge 把它認為是垃圾留言了,請用信件通知阿舍調整 ( ayubiz@gmail.com )。謝謝 !