在Centos上运行tomcat的多个实例

时间:2013-11-12 15:42:39

标签: tomcat centos

在Centos 6.4上,我试图根据本教程运行多个tomcat实例: http://www.openlogic.com/wazi/bid/188102/

为了说明问题,我将默认配置复制到新实例/srv/tomcat/solr,保持相同的默认端口值(我停止默认服务/etc/init.d/tomcat6以避免端口冲突) ,如下:

sudo su -

yum install tomcat6

name=solr

mkdir -p /srv/tomcat/${name}/logs
mkdir /srv/tomcat/${name}/webapps
mkdir /srv/tomcat/${name}/work
mkdir /srv/tomcat/${name}/temp
cp -R /usr/share/tomcat6/conf/ /srv/tomcat/${name}
#rm /srv/tomcat/${name}/conf/tomcat6.conf  # this line is not in the tutorial, but adding it produces the same result
chown -R tomcat. /srv/tomcat/

ln -s /etc/init.d/tomcat6 /etc/init.d/${name}

cat >/etc/sysconfig/${name} <<EOF
CATALINA_BASE="/srv/tomcat/${name}"
CATALINA_PID="/var/run/${name}.pid"
CONNECTOR_PORT="8080"
TOMCAT_LOG="/srv/tomcat/${name}/logs/catalina.out"
EOF

# I keep the default port values at: /srv/tomcat/solr/conf/server.xml

/etc/init.d/tomcat6 stop   # to avoid port conflicts
/etc/init.d/${name} start  # i start my new instance

[root@localhost ~]# /etc/init.d/${name} start
Starting solr:                                             [  OK  ]

[root@localhost ~]# /etc/init.d/${name} status
PID file exists, but process is not running                [FAILED]

[root@localhost ~]# cat /srv/tomcat/solr/logs/catalina.out 
/usr/sbin/tomcat6: line 30: /srv/tomcat/solr/logs/catalina.out: Permission denied

可能是什么问题?

1 个答案:

答案 0 :(得分:0)

我现在正在浏览相同的教程;首先,您的catalina.out中是否有更多信息可以告诉我们哪些文件/文件得到了Permission denied消息?

基于我所看到的,看起来tomcat试图启动,创建PID文件,并且由于权限问题而意外死亡 - 从不清理PID文件。

我只能假设你已经完成了文章末尾的评论 - 例如,第三条评论解释了其中一位读者如何在/ var / log下创建/ chown新文件夹为/ var /日志/ $ {I}。

一些想法:

  1. 我看到你做了一个“chown -R tomcat。/ srv / tomcat /”...我也可以在那里添加组,比如“chown -R tomcat:tomcat / srv / tomcat /”(我不喜欢不知道那个点在用户tomcat之后做了什么 - 这是一个错字吗?)
  2. 此外,教程中的这一行似乎不正确“cp -R / usr / share / tomcat6 / conf / / srv / tomcat / $ {i}”。教程为/ usr / share / $ {i} / conf ...创建一个目录,其中应包含server.xml,tomcat-users.xml,web.xml,context.xml等文件。< / LI>
  3. 您始终可以在启动脚本中添加一些日志记录,或者在tomcat中增加日志记录级别以尝试更深入地了解问题 - 这是使用开源的一大优势。使用力量,卢克!
  4. 我对你的“ln -s”命令,“cat&gt; / etc / sysconfig / ...”和你的“/etc/init.d/${name”之间发生的事情感到有些困惑。开始“命令。我没有看到如何调用sysconfig文件(参见上面的#3)。我认为不是“ln -s”,而是需要复制,然后将bash变量放在该副本中,最后调用该副本。
  5. 如果你在/ srv / tomcat / $ {name} / webapps /下有任何战争,他们也需要拥有tomcat:tomcat。如果以root用户身份启动tomcat实例,抓住自己,然后启动为tomcat,则可能会发生错误。 webapps下的那些文件需要重新拥有。在同一条线上,我在网上看到了一些例子,人们在一场战争中投入了一个由root拥有的webapps /,然后在tomcat运行时将它chown给tomcat用户。我认为这是一种不好的做法。首先将它暴露给tomcat用户,可能在临时目录中,然后将其放入webapps /目录。