單臺(tái)服務(wù)器中利用Apache的VirtualHost如何搭建多個(gè)Web站點(diǎn)詳解
前言
本文將詳細(xì)記錄一下如何在單臺(tái)服務(wù)器上,利用apache的virtualhost(虛擬主機(jī))來搭建多個(gè)不同的web站點(diǎn),并且每個(gè)站點(diǎn)獨(dú)立管理自己的session,下面話不多說了,來一起看看詳細(xì)的介紹吧。
開發(fā)環(huán)境
先說下我各項(xiàng)開發(fā)環(huán)境參數(shù):
- 操作系統(tǒng): RedHat6.7(CentOS)
- WEB服務(wù)器:apache2.2
- php5.6.30
修改Apache配置
apache2.2 的配置文件路徑在 /etc/httpd/conf/httpd.conf
我們用下面的命令修改apache的配置文件:
$ vim /etc/httpd/conf/httpd.conf
添加監(jiān)聽端口
找到如下的部分,
# # Listen: Allows you to bind Apache to specific IP addresses and/or # ports, in addition to the default. See also the <VirtualHost> # directive. # # Change this to Listen on specific IP addresses as shown below to # prevent Apache from glomming onto all bound IP addresses (0.0.0.0) # #Listen 12.34.56.78:80 Listen 80
默認(rèn)的話,應(yīng)該只會(huì)監(jiān)聽80端口,這里我們在后面加上用于另外站點(diǎn)的端口號(hào)。例如我們A站點(diǎn)是默認(rèn)的80端口,B站點(diǎn)計(jì)劃搭建在8080端口上,最終的配置文件修改成
... #Listen 12.34.56.78:80 Listen 80 Listen 8080
啟動(dòng)并添加VirtualHost
接著在配置文件中找到下面的章節(jié):
### Section 3: Virtual Hosts # # VirtualHost: If you want to maintain multiple domains/hostnames on your # machine you can setup VirtualHost containers for them. Most configurations # use only name-based virtual hosts so the server doesn't need to worry about # IP addresses. This is indicated by the asterisks in the directives below. # # Please see the documentation at # <URL:http://httpd.apache.org/docs/2.2/vhosts/> # for further details before you try to setup virtual hosts. # # You may use the command line option '-S' to verify your virtual host # configuration. # # Use name-based virtual hosting. # NameVirtualHost *:80 NameVirtualHost *:8080
上面的代碼是我已經(jīng)修改好的,默認(rèn)的話,最后兩行NameVirtualHost應(yīng)該也是被注釋掉了。 因?yàn)槲覀円獑⒂锰摂M主機(jī),所以這里就把我們之前監(jiān)聽的兩個(gè)端口都設(shè)置好。
同時(shí),將之后的配置文件修改成如下的樣子,我們先來設(shè)置默認(rèn)的80端口的站點(diǎn)A
# # VirtualHost example: # Almost any Apache directive may go into a VirtualHost container. # The first VirtualHost section is used for requests without a known # server name. # <VirtualHost *:80> # ServerAdmin webmaster@dummy-host.example.com DocumentRoot /var/www/webA ServerName webA # ErrorLog logs/dummy-host.example.com-error_log # CustomLog logs/dummy-host.example.com-access_log common </VirtualHost>
默認(rèn)的Apache是沒有開啟VirtualHost的,所以這些代碼都是被注釋掉了的,我們這里只需要把DocumentRoot和ServerName所在的行去掉注釋并且編輯下就好了。
DocumentRoot指的的是我們A站點(diǎn)的網(wǎng)站根目錄位置
接下來再補(bǔ)充上8080端口的B站點(diǎn)信息就好了。
<VirtualHost *:8080> DocumentRoot /var/www/webB ServerName webB </VirtualHost>
到這里,重啟一下Apache服務(wù)(service httpd restart),就可以訪問兩個(gè)不同的站點(diǎn)了。
獨(dú)立Session
如果我們的A,B兩個(gè)站點(diǎn)的登錄邏輯是用的一套代碼,那我們使用后會(huì)發(fā)現(xiàn),A站點(diǎn)和B站點(diǎn)的Session是共享的,也就是說,如果用戶在A站點(diǎn)登錄了之后,B站點(diǎn)是無需登錄,自動(dòng)也處于登錄狀態(tài); 用戶在A站點(diǎn)退出后,也會(huì)自動(dòng)從B站點(diǎn)退出。
這顯然不是我們想要的結(jié)果,原因就是A,B兩個(gè)站點(diǎn)公用了一套Session體系,所以才會(huì)造成這樣的問題。
解決的辦法就是我們指定站點(diǎn)中session的存放位置。
同樣是修改配置文件中指定虛擬主機(jī),我們以站點(diǎn)B做為示例,修改配置文件如下:
<VirtualHost *:8080> DocumentRoot /var/www/webB ServerName webB <Directory "/var/www/webB"> AllowOverride All php_value session.save_path "/var/lib/php/session_B" </Directory> </VirtualHost>
php_value中 session.save_path 其實(shí)就是php.ini文件中的session.save_path字段,這里我們其他值都使用默認(rèn)的php.ini配置文件,唯獨(dú)指定了session的文件存放路徑,默認(rèn)的php session文件是存儲(chǔ)在 /var/lib/php/session/文件夾中。
再試著去訪問以下站點(diǎn)B,并且進(jìn)行一些session的存取操作,回頭到/var/lib/php/session_B文件夾中,就會(huì)發(fā)現(xiàn)新的session文件了。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
詳解linux系統(tǒng)目錄sys,tmp,usr,var!
在本篇文章里小編給大家詳解了關(guān)于linux系統(tǒng)目錄,sys,tmp,usr,var!的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們參考下。2019-06-06如何在Apache和Nginx禁止上傳目錄里PHP的執(zhí)行權(quán)限
這篇文章主要介紹了如何在Apache和Nginx禁止上傳目錄里PHP的執(zhí)行權(quán)限的具體方法,非常簡單,有需要的小伙伴可以參考下2016-10-10如何配置apache虛擬主機(jī)的實(shí)例小結(jié)
如果你是第一次配置apache虛擬主機(jī),那么通過閱讀這篇文章你將會(huì)了解到如何實(shí)現(xiàn)apache虛擬主機(jī)配置。其實(shí)要配置好一臺(tái)虛擬主機(jī)沒有想象中那么難2014-01-01windows10安裝ubuntu20.04雙系統(tǒng)詳細(xì)圖文教程
這篇文章主要介紹了windows10安裝ubuntu20.04雙系統(tǒng)詳細(xì)圖文教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06