我已经看过很多关于在centos / ubuntu / linux上运行tomcat的教程和技巧。
我在aws中使用centos image来运行tomcat。
我没做sudo yum install tomcat7*
。这将创建一个tomcat服务帐户,将运行tomcat run。我没有这样做的原因是因为我需要将war文件复制(scp)到webapps目录中,我不能直接scp为tomcat用户。
相反,我创建了一个带密码的tomcat用户。 我下载了tar.gz,解压缩并将tomcat移动到/ usr / share / tomcat7。
按照blog的说明,我编辑了/etc/rc.d/init.d/tomcat,如下所示。
!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 96 14
# description: The Apache Tomcat servlet/JSP container.
JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79.x86_64
CATALINA_HOME=/usr/share/tomcat7
export JAVA_HOME CATALINA_HOME
exec $CATALINA_HOME/bin/catalina.sh $*
然后我执行了以下命令
sudo chmod 755 /etc/rc.d/init.d/tomcat
sudo chkconfig --level 2345 tomcat on
我重新启动了计算机,并在启动时由root用户激活了tomcat。
我还可以看到tomcat页面显示corectly。
现在,我把我的战争变成了webapps目录(作为tomcat用户)。 停止了tomcat并重新启动
sudo /etc/init.d/tomcat stop
sudo /etc/init.d/tomcat start
尝试写入catalina.out
时,我收到权限被拒绝错误。这是因为在centos重启后root会触及catalina.out
文件,现在当我重新启动tomcat为“tomcat”用户时,它没有写入权限。
我更改了catalina.out(chown tomcat:tomcat catalina.out)
的所有权。更改后,我看到tomcat启动并正确记录。
现在问题是什么是正确的方法。 1)我将jenkins工作复制war文件到tomcat。所以要重新启动服务,我需要sudo,我不能从jenkins那里。
2)改变catalina.out的所有权是不对的。如果机器重新启动,catalina.out由tomcat拥有,root无法写入。所以这个catalina.out存在root或tomcat用户拥有的问题。
感谢您的建议