官方文檔的主旨是:運用Apache的Mod_proxy實現opencms的動態靜態資源分離,由apache直接存儲靜態資源,tomcat處理請求中的動態資源,并去除前綴/opencm/opencms,我的配置測試環境是:
tool | version |
gentoo linux |
2.6 |
apache | 2.0 |
tomcat | 5.5 |
mysql | 4.1 |
opencms | 6.2 |
在作任何文件的配置修改之前,請最好作個備份!配置步驟如下:
1. 在你的域名服務中設置你的域名,稍后安裝及配置過程中將會用到。我的域名是在/etc/hosts 文件中設置的:
127.0.0.1 localhost localhost.localdomain 192.168.0.136 www.lxbing.com 192.168.0.136 ww.example.com 192.168.0.136 www.doc.com |
2. 清除tomcat下/webapps目錄中的全部應用,關閉tomcat,把opencms.war包改為ROOT.war,拷入 /webapps目錄,因為tomcat默認的應用是ROOT,這樣就去除了路徑中的第一個opencms。啟動tomcat,按步驟安裝opencms??梢酝ㄟ^http://www.lxbing.com:8080/setup 也可以用http://Ip:8080/setup
進行安裝。
3. 安裝完畢后你可以通過http://Ip:8080/opencms/system/login進入opencms的工作區,可以看到還有一個/opencms存在于路徑中。
找到 ${TOMCAT_HOME}/webapps/ROOT/WEB-INF/config/opencms-importexport.xml文件,編輯節點 staticexport/rendersettings 中的部分內容,去除上下文環境,因為現在opencms已經作為tomcat的默認應用了,說以它的默認上下文環境就是根目錄,編輯后的節點中的相關內容為:
<rfs-prefix>/export</rfs-prefix> <vfs-prefix>${SERVLET_NAME}</vfs-prefix> <userelativelinks>false</userelativelinks> <exporturl>http://127.0.0.1:8081${SERVLET_NAME}/handle404</exporturl> |
4. 修改${TOMCAT_HOME}/webapps/ROOT/WEB-INF/config/opencms-system.xml 文件,配置opencms中的多個站點,在節點system/sites 中設置需要配置的站點(所謂站點就是opencms中的microsite文件類型),由于測試用的opencms是新安裝的,所以我以oepncms中的/default/,/demopages/,/alkacon-documentation/ 為例,具體配置如下:
<sites> <workplace-server>http://www.lxbing.com</workplace-server> <default-uri>/sites/default/</default-uri> <site server="http://www.lxbing.com" uri="/sites/default/"/> <site server="http://www.example.com" uri="/sites/default/demopages/"/> <site server="http://www.doc.com" uri="/sites/default/alkacon-documentation/"/> </sites> |
注意:在這種配置中,所以站點的 uri 都必須在 /site/default/目錄下,否則,會報錯,我沒嘗試過能否把/site/default/ 該為根目錄/ 或是其他意義的目錄,如何有人作過這方面的配置測試,希望能拿出來讓大家學習! 每個站點的域名必須是在你的域名服務中定義過的,否則,會報錯。
5. 配置 ${TOMCAT_HOME}/conf/ 中的server.xml 文件.
<Server port="8005" shutdown="SHUTDOWN" debug="0"> <Service name="Tomcat-Standalone"> <!-- Define a connector for the "public visible" server name--> <Connector port="8081" minProcessors="5" maxProcessors="75" proxyName="www.lxbing.com" proxyPort="80" enableLookups="true" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" useURIValidationHack="false" disableUploadTimeout="true" /> <Connector port="8082" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" proxyName="www.example.com" proxyPort="80" debug="0" connectionTimeout="20000" disableUploadTimeout="true" /> <Connector port="8088" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" proxyName="www.doc.com" proxyPort="80" debug="0" connectionTimeout="20000" disableUploadTimeout="true" /> <Engine name="Standalone" defaultHost="localhost" debug="0"> <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- You can change "unpackWARs" and "autoDeploy" to false after the installation is finished --> <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="localhost_log." suffix=".txt" timestamp="true"/> </Host> </Engine> </Service> </Server> |
6. 配置 /etc/Apaches2/中的 httpd.conf文件,使用能支持mod_proxy模塊
LoadModule alias_module modules/mod_alias.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so |
7. 配置apache 中的虛擬主機<VirtualHost> ,apache監聽80端口,當
NameVirtualHost *:80 <VirtualHost *:80> ProxyPass /opencms/ http://www.example.com/ ProxyPass /resources/ http://localhost:8082/resources/ ProxyPass / http://localhost:8082/opencms/
<VirtualHost *:80> ProxyPass /opencms/ http://www.lxbing.com/ ProxyPass /resources/ http://localhost:8081/resources/ ProxyPass /export/ http://localhost:8081/export/ ProxyPass / http://localhost:8081/opencms/ <VirtualHost *:80> ProxyPass /opencms/ ! ProxyPass /resources/ http://localhost:8088/resources/ ProxyPass / http://localhost:8088/opencms/ |
在這個配置中,www.lxbing.com 代理的是 http://localhost:8081/opencms/,這個頁面有一個鏈接到opencms登錄頁面的鏈接,如果按照官方文檔中的說明配置為:
ProxyPass /opencms/ ! RedirectPermanent /opencms/ http://${DOMAIN_NAME}/ |
將無法登錄opencms工作區,真確的配置為:
ProxyPass /opencms/ http://${DOMAIN_NAME}/ RedirectPermanent /opencms/ http://${DOMAIN_NAME}/ |
在配置虛擬主機時應注意 ServerName,DocumentRoot,以及 /resources/, /export/,現在配置完成,可以通過域名訪問opencms中的站點了,但是apache和tomcat是怎么分別管理靜態,動態資源的,我還不大明白,是不是我的配置中有什么不妥的地方,請大家多多指教!