Java 当tomcat作为根目录下的服务运行时,如何作为非根目录重启/启动/停止tomcat?

Java 当tomcat作为根目录下的服务运行时,如何作为非根目录重启/启动/停止tomcat?,java,linux,tomcat,jenkins,centos6,Java,Linux,Tomcat,Jenkins,Centos6,我看过很多关于在centos/ubuntu/linux上运行tomcat的教程和技巧 我正在aws中使用centos映像运行tomcat。 我没有执行sudo yum安装tomcat7*。这将在下创建一个tomcat服务帐户,tomcat run将运行。我没有这样做的原因是因为我需要将war文件复制(scp)到webapps目录中,并且我不能作为tomcat用户直接进行scp 相反,我创建了一个带有密码的tomcat用户。 我下载了tar.gz,解压缩并将tomcat移动到/usr/share/

我看过很多关于在centos/ubuntu/linux上运行tomcat的教程和技巧

我正在aws中使用centos映像运行tomcat。 我没有执行sudo yum安装tomcat7*。这将在下创建一个tomcat服务帐户,tomcat run将运行。我没有这样做的原因是因为我需要将war文件复制(scp)到webapps目录中,并且我不能作为tomcat用户直接进行scp

相反,我创建了一个带有密码的tomcat用户。 我下载了tar.gz,解压缩并将tomcat移动到/usr/share/tomcat7

按照本文的说明,我编辑了/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页面正确地显示

现在,我将我的war插入webapps目录(作为tomcat用户)。 停止tomcat并重新启动

sudo /etc/init.d/tomcat stop
sudo /etc/init.d/tomcat start
尝试写入
catalina.out
时出现权限被拒绝错误。这是因为在centos重新启动后,
catalina.out
文件被root用户触摸,现在当我以“tomcat”用户的身份重新启动tomcat时,它没有写入该文件的权限

我更改了catalina.out的所有权(
chown-tomcat:tomcat-catalina.out)
。在这个更改之后,我看到tomcat正确地启动和记录

现在的问题是什么是正确的方法。 1) 我会让詹金斯·乔布斯将war文件复制到tomcat。因此,要重新启动服务,我需要sudo,这是詹金斯无法做到的

2) 改变catalina.out的所有权不是正确的做法。如果机器重新启动,catalina.out归tomcat所有,root无法对其进行写入。因此,root或tomcat用户拥有的catalina.out存在一些问题


谢谢你的建议

你解决了这个问题吗?没什么好运气。你需要catatlina.out吗?如果没有,您可以禁用该文件的日志记录。另外,您可以尝试使用tomcat管理器脚本进行远程部署,而不是复制war文件。