烦恼岁月

付出总是有回报的 take action follow your heart , or follow your head
posts - 40, comments - 5, trackbacks - 0, articles - 4

opencms中多站点的配置

Posted on 2007-11-13 13:00 不需要解释 阅读(2718) 评论(3)  编辑  收藏 所属分类: opencms
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是怎么分别管理静态,动态资源的,我还不大明白,是不是我的配置中有什么不妥的地方,请大家多多指教!

Feedback

# re: opencms中多站点的配置[未登录]  回复  更多评论   

2009-11-08 00:26 by Bruce
非常感谢你的文章。

我按照这份文档配置完成后,为什么不能预览?

预览提示不能找到该页面?

# re: opencms中多站点的配置  回复  更多评论   

2010-08-01 15:57 by PHPer
这样的配置是错误的:
<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>
应该是:
<rfs-prefix>${CONTEXT_NAME}/export</rfs-prefix>
<vfs-prefix>${CONTEXT_NAME}</vfs-prefix>
<userelativelinks>false</userelativelinks>
<exporturl>http://127.0.0.1:8081${CONTEXT_NAME}/handle404</exporturl>

# re: opencms中多站点的配置  回复  更多评论   

2010-08-01 15:57 by PHPer
或者你看看这里:
http://www.bng-galiza.org/opencms/opencms/alkacon-documentation/howto_apache_httpd/mod_proxy.html

只有注册用户登录后才能发表评论。


网站导航:
 
我实话告诉你们,我可是身经百战了.bbs我见的多了,哪个版我没灌过?你们要知道, 一塌糊 涂的triangle,PIC,SEX版,那比你们不知道厉害到哪里去了,我在那谈笑风声.你 们有一好就是无论在哪个版,什么话题都灌,但是灌来灌去的问题,都too simple, sometimes naive!你 们懂不懂呀?啊?所以说灌水啊,关键是要提高自己的知识水平.你 们啊,不要总想着弄个大坑,然后灌上十大,再把我羞辱一番……你们啊,naive!你们这 样灌是不行地!~那你問我支持 不支持灌水,我說支持,我常來這裡灌,你說支持不支持?