opencms官方文档中有一篇关于整合opencms,Apache,tomcat管理多站点的文章--“Integrating OpenCms,
Tomcat and the Apache webserver with
mod_proxy”,这些天按照文档说明自己动手配置了一下,现在把心得体会写出来,以供opencms的研究者,使用者参考,批评指正。
官方文档的主旨是:运用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
192.168.0.136 ww.example.com
192.168.0.136
|
2. 清除tomcat下/webapps目录中的全部应用,关闭tomcat,把opencms.war包改为ROOT.war,拷入
/webapps目录,因为tomcat默认的应用是ROOT,这样就去除了路径中的第一个opencms。启动tomcat,按步骤安装
opencms。可以通过http://:8080/setup 也可以用
进行安装。
3. 安装完毕后你可以通过进入opencms的工作区,可以看到还有一个/opencms存在于路径中。
找到
${TOMCAT_HOME}/webapps/ROOT/WEB-INF/config/opencms-importexport.xml文件,编辑节点
staticexport/rendersettings 中的部分内容,去除上下文环境,因为现在opencms已经作为tomcat的默认应用了,所以它的默认上下文环境就是根目录,编辑后的节点中的相关内容为:
/export
${SERVLET_NAME}
false
{SERVLET_NAME}/handle404
|
4. 修改
${TOMCAT_HOME}/webapps/ROOT/WEB-INF/config/opencms-system.xml 文件,配置opencms中的多个站点,在节点
system/sites
中设置需要配置的站点(所谓站点就是opencms中的microsite文件类型),由于测试用的opencms是新安装的,所以我以oepncms中
的/default/,/demopages/,/alkacon-documentation/ 为例,具体配置如下:
http://
/sites/default/
http://" uri="/sites/default/"/>
"
uri="/sites/default/demopages/"/>
http://"
uri="/sites/default/alkacon-documentation/"/>
|
注意:在这种配置中,所以站点的 uri 都必须在
/site/default/目录下,否则,会报错,我没尝试过能否把/site/default/ 该为根目录/
或是其他意义的目录,如何有人作过这方面的配置测试,希望能拿出来让大家学习! 每个站点的域名必须是在你的域名服务中定义过的,否则,会报错。
5. 配置
${TOMCAT_HOME}/conf/ 中的
server.xml 文件.
"8081" minProcessors="5" maxProcessors="75"
proxyName="" proxyPort="80" enableLookups="true"
redirectPort="8443" acceptCount="100" debug="0"
connectionTimeout="20000" useURIValidationHack="false"
disableUploadTimeout="true" />
port="8082" maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false" redirectPort="8443"
acceptCount="100" proxyName="" proxyPort="80"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />
"8088" maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false" redirectPort="8443"
acceptCount="100" proxyName="" proxyPort="80"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />
unpackWARs="true" autoDeploy="true">
directory="logs" prefix="localhost_log."
suffix=".txt" timestamp="true"/>
|
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 中的虚拟主机
,apache监听80端口,当
NameVirtualHost *:80
Order allow,deny Allow from all
ServerName
ServerAdmin webmaster@alkacon.com
DocumentRoot "/var/lib/tomcat-5.5/webapps/ROOT/"
ErrorLog logs/error.log
# Log only non-redirect requests in "normal" log file
SetEnvIf Request_URI "\/opencms\/*" redirect
CustomLog logs/localhost-access.log common env=!redirect
ProxyPass /opencms/ /
RedirectPermanent /opencms/ /
ProxyPass /resources/ 8082/resources/
ProxyPass /export/ 8082/export/
ProxyPass / 8082/opencms/
ProxyPassReverse / 8082/opencms/
Order allow,deny Allow from all
ServerName
ServerAdmin webmaster@alkacon.com
DocumentRoot "/var/lib/tomcat-5.5/webapps/ROOT/"
ErrorLog logs/error.log
# Log only non-redirect requests in "normal" log file
SetEnvIf Request_URI "\/opencms\/*" redirect
CustomLog logs/localhost-access.log common env=!redirect
ProxyPass /opencms/ http:///
RedirectPermanent /opencms/ http:///
ProxyPass /resources/ 8081/resources/ ProxyPass /export/ 8081/export/
ProxyPass / 8081/opencms/
ProxyPassReverse / 8081/opencms/
Order allow,deny Allow from all
ServerName
ServerAdmin webmaster@alkacon.com
DocumentRoot "/var/lib/tomcat-5.5/webapps/ROOT/"
ErrorLog logs/error.log
# Log only non-redirect requests in "normal" log file
SetEnvIf Request_URI "\/opencms\/*" redirect
CustomLog logs/localhost-access.log common env=!redirect
ProxyPass /opencms/ !
RedirectPermanent /opencms/ http:///
ProxyPass /resources/ 8088/resources/
ProxyPass /export/ 8088/export/
ProxyPass / 8088/opencms/
ProxyPassReverse / 8088/opencms/
|
在这个配置中,
代理的是
8081/opencms/,这个页面有一个链接到opencms登录页面的链接,如果按照官方文档中的说明配置为:
ProxyPass /opencms/ !
RedirectPermanent /opencms/ {DOMAIN_NAME}/
|
将无法登录opencms工作区,真确的配置为:
ProxyPass /opencms/ {DOMAIN_NAME}/
RedirectPermanent /opencms/ {DOMAIN_NAME}/
|
在配置虚拟主机时应注意
ServerName,DocumentRoot,以及 /resources/, /export/,现在配置完成,可以通过域名访问opencms中的站点了,但是apache和tomcat是怎么分别管理静态,动态资源的,我还不大明白,是不是我的配置中有什么不妥的地方,请大家多多指教!
阅读(1957) | 评论(0) | 转发(0) |