在CentOS 5上部署WWW应用心得

来源:互联网 发布:lamy2000淘宝组装 编辑:程序博客网 时间:2024/05/23 15:14

具体参考的文章,我已经粘贴至博客来了

一开始是用CentOS 5 默认的Tomcat5来实现jsp,但是在对mysql5的数据库调用上一直实现不了,

经过多次测试,还是有问题,所以,一狠心,卸载了Tomcat5,进行重新使用最新的jdk,以及部署了

Tomcat6,测试成功。

后来对Apache与Tomcat整合过程中,发现了重要的问题,在虚拟主机配置中,就是对Apache中

的httpd.conf与Tomcat的server.xml对应中,发现了如下问题:

对于httpd.conf

示意:

#Use name-based virtual hosting.
#
#NameVirtualHost *:80
NameVirtualHost *:80

<VirtualHost *:80>
   ServerAdmin webmaster@localhost
   DocumentRoot /var/www/html
   ServerName localhost
   ErrorLog logs/localhost-error_log
   CustomLog logs/localhost-access_log common
</VirtualHost>

#说明:上面这个是让Apache默认一个非任意访问的网站指向,就是非以下定义的,这个要放第一个
<VirtualHost *:80>
   ServerAdmin webmaster@njupt.org.cn
   DocumentRoot /var/www/projects/njupt.org.cn
   ServerName www.njupt.org.cn
 ServerAlias njupt.org.cn
   ErrorLog /var/www/projects/logs/njupt.org.cn-error_log
   CustomLog /var/www/projects/logs/njupt.org.cn-access_log common
</VirtualHost>

对于server.xml

要对应建立:


<Host name="www.njupt.org.cn"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->
        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
        -->
         <Context path="" docBase="/var/www/projects/njupt.org.cn" debug="0" reloadable="true"
crossContext="true"/>
        </Host>

这样的配置,就只要把网站放置在/var/www/projects/njupt.org.cn目录下,如果用下面的方法:

<Host name="www.njupt.org.cn"  appBase="/var/www/projects/njupt.org.cn"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->
        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
        -->

       <!--
         <Context path="" docBase="/var/www/projects/njupt.org.cn" debug="0" reloadable="true"
crossContext="true"/>

       -->
        </Host>

这样就需要把网站主目录放在/var/www/projects/njupt.org.cn/ROOT/ 下了

但这样有一个好处就是,在

httpd 的配置mod_jk.conf中

###### 将所有servlet 和jsp请求通过ajp13的协议送给Tomcat,让Tomcat来处理
JkMount /servlet/*  worker1
JkMount /*.jsp worker1
JkMount /*.jspx worker1
JkMount /*.do worker1

这个对分目录自身属于的/*/WEB-INF 都有效,同时,在mod_jk.conf中配置的/*.do表明,在站点所有目录下的*.do都会

被Tomcat执行,而JkMount /servlet/*  worker1 表明需要为/servlet/目录下的所有Servlet才可被Tomcat执行。

 

最后,在设置Tomcat6开机自动运行的时候,

发现按照配置,不能开机自动运行,检查配置的错误logs文件,发现了:

出现如下错误:JAVA——HOME/jre/bin/../lib/i386/client/libjvm.so: cannot restore segment prot after reloc: Permission denied
    是因为selinux阻止了你的操作,关闭selinux即可或者改为允许模式。