通过.pkg安装后脚本配置OS X Server


2

我为扩展OS X中的Apache服务器的产品制作了.pkg安装程序。

通过.pkg中的postinstall脚本,当前我可以通过在/etc/apache2/other文件夹中添加product.conf文件来配置Yosemite和El Capitan的默认设置。

要加载新配置,我只需在安装后脚本中执行以下操作:

launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist #if not loaded
apachectl stop #if already started
apachectl start

安装OS X Server会更改Apache的配置方式,因此上述方法将失败。因此,如何从安装后脚本中配置OS X Server以执行相同操作?


什么版本的Server.app和什么版本的OS X?您的脚本可能会基于SIP派生,并且还取决于实践中“扩展”的含义?
bmike

通常,在我为OS X进行部署时,我希望该脚本能够在可在El Capitan和Yosemite上运行的所有版本的Server.app中运行。“扩展Apache”除了加载cgi,mime和别名apache模块并在product.conf文件中创建别名和Scriptaliases之外,没有其他含义。您能否解释“基于SIP的叉子”的含义?
约阿希姆·布拉特利

@bmike SIP =系统完整性保护?前叉=失败?
Joachim Bratteli,2015年

SIP-正是您所猜测的。没有人喜欢被“分叉”-也需要对操作系统检查进行编码以查看要采取的“分叉”。如果是10.10,则执行此操作;如果是10.11,则执行其他操作-类型的“叉子”。
bmike

嗯,在那种情况下,我希望苹果提供一种以用户友好的方式处理SIP的方法。我的做法似乎为纯埃尔卡皮坦工作,因为我能够做launchctl unload的,随后launchctl load没有问题。
约阿希姆·布拉特利

Answers:


1

server.app组件的自动化非常简单,因为您可以serveradmin用来完成繁重的工作。

  sudo serveradmin start web;

要求服务启动是否已经运行是无害的/幂等的。

要在由Server.app配置的Apache和“正常状态”之间进行派生,请执行以下操作:

if serverinfo -q --software; then
   cp product.conf /Library/Server/Web/Config/apache2/other
   serveradmin stop web
   serveradmin start web
else
   cp product.conf /etc/apache2/other
   launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
   apachectl stop #if already started
   apachectl start
fi

谢谢。我猜想我不需要加载任何服务,因为这是在start命令中完成的?我将在脚本中尝试以下操作:serveradmin stop web然后serveradmin start web
Joachim Bratteli,2015年

1
是的-如果您要确保重新启动@JoachimBratteli
bmike,

1
我将配置文件从复制/etc/apache2/other//Library/Server/Web/Config/apache2/other/serveradmin停止并开始运行,现在就可以了!。感谢@bmike
Joachim Bratteli
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.