我问了这个问题在 Atlassian但我认为 serverfault 可能更合适,因为它更多的是一个系统管理员问题,而不是 Atlassian 问题:
我一直在尝试跟随本指南让 FishEye+Crucible 在启动时启动。JIRA 已在 Ubuntu 上安装并在启动时以其自己的用户 (jira) 运行,但我无法让 Fisheye+Crucible (又名 fecru) 执行相同的操作。
我按照那里的说明(以及页面评论中的 Ubuntu 相关说明)重新启动,JIRA 照常自行启动,但 fecru 没有。这是否与我设置为“jira”的 RUN_AS 变量有关?该命令会在启动时运行而不会提示用户“jira”输入密码吗?我认为它不会提示,因为程序 JIRA 在启动时以该用户的身份正常启动……
使用:
Ubuntu 10.04 Lucid
Jira 5.0
坩埚+鱼眼 2.7.11
答案1
由于这个问题再次出现,并且由于主要发行版转向 systemd,答案已经过时,我将为 JIRA 添加我的 systemd 服务定义:
/etc/systemd/system/jira.service
[Unit]
Description=Atlassian JIRA
After=syslog.target network.target
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/jira
ExecStart=/path/to/jira/bin/startup.sh
ExecStop=/path/to/jira/bin/shutdown.sh
PIDFile=/path/to/jira/work/catalina.pid
SuccessExitStatus=143
User=jira
Group=jira
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
/etc/sysconfig/jira
# Name of the user to run as
USER=jira
# Location of application's bin directory
CATALINA_HOME=/path/to/jira
# Location of Java JDK
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
替换/path/to/jira
为您的应用程序目录。
对于其他 Atlassian 工具来说,基本上是相同的,只是启动脚本和 PID 文件位置略有不同:
合流
$appdir/bin/startup.sh
$appdir/bin/shutdown.sh
$appdir/work/catalina.pid
鱼眼
$appdir/bin/start.sh
$appdir/bin/stop.sh
竹子
$appdir/bin/start-bamboo.sh
$appdir/bin/stop-bamboo.sh
人群
$appdir/bin/startup.sh
$appdir/bin/shutdown.sh
$appdir/apache-tomcat/work/catalina.pid
鱼眼尚不支持 PID 文件,因此目前需要使用该问题的解决方法并在命令fisheyectl.sh
后添加此行nohop
:
echo $! > $FISHEYE_INST/var/fisheye.pid
对于 Bamboo,必须通过CATALINA_PID
变量明确定义 PID 文件(请参阅$appdir/bin/catalina.sh
)。我还没有测试过,但应该可以在EnvironmentFile
文件中设置此变量。
创建服务定义后:
# start JIRA
sudo systemctl start jira
# enable automatic start on boot
sudo systemctl enable jira
答案2
我使用的初始化脚本的相关部分:
case "$1" in
start)
sudo -u fisheye /path/to/fisheye/startf.sh
stop)
sudo -u fisheye /path/to/fisheye/stopf.sh
;;
*)
echo "Usage: $0 start|stop" >&2
exit 3
;;
esac
startf.sh的内容:
source /home/fisheye/.profile
$FISHEYE_HOME/bin/start.sh
stopf.sh:
source /home/fisheye/.profile
$FISHEYE_HOME/bin/stop.sh
.profile相关内容:
export JAVA_HOME=/path/to/java/
export FISHEYE_OPTS="-Xms512m -Xmx4800m -XX:MaxPermSize=512m"
export FISHEYE_HOME=/home/fisheye/fecru-x.x.x
export FISHEYE_INST=/home/fisheye/inst-example
当然,我可以在 fisheye 提供的启动和停止脚本中添加源 .profile 语句,但这意味着升级后必须再次编辑它。我尝试尽可能保持 fisheye 文件不变。
答案3
我意识到这是一个老话题,但我无法找到答案,因此这里是:
编辑 fisheyectl.sh 并更改nohup sh -c "exec $CMD" >> $FISHEYE_INST/var/log/fisheye.out 2>&1 &
为不使用 nohup(因为 upstart 希望它在前台运行:
#echo "Starting FishEye/Crucible... Output redirected to $FISHEYE_INST/var/log/fisheye.out"
#nohup sh -c "exec $CMD" >> $FISHEYE_INST/var/log/fisheye.out 2>&1 &
sh -c "exec $CMD"
创建您的 /etc/init/fisheye.conf 文件(我将其命名为 crusible,但这并不重要):
# Crucible Upstart
#
# Required-Start:
# Required-Stop:
description "Crucible Server"
start on runlevel [2345]
stop on runlevel [!2345]
setuid crucible
setgid crucible
env FISHEYE_HOME="/home/crucible/crucible"
env FISHEYE_INST="/home/crucible/crucible-datastore"
# Give up if restart occurs 10 times in 30 seconds.
respawn limit 10 30
# keep it running in foreground to let upstart manage it
exec ~crucible/crucible/bin/start.sh
respawn
注意,您可能需要根据您运行它的用户来更改 setuid 和 setgid。您可能还需要更改路径env
的行。