Ubuntu 12.04 開啟Apache2 的虛擬主機 (Virtual Host)

我的伺服器主機只有一個固定ip,不過有兩個網域名稱(domain name)指向這個ip

我想要讓這兩個網域有各自的網站,所以就想開啟apache的虛擬主機(Virtual Host)功能

參考了許多網路上的文章,終於設定成功

先分享一下Apache虛擬主機的好處

多個網址 (domain name)指向同一個IP時,可以用虛擬機器將不同的網址指向不同的資料夾,這樣的話多個部落客就可以分享同一台電腦的資源,又可以各自管理自己的網站互不影響,如果某一個網站想要下線維修 ,只需要暫時關閉該虛擬主機,其他虛擬主機可以繼續運作,甚至同域名我們也可以指定www.mydomain.com 與mail.mydomain.com指向不同的路徑

例如  我有一個網站資料都在/var/www/mydomain裡面

同時我有一個webmail資料都在/var/www/webmail裡面

系統預設的情況下  /var/www為主頁所在地  所以如果我的主頁是/var/www/mydomain/index.html

則要使用www.mydomain.com/mydomain 才能連上網站主頁

而想要連webmail 則必須連上www.mydomain.com/webmail

這樣不論是系統管理或是讓使用者記憶網址都會比較困難

如果使用虛擬主機,我可以將www.mydomain.com的主頁所在地設到/var/www/mydomain

這樣只要連到http://www.mydomain.com就可以看到我的首頁

而我也可以指定webmail的網域名稱為mail.mydomain.com

然後將主頁所在地指定到/var/www/webmail

這樣使用者想要用webmail 就直接連到 http://mail.mydomain.com即可

在ubuntu12.04上開啟虛擬主機非常簡單

在這個版本的ubuntu  虛擬主機是由/etc/apache2/sites-available與/etc/apache2/sites-enabled這兩個資料夾來控制的

sites-available 裡面包含了所有的虛擬主機設定檔,而site-enabled則是目前已經啟動的虛擬主機設定檔。在sites-available中  有一個default檔案  是設定虛擬主機的參考設定檔,我們可以直接用這個檔案稍作修改就可以開啟新的虛擬主機

這裡我們要執行

$sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/domain.name

其中domain name請自行帶入你的網址  這樣便於以後管理

打開檔案

$sudo vim /etc/apache2/sites-available/domain.name

要改的地方只有幾處

<VirtualHost *:80>

ServerAdmin webmaster@localhost#把劃掉的部份改成你的信箱

DocumentRoot /var/www  #把劃掉的部份改成你指定的資料夾路徑

#加入下面這一行 把 your.domain.name改成你的網域名稱

ServerName your.domain.name

<Directory />

Options FollowSymLinks

AllowOverride None

</Directory>

<Directory /var/www/>#劃掉的部份改成跟上面一樣的資料夾路徑

…..

 

</VirtualHost>

存檔後使用下面指令來啟用這個虛擬主機

$sudo a2ensite /etc/apache2/sites-available/domain.name

要停用請用下面這個指令

$sudo a2dissite /etc/apache2/sites-available/domain.name

其實這兩個指令就是新增或刪除該檔案在 /etc/apache2/sites-enabled資料夾中的符號連結 (symlinks)

接著用下面的指令讓設定生效

$sudo service apache2 reload

我在設定的時候發現設定無法生效  所以就到處找原因

後來發現原來在我的 /etc/apache2/apache2.conf 中有以下一行設定,導致虛擬機器的設定無法生效

ServerName my.domain.name

此處的my.domain.name是我的個人網域

有碰到虛擬網域設定無法生效的時候 ,可以檢查一下是否在apache2.conf中有什麼設定與虛擬網域的設定衝突了

在〈Ubuntu 12.04 開啟Apache2 的虛擬主機 (Virtual Host)〉中有 2 則留言

  1. 我想請問一下 如果我有一個網域 假設為 a.com
    但是我有兩個網站(同一目錄 不同資料夾)
    我要由a.com去分
    變成
    1. xxx.a.com
    2. bbb.a.com
    這樣要怎麼分

    • 如果你用的是Apache2, 那就是用我這的方法,在/etc/apache2/sites-available 中建立不同的檔案
      以你的問題為例,就是
      $sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/xxx.a.com
      $sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/xxx.b.com

      再以xxx.a.com為例,要修改/etc/apache2/sites-available/xxx.a.com
      $sudo vim /etc/apache2/sites-available/xxx.a.com

      修改ServerAdmin
      ServerAdmin webmaster@localhost#把劃掉的部份改成你的信箱

      修改DocumentRoot
      DocumentRoot /var/www #把劃掉的部份改成你指定的資料夾路徑

      修改ServerName
      ServerName xxx.a.com

      /var/www/>#劃掉的部份改成跟上面一樣的資料夾路徑

      用同樣方法修改/etc/apache2/sites-available/xxx.b.com

      修改完存檔後使用下面指令來啟用這個虛擬主機
      啟用xxx.a.com
      $sudo a2ensite /etc/apache2/sites-available/xxx.a.com

      啟用xxx.b.com
      $sudo a2ensite /etc/apache2/sites-available/xxx.b.com

      剩下的我就不贅述了,文章裡都有

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料