正如标题所说,我一直在尝试在我的OS X盒子(Mountain Lion)上设置一个gerrit(2.6.1)服务器。一切正常,但我不能让它在启动时自动启动。
理想情况下,我希望它使用plist文件作为launchd的一部分启动,但我似乎无法找到有关它的更多信息。那些可以帮助我让gerrit在启动时自动启动的专家呢?
我能够使用plist文件启动apache / mysql,所以我也确保gerrit在这些之后启动。谢谢!
答案 0 :(得分:0)
到目前为止,我能够提出的最佳解决方案就是这个,它完成了这项工作:
创建包装脚本:
/opt/gerrit2/bin/gerrit.sh start
将.command扩展名放到包装器脚本 - “start_gerrit.command”并使其可执行
在系统偏好设置中 - >用户&群组 - >登录项目,添加包装脚本。
现在,只要我登录,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$
如果有人有更好的解决方案,请分享,谢谢!
答案 1 :(得分:0)
刚刚设法在OSX Yosemite(10.10)下运行并运行。
首先,我向用户提供了ger运行gerrit,其中包含gerrit安装到/etc/gerrit2
的目录的所有权限。那,我做了$GERRIT_HOME/bin/gerrit.sh
可执行文件。在此之后,您应该能够从您想要使用$GERRIT_HOME/bin/gerrit.sh start
下运行gerrit的用户启动gerrit。
然后在系统引导期间启动它,在/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
并启动它sudo launchctl start com.gerrit.codereview
来验证launchd配置是否有效。这样做之后,gerrit应该可以通过它的web界面运行和访问。