程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP初學者:配置Apache服務器並且設置DNS

PHP初學者:配置Apache服務器並且設置DNS

編輯:關於PHP編程

當然主要有技術含量的是點DNS的解析,我正給我們公司負責,先查資料的說...‘

  我們通常所說的虛擬主機技術就是將一台(或者一組)服務器的資源(系統資源、網絡帶寬、存儲空間等)按照一定的比例分割成若干台相對獨立的“小主機”的技術。每一台這樣的“小主機”在功能上都可以實現WWW、FTP、Mail等基本的Internet服務,就像使用獨立的主機一樣。
 
    目前網站服務器的虛擬主機平台使用以開放的Apache為最多,其次是微軟的Windows IIS。Apache具有跨平台(FreeBSD/Linux/Windows/Solaris/Other UNIX)、易於維護與最佳安全性等優點。
    Apache是率先支持基於IP虛擬主機的服務器之一。 Apache 1.1及其更新版本同時支持基於IP和基於主機名的虛擬主機,不同的虛擬主機有時會被稱為基於主機(host-based) 或非IP虛擬主機(non-IP virtual hosts)。

    用Apache設置虛擬主機服務通常可以采用兩種方案:基於IP地址的虛擬主機和基於主機名字的虛擬主機,下面我們分別介紹一下它們的實現方法以及優缺點。以便大家在具體的應用中能夠選擇最合適的實現方法。

   一、Apache實現基於IP地址的虛擬主機(每個站點擁有一個獨立IP地址)

    使用這種虛擬主機方式,首先要在服務器上為每個虛擬主機單獨設置一個IP地址。這些IP地址可以通過增加多個網卡或者在一個網卡上設立多個IP地址來完成。有了多個IP地址後,可以采用以下兩種方式之一來設置Apache。

1、為每個虛擬主機運行一份Apache
    采用這種方式,每一份Apache程序可以以單獨的用戶運行,因此各個虛擬主機之間互不影響。設置這種虛擬主機時,只要為每一份Apache設置一套配置文件就可以了,唯一需要注意的是:必須使用“Listen”語句,強制每一份Apache 僅僅在屬於“自己”的IP地址上接收服務請求。

    優點:各個虛擬主機之間互不干擾,安全性高。
    缺點:占用系統資源較多。

2、多個虛擬主機共享同一份Apache
    采用這種方式,各個虛擬主機共享同一份Apache,因此各個虛擬主機之間有一定的影響,尤其是執行CGI程序時,可能會帶來一些嚴重的安全問題。設置這種虛擬主機時,只要為每一個虛擬主機設置類似如下的信息即可:
    <VirtualHost www.ghq1.com>
    DocumentRoot /www/ghq1
    …
    </VirrualHost>

    優點:占用系統資源比上一種方式少。
    缺點:安全性低,每個虛擬主機仍然需要占用一個IP地址。

  
    例如服務器一個網卡上綁定有兩個IP地址(172.16.3.40和 172.16.3.50)分別對應域名 www.ghq1.com和www.ghq2.org的服務,配置如下:

    服務器配置(apache的配置文件httpd.conf)
    Listen 80

    <VirtualHost 172.16.3.40>
    DocumentRoot /www/ghq1
    ServerName www.ghq1.com
    </VirtualHost>

    <VirtualHost 172.16.3.50>
    DocumentRoot /www/ghq2
    ServerName www.ghq2.org
    </VirtualHost>

    配置簡單說明:“Listen”默認httpd服務會監控第80號通信端口, “Listen”選項讓用戶自行指定apache 服務器監控的IP地址或通信端口。

    “DocumentRoot”:指定apache 服務器存放網頁的根目錄;“ServerName”:允許用戶自行設置主機名,這個名稱將被送到遠程連接程序,以取代安裝apache 服務器主機的真實名稱。<VirtualHost IP >和</VirtualHost>構成虛擬主機的語法結構,其中的IP就是我們在服務器上綁定的不同的IP地址,也可以是IP地址加上通信端口號(見下面的例子)。

    如果服務器有兩個IP地址(172.16.3.40和 172.16.3.50)分別對應域名 www.ghq1.com和www.ghq2.org。對每個域名,我們都希望在80端口和8080端口發布我們的網站。可以這樣配置:

    服務器配置(apache的配置文件httpd.conf)
    Listen 172.16.3.40:80
    Listen 172.16.3.40:8080
    Listen 172.16.3.50:80
    Listen 172.16.3.50:8080

    <VirtualHost 172.16.3.40:80>
    DocumentRoot /www/ghq1-80
    ServerName www.ghq1.com
    </VirtualHost>

    <VirtualHost 172.16.3.40:8080>
    DocumentRoot /www/ghq1-8080
    ServerName www.ghq1.com
    </VirtualHost>

    <VirtualHost 172.16.3.50:80>
    DocumentRoot /www/ghq2-80
    ServerName www.ghq1.org
    </VirtualHost>

    <VirtualHost 172.16.3.50:8080>
    DocumentRoot /www/ghq2-8080
    ServerName www.ghq2.org
    </VirtualHost>

    因此,建立虛擬主機,我們要做好不同的IP對應的域名解析工作,建立相應的目錄(如/www/ghq1),將相應的主頁內容存放在相應的目錄中即可。

二、Apache實現基於主機名的虛擬主機服務(一個IP地址實現多個網站)
  
    基於主機名字的虛擬主機服務,是目前虛擬主機比較常用的一種方案。因為它不需要更多的IP地址,無須什麼特殊的軟硬件支持。而且現在的浏覽器大都支持這種虛擬主機的實現方法。基於域名的的虛擬主機是根據客戶端提交的HTTP頭中的關於主機名的部分決定的。使用這種技術,很多虛擬主機可以享用同一個IP地址。

    基於域名的虛擬主機相對比較簡單,因為我們只需要配置DNS服務器將每個主機名映射(CNAMES)到正確的IP地址,然後配置Apache HTTP服務器,令其辨識不同的主機名就可以了。基於域名的服務器也可以緩解IP地址(IPV4)不足的問題。這種方式下,各個虛擬主機共享同一份Apache,因此有CGI程序運行時,安全性也不高。

    優點:只要一個IP地址就可以提供大量的虛擬主機服務。
    缺點:安全性差。維護這些虛擬主機時需要更改配置文件,並且需要重新啟動Apache進程才能起作用。因此不適合進行大規模的虛擬主機服務。

    如果服務器只有一個IP地址,而在DNS中有很多映射到這個機器。我們想要在這個機器上運行www.ghq1.com和 www.ghq2.org兩個站點。在Apache服務器的配置中創建一個虛擬主機並不會自動在DNS中對主機名做相應更新。我們必須自己在DNS中添加域名來指向我們的IP地址。否則別人是無法看到我們的web 站點。

    服務器配置(apache的配置文件httpd.conf)
    # Ensure that Apache listens on port 80
    Listen 80

    # Listen for virtual host requests on all IP addresses
    NameVirtualHost *

    <VirtualHost *>
    DocumentRoot /www/ghq1
    ServerName www.ghq1.com

    # Other directives here

    </VirtualHost>

    <VirtualHost *>
    DocumentRoot /www/ghq2
    ServerName www.ghq2.org

    # Other directives here

    </VirtualHost>

    因為*(星號)匹配所有的地址,所以主服務器不接收任何請求。因為 www.ghq1.com首先出現在配置文件中,所以它擁有最高優先級,可以認為是默認或首要服務器。這意味著如果一個接受的請求不能與某個ServerName指令相匹配, 它將會由第一個VirtualHost所伺服。

    當我們的IP地址無法確定的時候,使用*是很方便的--比如說, ISP給我們配置的是動態IP地址(如ADSL撥號上網),而我們有使用了某種動態域名解析系統時。因為*匹配任何IP 地址,所以在這樣的情況下,不論IP地址如何變化,我們都不需要另外進行配置。上述配置就是我們在絕大多數情況下使用基於域名的虛擬主機

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved