正如标题所说,我一直在尝试在我的 OS X 机器(Mountain Lion)上设置一个 gerrit(2.6.1)服务器。一切正常,但我无法让它在启动时自动启动。
理想情况下,我希望它作为launchd 的一部分使用plist 文件启动,但我似乎找不到太多关于它的信息。有没有专家可以帮助我让 gerrit 在启动时自动启动?
我能够使用 plist 文件启动 apache/mysql,所以我也确保 gerrit 在这些文件之后启动。谢谢!
正如标题所说,我一直在尝试在我的 OS X 机器(Mountain Lion)上设置一个 gerrit(2.6.1)服务器。一切正常,但我无法让它在启动时自动启动。
理想情况下,我希望它作为launchd 的一部分使用plist 文件启动,但我似乎找不到太多关于它的信息。有没有专家可以帮助我让 gerrit 在启动时自动启动?
我能够使用 plist 文件启动 apache/mysql,所以我也确保 gerrit 在这些文件之后启动。谢谢!
刚刚设法在 OSX Yosemite (10.10) 下启动并运行它。
首先,我为我运行 gerrit 的用户授予了我安装 gerrit 的目录的所有权限/etc/gerrit2
。那,我制作了$GERRIT_HOME/bin/gerrit.sh
可执行文件。在此之后,您应该能够从您希望运行 gerrit 的用户启动 gerrit $GERRIT_HOME/bin/gerrit.sh start
。
然后让它在系统启动期间启动,在/Library/LaunchDaemons
(我命名它)中创建一个launchd plist com.gerrit.codereview.plist
。确保它具有正确的权限sudo chown root /Library/LaunchDaemons/com.gerrit.codereview.plist
和sudo chmod -rw-r--r-- /Library/LaunchDaemons/com.gerrit.coderview.plist
.
之后,确保com.gerrit.codereview.plist
看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.gerrit.codereview</string>
<key>ProgramArguments</key>
<array>
<string>$GERRIT_HOME/bin/gerrit.sh</string>
<string>start</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>UserName</key>
<string>$USER_TO_RUN_GERRIT_WITH</string>
<key>WorkingDirectory</key>
<string>$GERRIT_HOME</string>
<key>StandardOutPath</key>
<string>$GERRIT_HOME/logs/error_log</string>
<key>StandardErrorPath</key>
<string>$GERRIT_HOME/logs/error_log</string>
<key>AbandonProcessGroup</key>
<true/>
</dict>
</plist>
将所有变量替换为与您的配置匹配的路径。如果您希望 Gerrit 以 root 身份运行,您可以完全省略 Username 键。
sudo launhctl load /Library/LaunchDaemons/com.gerrit.codereview.plist
然后通过加载并启动它来验证launchd 配置是否有效sudo launchctl start com.gerrit.codereview
。完成此操作后,gerrit 应该可以通过其 Web 界面运行和访问。
到目前为止,我能想出的最好的解决方案是这个,它可以完成这项工作:
创建一个包装脚本:
/opt/gerrit2/bin/gerrit.sh 启动
将 .command 扩展名添加到包装脚本 - “start_gerrit.command”并使其可执行
在 System Preferences -> User & Groups -> Login Items 中,添加包装脚本。
现在,只要我登录,gerrit 就会自动启动。
我真的很想使用launchd plist让它在系统启动时运行,但我无法让它工作。另外,如果我只是执行“sudo gerrit.sh start”,由于某种原因,它总是会带我进入 root 提示符,我必须“退出”:
Mac:~ me$ sudo /opt/gerrit2/bin/gerrit.sh start
Starting Gerrit Code Review: Mac:~ root#
Mac:~ root#
Mac:~ root# exit
logout
FAILED
Mac:~ me$
如果有人有更好的解决方案,请分享,谢谢!