Bos*_*osh 2 scripting tomcat shell upstart
我正在尝试设置 Tomcat 以从新贵开始。我发现以下作品:
description "Tomcat Server"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
respawn limit 10 5
setuid tomcat
env JAVA_HOME=/usr/lib/jvm/default-java
env CATALINA_HOME=/opt/apache-tomcat-7.0.34
script
chdir $CATALINA_HOME
exec $CATALINA_HOME/bin/catalina.sh run
end script
Run Code Online (Sandbox Code Playgroud)
但是如果我删除chdir
,tomcat 会启动,但是FileNotFound
当我.wars
加载时有很多例外。(也就是说:.wars
它们自己确实加载了但它们在加载时抛出异常。)
请注意,此行为与我从命令行调用时所看到的不同catalina.sh
。从命令行调用,我可以/opt/apache-tomcat-7.0.34/bin/catalina.sh run
从任何目录(没有 chdiring)运行,一切都很好。
那么为什么chdir
在我的新贵脚本中是必要的呢? (新贵环境与我的命令行环境有何不同?)
我不使用 chdir 时看到的错误示例:
Feb 22, 2013 3:00:11 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive my-war.war
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: my-war.log (Permission denied)
at java.io.FileOutputStream.open(Native Method)
Run Code Online (Sandbox Code Playgroud)
这是一个写权限问题。不允许用户 tomcat 将日志文件创建到它试图创建它们的位置。它尝试创建日志文件的位置因您启动 tomcat 的方式而异。
你日志中的这篇文章引起了我的注意:
java.io.FileNotFoundException: my-war.log (Permission denied) at java.io.FileOutputStream.open(Native Method)
它表示不允许用户 (tomcat) 创建文件 my-war.log。以下是不同的场景:
chdir 新贵
新贵先把 chdirs 改成 $CATALINA_HOME。允许用户 tomcat 在那里创建文件。所以一切正常。
没有 chdir 的新贵
Upstart 以 root 身份运行,因此默认目录为 /。不允许用户 tomcat 在那里创建文件。所以你会得到权限被拒绝的错误。
从您的主目录运行 tomcat
现在你从你的主目录中以自己的身份运行 tomcat。您对自己的目录有写权限。所以一切都恢复了。
归档时间: |
|
查看次数: |
3005 次 |
最近记录: |