Ubuntu init.d 配置在启动时未启动 Gerrit 2.11.4

Ubuntu init.d 配置在启动时未启动 Gerrit 2.11.4

我遵循了 Gerrit 的安装说明。

根据说明,我的 gerrit.sh 更新是取消注释以下 3 行:

# ========================
chkconfig: 3 99 99
description: Gerrit Code Review
processname: gerrit
# ========================

问题 1:有人明白这三行在语法上的作用吗?在其他地方有人说这些是针对 redhat 的,所以可能对 Ubuntu 没有任何作用,而且我在 apt-get 列表中没有找到它们。取消注释这些后,我在手动启动 gerrit 时收到以下错误:

gerrit2@ubuntu:~$ ./bin/gerrit.sh start
./bin/gerrit.sh: 7: ./bin/gerrit.sh: chkconfig:: not found
./bin/gerrit.sh: 8: ./bin/gerrit.sh: description:: not found
./bin/gerrit.sh: 9: ./bin/gerrit.sh: processname:: not found
Starting Gerrit Code Review: OK

我的符号链接,按照说明:

gerrit2@ubuntu:~/bin$ ll /etc/init.d/gerrit 
lrwxrwxrwx 1 root root 27 Jan 14 17:16 /etc/init.d/gerrit -> /home/gerrit2/bin/gerrit.sh*

gerrit2@ubuntu:~$ ll /etc/rc2.d/S99gerrit 
lrwxrwxrwx 1 root root 18 Jan 14 10:43 /etc/rc2.d/S99gerrit -> /etc/init.d/gerrit*

我的运行级别为 gerrit2 用户,这就是我将上述链接放在 rc2.d 而不是 rc3.d 中的原因(与说明不同):

gerrit2@ubuntu:/etc/rc3.d$ who -r
 run-level 2  2016-01-14 17:13

/home/gerrit2 用户已根据 Google 说明设置了 GERRIT_SITE,因此我添加了其他一些操作指南网站上看到的 /etc/default/gerritcodereview,以防它对 init.d 有帮助,但事实并非如此:

cat /etc/default/gerritcodereview 
GERRIT_SITE=/home/gerrit2

问题 2:您知道我在这里做错了什么吗?

笔记:

我还尝试了 rc.3 与 rc.2。Gerrit 可以运行,今天能够推送几 GB 的源代码。当给出“start”作为参数时,Gerrit 也会从 /etc/init.d/gerrit 启动。init.d 应该负责传入 rc.d start/stop 类型的参数。Ubuntu 14.04 LTS Gerrit 2.11.4 service --status-all 将 gerrit 列为未运行的“-”而不是“+”

答案1

使用 Ubuntu 时,请忽略 google 的指示,取消注释 gerrit.sh 中的 3 行。而是遵循 StephenKing 在 stackexchange 上发布的建议,替换:

# Required-Start: $named $remote $syslog

# Required-Start: $all

然后运行:

sudo update-rc.d -f gerrit remove
sudo update-rc.d gerrit defaults 92

谢谢 StephenKing!我在其他地方读到的 Ubuntu 特定说明都没有提到这一点。所以肯定有一堆手动初始化的 gerrit repo。

答案2

对于仍在寻找解决方案的人。我们可以使用以下步骤运行 sysmtemd 脚本

$> echo "GERRIT_SITE=/home/gerrit/gerrit-server" > /etc/default/gerritcodereview
$> sudo systemctl edit --force --full gerrit-code
    [Unit] 
        Description= Gerrit Code Review Service
        After=network.target
    
    [Service]
        Type=forking
        User=gerrit
        EnvironmentFile=/etc/default/gerritcodereview
        StandardOutput=syslog
        StandardError=syslog
        SyslogIdentifier=gerrit
        ExecStart=/home/gerrit/gerrit-server/bin/gerrit.sh start
        ExecStop=/home/gerrit/gerrit-server/bin/gerrit.sh stop
    
    [Install]
        WantedBy=default.target

然后启用并启动它

$> sudo systemctl enable gerrit-code
$> sudo systemctl start gerrit-code
$> sudo systemctl status gerrit-code

相关内容