0%

虛擬主機設定

在預設的xampp環境下,每次如果換了新的專案目錄,可能就要去改一次 documentroot 的設定,一但同時要管理的專案變多時,會一直在修改這個設定,很不方便,因此web server大多有提供設置虛擬主機(virtual host)的功能,讓我們可以透過 porthost 對應的方式,來簡化對documentroot的修改

檢查Apache是否有啟用Virtual Host模組

使用文字編輯器打開apache的http.conf檔案

可以使用關鍵字 hosts 來找到相關的設定,確認模組前的 # 已經拿掉了,而這個模組的路徑也代表了這個web server存放虛擬主機設定檔的地方

接著到 xampp 的目錄下找到這個httpd-vhosts.conf檔,並使用文字編輯器來打開

預設的設定檔內容有一些設定的範例可供參考:

針對不同的專案目錄進行虛擬主機的設定

虛擬主機的用意在於可以讓一組IP去對應多個不同的專案目錄,為了達到這個目的,所以需要有一個中間層來指派什麼條件下,此唯一的IP要去連到那個專案目錄;此中間層有兩種做法:

一、使用port號來指定虛擬主機

這是最簡單快速的方式,有點像是同一個地址,透過不同的樓層來指定不同的住家一樣。
在D槽建立兩個資料夾,隨意放入一個index.html,並寫上簡單的識別內容
在httpd-vhosts.conf中建立如下的設定檔,即可使用同一個localhost來對應不同的專案目錄:

  • localhost:8080 => 網站1
  • localhost:8090 => 網站2
  • 127.0.0.1:8080 => 網站1
  • 127.0.0.1:8080 => 網站2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
## 記得要先建立對應port號的傾聽
Listen 8080
Listen 8090

<VirtualHost *:8080>
DocumentRoot "D:/web01"
ServerName localhost

## 以下是針對目錄做的權限及開放功能設定
<Directory D:/web01>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

<VirtualHost *:8090>
DocumentRoot "D:/web02"
ServerName localhost
<Directory D:/web02>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

設定完成後儲存,並且重開apache server,在網址後填入對應的port號就可以看到不同的網站內容

二、使用域名來指定虛擬主機

這個方式可以模擬真實網站擁有獨立域名的運作模式,在使用一些框架類的開發環境時,通常會預設有獨立的域名狀況下運作,這類開發環境就適合使用這種指定域名的方式來建立虛擬主機,或是當成正式上線前的網站路徑設定檢查也可以。
先在httpd-vhosts.conf中建立如下的設定檔,port號都是80,但是ServerName各自指定不同的域名:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

## 只須要傾聽 80 port即可,如果在http.conf中己經有傾聽80 port,則在此檔中不需要再寫一次
Listen 80

<VirtualHost *:80>
DocumentRoot "D:/web01"

##更改ServerName為自己指定的域名
ServerName web01.com

## 以下是針對目錄做的權限及開放功能設定
<Directory D:/web01>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

<VirtualHost *:80>
DocumentRoot "D:/web02"
ServerName web02.com
<Directory D:/web02>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

接著到windows目錄下找到hosts檔(此檔沒有副檔名)

使用文字編輯器打開後,建立IP和域名的對應關係

1
2
3
4
127.0.0.1       localhost
::1 localhost
127.0.0.1 web01.com
127.0.0.1 web02.com

設定完成後儲存,並且重開apache server,在網址後填入對應的port號就可以看到不同的網站內容,
如果是windows10以上的作業系統,應該hosts儲存完畢後會立刻生效,如果是windows10以下或是沒有生效的話,重開機後讓作業系統重新載入一次hosts檔即可