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