問(wèn)題描述:服務(wù)器上裝配了Apache服務(wù)和Tomcat服務(wù),Apache服務(wù)按照慣例分配80端口,Tomcat服務(wù)按照慣例占用8080端口,但是本人因?yàn)轫?xiàng)目需要,開(kāi)發(fā)了幾個(gè)PHP的項(xiàng)目,需要Apache服務(wù)進(jìn)行支持,而且需要不同的域名訪問(wèn)對(duì)應(yīng)的項(xiàng)目。另外,主機(jī)上還存在JavaEE項(xiàng)目,自然Tomcat也是不可避免的,所以需要給Tomcat項(xiàng)目也分配對(duì)應(yīng)的域名,但是Tomcat項(xiàng)目不希望帶著端口號(hào)(比如http://domian:8080),所以該場(chǎng)景下將會(huì)用到Apache轉(zhuǎn)發(fā),即80端口轉(zhuǎn)向8080,對(duì)外不公開(kāi)端口號(hào)。
解決方案:
1.打開(kāi)Apache安裝位置的httpd.conf文件,一般位于
Apache安裝根目錄/conf/httpd.conf
2.找到以下代碼:
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
去掉最前面的注釋“#”,目的是啟用apache的虛擬主機(jī)功能。
3.然后繼續(xù)查找以下代碼:
#Include conf/extra/httpd-vhosts.conf
去掉最前面的注釋“#”,目的是啟用多站點(diǎn)域名配置服務(wù)的配置文件。
4.然后找到以下代碼:
DocumentRoot "${SRVROOT}/htdocs"
將雙引號(hào)內(nèi)的內(nèi)容自己Apache服務(wù)站點(diǎn)部署的根目錄替換,如上圖,我的PHP項(xiàng)目全部放置于htdocs目錄下
5.然后在httpd.conf文件的同級(jí)目錄extra目錄下的httpd-vhosts.conf文件中修改虛擬站點(diǎn)域名訪問(wèn)配置。
DocumentRoot "${SRVROOT}/htdocs" ServerName 127.0.0.1
有的博客上說(shuō) 127.0.0.1這組必須為第一組即默認(rèn)組,否則會(huì)出現(xiàn)localhost不能訪問(wèn)的問(wèn)題,這個(gè)題目也沒(méi)有出現(xiàn)類似的問(wèn)題,但是也提醒一下大家,剩下的站點(diǎn)部署如下所示:
# Add any other Virtual Hosts below# ServerAdmin webmaster@dummy-host.example.com DocumentRoot "${SRVROOT}/htdocs/項(xiàng)目目錄" ServerName -----域名-------#將域名替換為自己的站點(diǎn)域名 # ServerAlias www.dummy-host.example.com ErrorLog "logs/-----域名--------error.log"#將域名替換為自己的站點(diǎn)域名 CustomLog "logs/-----域名-------.log" common##將域名替換為自己的站點(diǎn)域名
6.好的,Apache的80端口服務(wù)部署完成,重啟即可生效,訪問(wèn)域名即可訪問(wèn)到Apache的站點(diǎn)服務(wù),接下來(lái)是80端口的Apache轉(zhuǎn)發(fā)到8080端口的Tomcat項(xiàng)目,在httpd-vhosts.conf文件中配置如下:
# ServerAdmin webmaster@dummy-host2.example.com ProxyPreserveHost On ProxyRequests Off ProxyPass / http://localhost:8080/項(xiàng)目名 ProxyPassReverse / http://localhost:8080/項(xiàng)目名 ServerName ---域名----#將域名替換為自己的站點(diǎn)域名 ErrorLog "logs/---域名-----error.log"#將域名替換為自己的站點(diǎn)域名 CustomLog "logs/---域名----.log" common#將域名替換為自己的站點(diǎn)域名
具體指令的含義如下:
ServerAdmin:服務(wù)器返回給客戶端的錯(cuò)誤信息中包含的管理員郵件地址 ,置了在所有返回給客戶端的錯(cuò)誤信息中包含的管理員郵件地址。如果httpd不能將提供的參數(shù)識(shí)別為URL,它就會(huì)假定它是一個(gè)email-address ,并在超連接中用在mailto:后面。推薦使用一個(gè)Email地址,因?yàn)樵S多CGI腳本是這樣認(rèn)為的。如果你確實(shí)想使用URL,一定要保證指向一個(gè)你能夠控制的服務(wù)器,否則用戶將無(wú)法確保一定可以和你取得聯(lián)系。 剩下的都是反向代理的配置,詳細(xì)了解請(qǐng)點(diǎn)擊鏈接
7.重啟Apache服務(wù)器,可以看到效果,8080端口不再出現(xiàn),域名可以直接訪問(wèn)到Tomcat的站點(diǎn)服務(wù)。