我的伺服器主機只有一個固定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中有什麼設定與虛擬網域的設定衝突了
我想請問一下 如果我有一個網域 假設為 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
用同樣方法修改/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
剩下的我就不贅述了,文章裡都有