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 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>
<Directory "/var/lib/tomcat-5.5/webapps/ROOT/">
Order allow,deny Allow from all
</Directory>
ServerName www.example.com
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://www.example.com/
RedirectPermanent /opencms/ http://www.example.com/
ProxyPass /resources/ http://localhost:8082/resources/
ProxyPass /export/ http://localhost:8082/export/
ProxyPass / http://localhost:8082/opencms/
ProxyPassReverse / http://localhost:8082/opencms/ </VirtualHost>
<VirtualHost *:80>
<Directory "/var/lib/tomcat-5.5/webapps/ROOT/">
Order allow,deny Allow from all
</Directory>
ServerName www.lxbing.com
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://www.lxbing.com/
RedirectPermanent /opencms/ http://www.lxbing.com/
ProxyPass /resources/ http://localhost:8081/resources/ ProxyPass /export/ http://localhost:8081/export/
ProxyPass / http://localhost:8081/opencms/
ProxyPassReverse / http://localhost:8081/opencms/ </VirtualHost>
<VirtualHost *:80>
<Directory "/var/lib/tomcat-5.5/webapps/ROOT/">
Order allow,deny Allow from all
</Directory>
ServerName www.doc.com
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://www.doc.com/
ProxyPass /resources/ http://localhost:8088/resources/
ProxyPass /export/ http://localhost:8088/export/
ProxyPass / http://localhost:8088/opencms/
ProxyPassReverse / http://localhost:8088/opencms/ </VirtualHost>
在这个配置中,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是怎么分别管理静态,动态资源的,我还不大明白,是不是我的配置中有什么不妥的地方,请大家多多指教!
分享到:
相关推荐
OpenCms中文用户手册是为了解决开源网站内容管理系统OpenCms的使用者在操作和管理过程中遇到的问题而编写的详尽指南。OpenCms是一款基于Java技术构建的强大的Web内容管理系统,它提供了一套完整的解决方案,用于创建...
7. **国际化与多语言支持**:OpenCms支持创建多语言站点,便于全球化运营。手册会介绍如何设置语言包和创建多语言内容。 8. **搜索引擎优化**:OpenCms内置SEO功能,如自定义元信息、友好的URL生成,帮助提升网站在...
然后,需要在 Tomcat 的配置文件“server.xml”中添加一些配置信息,重启 Tomcat 后,登录 Opencms 管理后台,查看站点信息,站点已经创建成功。 5. 创建站点模块 创建站点模块需要切换到“视图”到“模块”,然后...
由Alkacon Software开发,OpenCms支持多语言、多站点管理和内容版本控制等功能,是构建大型网站的理想选择。本书《OpenCms7 Development》由Dan Liliedahl编写,由Packt Publishing出版,深入探讨了通过Java API扩展...
他在多个开源社区中活跃,包括OpenCMS、Gentoo Linux和Request Tracker(RT)等。他的工作经验涵盖了嵌入式Linux开发、人工智能技术以及医疗信息学等多个领域。本书不仅体现了作者深厚的理论功底,还融入了其丰富的...
为了使OpenCms能够识别新创建的站点,需要对Tomcat进行相应的配置。 1. **打开server.xml**:编辑Tomcat安装目录下的`conf/server.xml`文件。 2. **添加配置**:在文件中增加以下内容: ```xml ...
总之,去掉OpenCMS URL中的冗余“opencms”涉及多个层面的配置和调整。理解Web服务器的URL重写机制、OpenCMS的配置选项以及SEO的最佳实践是成功实现这一目标的关键。务必谨慎操作,确保改动不会对现有网站的稳定性...
- 站点配置注意事项。 ##### 3.4 创建JSP模版 - **创建过程**: - **创建模块**: 定义页面元素。 - **创建模版**: 组合模块形成完整的页面设计。 - **实践要点**: - 模块化设计原则。 - JSP语法基础。 - 模版...
最后,为了方便管理不同环境下的OpenCMS实例,可以通过配置文件中的`<sites>`标签来定义不同的站点及其对应的路径。 1. **在线环境**: ```xml <workplace-server>http://192.168.1.136:8082</workplace-server> ...
总的来说,去掉OpenCMS URL中的`/opencms`路径是一个涉及多个配置层面的过程,需要谨慎操作并进行全面测试,以确保系统的稳定性和功能完整性。理解OpenCMS的架构和配置文件是成功执行此任务的关键。
8. **国际化与多语言**:OpenCMS支持多语言站点,你需要理解如何设置语言包和进行内容的多语言管理。 9. **数据库操作**:OpenCMS使用JDBC与数据库交互,你需要了解SQL查询和数据库设计,以便处理内容存储和检索。 ...
- **多语言支持**:OpenCMS支持多语言站点,方便跨国企业或多语种社区的运营。 ### 6. 模板引擎与样式定制 OpenCMS的Alloy Template Engine提供了强大的模板语言,允许开发者设计出美观且响应式的网页布局。你可以...
OpenCms 7.5.3版本已经支持多语言站点,这对于国际化的公司或者需要面向全球用户的网站来说非常实用。通过源代码,我们可以学习如何实现内容的多语言版本以及如何切换不同语言环境。 **7. 内容管理** OpenCms提供了...
OpenCms是一个基于Java和J2EE技术的开源CMS,支持多语言和多站点管理。它提供了一个直观的Web界面,让用户无需编程知识就能创建、编辑和发布内容。10.0.1是OpenCms的一个版本,通常包含一系列改进和新功能。 2. **...
以上是Opencms建站手册的基础内容,通过这些知识,你可以开始构建和管理自己的Opencms站点。随着对系统的深入学习,你将能够利用其高级特性,如工作流程、自定义模块开发和个性化配置,进一步提升网站的功能和用户...
接着,由专门的技术团队负责OpenCms的安装和配置,包括数据库连接、站点设置等。在内容管理方面,公司可以根据不同的产品线或地区划分多个子站点,并设置相应的工作流程来确保内容的质量和及时更新。此外,还可以...
它允许用户轻松地将 OpenCms 部署到多个服务器上,并确保所有节点之间的数据一致性,这极大地提高了系统的可靠性和容错能力。 #### 1.3 Alkacon OCEE 兼容性 Alkacon OCEE 的设计考虑了广泛的兼容性问题,确保它...
本示例将深入讲解如何在OpenCMS中配置和实现一个定时任务。 首先,理解OpenCMS的定时调度机制。OpenCMS使用Quartz库作为其内部的作业调度器。Quartz是一个开源的作业调度框架,能够精确地安排和执行任务。要添加一...
它不仅具备强大的功能,还支持多用户协作,允许不同权限的用户在同一非在线环境中进行团队工作,极大地提升了内容创建、编辑和管理的效率。与国内大多数采用ASP技术开发的CMS系统相比,OpenCms的跨平台特性更受青睐...