你把開概念搞混了,APACHE是一種服務端系統,虛擬機是一種虛擬化服務。你可以虛擬機上裝APACHE,也可以在虛擬機上安裝其它服務端系統,比如SERVER-U,FTP伺服器。
確切說兩個一個是服務端軟體,一個是虛擬化的服務。
以應用軟體和操作系統軟體的關系來類比的話,APACHE是應用軟體,虛擬機是操作系統軟體,可以在操作系統上安裝多種應用軟體,也可以在虛擬機上安裝多種服務端軟體。
二者不是一個層面的問題。
PHP+MYSQL這個環境能否在虛擬機上安裝或是運行取決於系統環境的設置,與是否是虛擬機無關。
2、怎麼在apache上安裝虛擬主機
Apache配置虛擬主機方法在windows和linux有些差異,今天給大家演示如何在windows上配置Apache虛擬主機,此方法主要適用於獨立的Apache環境。
1. 打開目錄Apache的安裝目錄/conf/extra/, 找到 httpd-vhosts.conf 文件;
2. 添加一段代碼來指定某一域名的網站,如圖我配置虛擬域名是:
project.com,文件目錄指向的是CI框架;
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "D:/AMP/Apache/htdocs/ci"
ServerName project.com
ErrorLog "logs/project.com-error.log"
CustomLog "logs/project.com-access.log" common
</VirtualHost>
3. 打開 httpd.conf 文件, 添加如下代碼:
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
如果已存在,將Include前面的#去掉;
3、如何配置 Apache 的虛擬主機
Apache 的虛擬主機就是在一台伺服器上運行多個網站,每個虛擬主機都可以綁定獨立的域名,為這些域名可以指定單獨的目錄,訪問這些域名的時候,Apache 會打開對應目錄裡面的東西。配置 Apache 的虛擬主機,只需要去修改 Apache 的配置文件。虛擬主機的英文是 virtual host,所以,Apache 配置虛擬主機的文件可能是 httpd.conf ,也可能是跟 virtual host 這個名字相關的文件,比如 vhost.conf ,具體要使用哪一個配置文件,需要自己去判斷。
4、什麼是虛擬主機,apache 虛擬主機
虛擬機
虛擬出來的計算機空間
就是一台伺服器上安裝了Apache服務軟體
然後創建Apache站點
就是Apache虛擬空間
當然這個涉及到更多的計算機問不再廢話
5、如何設置apache的虛擬主機
Apache 配置虛擬主機三種方式
一、基於IP1. 假設伺服器有個IP地址為192.168.1.10,使用ifconfig在同一個網路介面eth0上綁定3個IP:
[root@localhost root]# ifconfig eth0:1 192.168.1.11
[root@localhost root]# ifconfig eth0:2 192.168.1.12
[root@localhost root]# ifconfig eth0:3 192.168.1.13
2. 修改hosts文件,添加三個域名與之一一對應:
192.168.1.11 www.test1.com
192.168.1.12 www.test2.com
192.168.1.13 www.test3.com
3. 建立虛擬主機存放網頁的根目錄,如在/www目錄下建立test1、test2、test3文件夾,其中分別存放1.html、2.html、3.html
/www/test1/1.html
/www/test2/2.html
/www/test3/3.html
4. 在httpd.conf中將附加配置文件httpd-vhosts.conf包含進來,接著在httpd-vhosts.conf中寫入如下配置:
<VirtualHost 192.168.1.11:80>
ServerName www.test1.com
DocumentRoot /www/test1/
<Directory "/www/test1">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow From All
</Directory>
</VirtualHost>
<VirtualHost 192.168.1.12:80>
ServerName www.test1.com
DocumentRoot /www/test2/
<Directory "/www/test2">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow From All
</Directory>
</VirtualHost>
<VirtualHost 192.168.1.13:80>
ServerName www.test1.com
DocumentRoot /www/test3/
<Directory "/www/test3">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow From All
</Directory>
</VirtualHost>
5. 大功告成,測試下每個虛擬主機,分別訪問www.test1.com、www.test2.com、www.test3.com
1. 設置域名映射同一個IP,修改hosts:
192.168.1.10 www.test1.com
192.168.1.10 www.test2.com
192.168.1.10 www.test3.com
2. 跟上面一樣,建立虛擬主機存放網頁的根目錄
/www/test1/1.html
/www/test2/2.html
/www/test3/3.html
3. 在httpd.conf中將附加配置文件httpd-vhosts.conf包含進來,接著在httpd-vhosts.conf中寫入如下配置:
為了使用基於域名的虛擬主機,必須指定伺服器IP地址(和可能的埠)來使主機接受請求。可以用NameVirtualHost指令來進行配置。 如果伺服器上所有的IP地址都會用到, 你可以用*作為NameVirtualHost的參數。在NameVirtualHost指令中指明IP地址並不會使伺服器自動偵聽那個IP地址。 這里設定的IP地址必須對應伺服器上的一個網路介面。
下一步就是為你建立的每個虛擬主機設定<VirtualHost>配置塊,<VirtualHost>的參數與NameVirtualHost指令的參數是一樣的。每個<VirtualHost>定義塊中,至少都會有一個ServerName指令來指定伺服哪個主機和一個DocumentRoot指令來說明這個主機的內容存在於文件系統的什麼地方。
如果在現有的web伺服器上增加虛擬主機,必須也為現存的主機建造一個<VirtualHost>定義塊。其中ServerName和DocumentRoot所包含的內容應該與全局的保持一致,且要放在配置文件的最前面,扮演默認主機的角色。
NameVirtualHost *:80
<VirtualHost *:80>
ServerName *
DocumentRoot /www/
</VirtualHost>
<VirtualHost *:80>
ServerName www.test1.com
DocumentRoot /www/test1/
<Directory "/www/test1">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName www.test2.com
DocumentRoot /www/test2/
<Directory "/www/test2">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName www.test3.com
DocumentRoot /www/test3/
<Directory "/www/test3">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
4. 大功告成,測試下每個虛擬主機,分別訪問www.test1.com、www.test2.com、www.test3.com
1.修改配置文件
將原來的
Listen 80
改為
Listen 80
Listen 8080
2. 更改虛擬主機設置:
<VirtualHost 192.168.1.10:80>
DocumentRoot /var/www/test1/
ServerName www.test1.com
</VirtualHost>
<VirtualHost 192.168.1.10:8080>
DocumentRoot /var/www/test2
ServerName www.test2.com
</VirtualHost>
6、什麼是apache虛擬主機
apache是開源的web服務軟體之一,也是現在開源系統比如centos上安裝web服務常見軟體;
虛擬主機是提供網站服務的集成環境,比如:linux Apache+php+mysqLAMP
就是常說的建站開通的虛擬空間;
所以Apache伺服器只是虛擬空間的一種架構。
深入理解Apache虛擬主機服務
概論:
訪問web服務,本質上看(從協議上)是訪問某個IP的主機上的某個埠(默認是80)
通常需要通過訪問不同的域名或者埠實現對不同網站的訪問(具體到伺服器里就是不同目錄),這個時
候就需要設置虛擬主機(VirtualHost).通常分為這樣3種:
基於域名,基於埠,基於IP,以及它們的混合。
7、關於apache虛擬主機的問題
這樣吧:
設定apache的根目錄為/var/www/html/web
web下有a和b兩個文件夾:
a中有一個index.html文件,內容為跳轉到http://192.168.0.1:8080
(讓web開發人員給你寫一個跳轉頁)
b中有一個index.html文件,內容為跳轉到http://192.168.0.1:8090
這樣訪問http://192.168.0.1/a 就到A服務了
埠是必須要加滴~
8、apache的虛擬主機
1、核心的增強
Unix線程
在有POSIX線程支持的Unix系統上,apache 虛擬主機現在可以運行在混合多進程,多線程模式。這一改進改善了很多(但不是全部)配置的可擴縮性。
新的構架系統
構架系統已經對原來基於autoconf和libtool上的草稿進行了重寫。這使得Apache的配置系統與其他包的配置系統更加相似。
多協議支持
apache 虛擬主機現在已經擁有了能夠支持伺服多協議的底層構造。mod_echo就是作為示例的成果。
對非Unix平台更好的支持
Apache 2.0在諸如BeOS,OS/2和Windows等非Unix平台上有了更好的速度和穩定性。隨著平台特定的multi-processing moles (MPMs)和Apache Portable Runtime (APR)的引入,Apache在這些平台上的指令由它們本地的API指令實現。避免了以往使用POSIX模擬層造成的bug和性能低下。
新的Apache API
2.0中模塊的API進行了重大改變。很多1.3中模塊排序/模塊優先順序的問題已經不復存在了。2.0自動處理了很多這樣的問題,模塊排序現在用per-hook的方法進行,從而擁有了更多的靈活性。而且,新的調用被加入以在避免修改Apache伺服器核心的前提下提供額外的模塊容量。
IPv6支持
在所有能被Apache Portable Runtime庫提供IPv6支持的系統上,Apache默認獲得IPv6偵聽套接字。另外,Listen, NameVirtualHost和VirtualHost 指令支持了IPv6的數字形地址字串(比如:「Listen [fe80::1]:8080」)。
濾過
apache 虛擬主機的模塊現在可以寫成過濾器的形式。當內容流經過它到伺服器或從伺服器到達的時候進行操作。舉例來說,這將使使用mod_include中的INCLUDES過濾器將CGI腳本的輸出解析為伺服器端包含指令成為可能。mod_ext_filter允許外部程序充當過濾器的角色,就象用CGI程序做處理器一樣。
多語種錯誤回報
返回給瀏覽器的錯誤信息現在已經用SSI文檔實現了多語種化。管理員可以利用此功能進行定製以達到觀感的一致。
簡化了的配置
很多易混淆的配置項已經進行了簡化。經常產生混淆的Port和BindAddress配置項已經取消了;只有Listen選項現在用於IP地址的綁定;ServerName配置項中指定的伺服器名和埠僅用於轉向和虛擬機的辨識。
本地Windows NT Unicode支持
Windows NT上的Apache 2.0現在使用utf-8標准來進行文件名的解析。這個操作直接轉換成底層的Unicode文件系統,由此為所有以Windows NT(包括Windows 2000和XP)為基礎的安裝提供了多語言支持。這一支持目前尚未涵蓋Windows 95, 98 or ME系統,因為它們仍使用機器本地的代碼頁進行文件系統的操作。
正則表達式庫更新
apache 虛擬主機包括了Perl兼容正則表達式庫(PCRE)。所有的正則表達式現在都使用了更為強大的Perl 5的語法。
2、模塊的增強
mod_ssl
Apache 2.0中的新模塊。此模塊是一個面向OpenSSL提供的SSL/TLS加密協議的一個介面。
mod_dav
Apache 2.0中的新模塊。此模塊繼承了HTTP分布式發布和版本控制規范,用於發布、得到web內容。
mod_deflate
Apache 2.0中的新模塊。此模塊允許支持此功能的瀏覽器請求頁面內容在發送前進行壓縮,以節省網路資源。
mod_auth_ldap
Apache 2.0.410中的新模塊。此模塊允許使用LDAP資料庫存儲HTTP基礎認證所需的證書。隨之而來的另一個模塊:mod_ldap ,則提供了連接池和結果的緩沖。
mod_auth_digest
利用共享內存實現了了額外的跨進程的session緩沖支持。
mod_charset_lite
Apache 2.0中的新模塊。這個試驗模塊允許針對字元集的轉換和記錄。
mod_file_cache
Apache 2.0中的新模塊。這個模塊包含了Apache 1.3中mod_mmap_static模塊的功能,另外進一步增加了緩沖能力。
mod_headers
此模塊在Apache 2.0中更具靈活性。它現在可以更改mod_proxy需用的請求headers,而且它能有條件的設置回復headers。
mod_proxy
代理模塊已經被完全重寫以充分利用新的過濾器結構的優勢,從而實現一個更為可靠的HTTP/1.1兼容的代理模塊。另外,新的<Proxy>配置部分提供了更具可讀性(而且更快)的代理站點控制; 重載<Directory proxy:...>配置的方法已經不再支持了。這個模塊現在依照協議支持分為proxy_connect, proxy_ftp和proxy_http三個部分。
mod_negotiation
加入一個新的ForceLanguagePriority指令用於保證所有情況下客戶端都收到同一個文檔,取代了不可接受的或多選擇的回應。另外,negotiation和MultiViews演算法已經進行了優化以提供更完美的結果,還有,提供了包括文檔內容的新型類型圖。
mod_autoindex
經自動索引後的目錄列表現在可被配置為使用HTML表格以達到更清晰的格式,而且允許更為細化的排序控制,包括版本排序和通配符濾過目錄列表。
mod_include
新的指令集允許修改默認的SSI元素的開始和結束標簽,而且允許以主配置文件里的錯誤提示和時間格式的配置取代SSI文檔中的相應部分。正則表達式(現在已基於Perl的正則表達式語法)的解析和分組結果可以用mod_include的變數$0 .. $9取得。
mod_auth_dbm
現在在AuthDBMType的規策下支持多種類似DBM的資料庫。
9、Apache怎麼配置虛擬主機
echo "NameVirtualHost *:80">>/etc/httpd/conf/httpd.conf
10、apache怎麼配置localhost的虛擬主機
修改 hosts 文件
1
不管你用的是什麼系統,windows, mac,電腦上都會有一個 hosts 文件,修改這個文件,可以改變主機名所對應的 ip 地址。比如你安裝了 Web 開發環境(MAMP 或 WAMP),啟動環境以後,訪問 http://localhost 你就會打開環境的默認的目錄,這個 localhost 就是在 hosts 文件里定義的,它所指向的 ip 地址是 127.0.0.1 ,這個 ip 地址表示本地的你正在使用的這台電腦,了解詳細的內容,可以搜索一下 :)
修改這個 hosts 文件,我們可以手工的去指定任何主機名指向任何的 ip 地址,當然這個設置隻影響你自己的電腦,比如我們可以隨便造一個域名,比如 hello.com,讓這個域名指向你的電腦,也就是 127.0.0.1 這個 ip 地址。這樣你在瀏覽器中請求 hello.com ,打開的就是你在本地電腦上搭建的環境所指定的目錄里的東西。為了測試 apache 的虛擬主機功能,你可以去虛擬幾個這樣的域名,這樣在創建虛擬主機的時候,你可以讓這些域名打開各自的目錄。下面,我們先去修改這個 hosts 文件。
1. 找到 hosts 文件,windows 系統是在 Windows\System32\Drivers\etc 這個目錄下,Mac 系統是在 /etc/hosts ,找到以後可以使用文本編輯軟體打開它。
2. 在 hosts 文件里,新的一行上,先輸入 ip 地址 127.0.0.1 ,然後空格,再輸入一個主機名,這個主機名可以隨便,比如 hello.com ,這樣訪問 hello.com 就會打開在你的電腦上的網站了。另起一行,再去定義一條,127.0.0.1 hola.com 。
3. 保存修改之後的 hosts 文件,然後啟動在本地上的 Web 環境,打開瀏覽器,在地址欄上輸入 hello.com ,還有 hola.com ,看看打開的是不是你在本地上的內容。現在,你看到的應該跟你使用 http://localhost 打開的是一樣的東西。
END
配置 Apache 虛擬主機
現在,我們虛擬了兩個域名,讓它們指向了本地的電腦,訪問它們,打開的是同一個目錄里的內容,下面這個練習,我們通過修改 Apache 的配置文件,讓訪問不同域名的時候,打開的是不同的目錄。你首先要判斷一下配置 Apache 虛擬主機的配置文件,一般是在 httpd.conf 這個主配置文件裡面,不過,很多環境都會單獨把虛擬主機放在一個配置文件裡面,然後在 httpd.conf 文件里指定一下,包含這個單獨配置虛擬主機的文件。
1. 找到配置虛擬主機的配置文件,如果你用的是 WAMP 搭建的環境,先找到並打開 httpd.conf ,在這個文件里,搜索 # Virtual hosts ,它下面有一行代碼, #Include conf/extra/httpd-vhosts.conf... 你可以去掉它前面的 # ,這樣,Apache 啟動以後,也會去載入這個httpd-vhosts.conf 配置文件,這樣做的好處就是可以保持 Apache 相關設置的整潔。當然,你完全可以在主配置文件 httpd.conf 裡面去設置虛擬主機。
2. 打開 httpd-vhosts.conf 這個文件,沒有這個文件也可以去創建一個,或者直接在 httpd.conf 文件裡面去配置虛擬主機。配置虛擬主機的東西應該像這樣:
3. 應該有兩段這樣的代碼,每一段都是在配置一個虛擬主機,你可以復制其中的一段,然後粘貼到文件的最下面。再根據自己的需要去修改這段代碼。理解它的意思,ServerAdmin 就是網站的管理員的郵箱,DocumentRoot 是虛擬主機的主目錄,也就是訪問這個虛擬主機所打開的那個目錄,這個目錄你可以自己去指定,要注意的是,你需要先去創建這個目錄,然後再在這里去指定這個目錄的位置。ServerName 是主機名,比如之前我們虛擬的那個主機名 hello.com,ServerAlias 是主機的別名,你可以指定一個其它的主機名,訪問它的時候也會打開這個虛擬主機的目錄里的東西。ErrorLog 是錯誤的日誌,也就是發生錯誤的時候,會把錯誤記錄到哪個文件里。CustomLog 是虛擬主機訪問的日誌。
這樣自己新添加的虛擬主機看起來應該像這樣:
3
4. 在瀏覽器里打開 hello.com ,訪問的是這個虛擬主機的配置里 DocumentRoot 所指定的 /Applications/MAMP/htdocs/hello 這個目錄里的東西,你可以在這個目錄裡面放點東西,比如一個 WordPress 或者 Drupal 的網站等等。
註:配置虛擬主機的時候,第一個虛擬主機是默認的,你需要留著,配置自己的虛擬主機,可以從第二個開始配置,也就是第二段 <VirtualHost> 代碼。