让 FishEye+Crucible 在 Ubuntu 启动时启动

让 FishEye+Crucible 在 Ubuntu 启动时启动

我问了这个问题在 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的行。

相关内容