Configure el servidor OS X desde el script de postinstalación .pkg

Hago un .pkg-installer para un producto que amplía el servidor Apache en OS X.

Desde el script de postinstalación en el .pkg, actualmente puedo configurar la configuración predeterminada de Yosemite y El Capitan, agregando un archivo product.conf en la /etc/apache2/othercarpeta.

Para cargar la nueva configuración, simplemente hago lo siguiente desde el script de postinstalación:

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

La instalación del servidor OS X cambia la forma en que se configura Apache, por lo que el enfoque anterior falla. Entonces, ¿cómo puedo configurar OS X Server desde mi secuencia de comandos posterior a la instalación para hacer lo mismo?

¿Qué versión de Server.app y qué versión de OS X? Es probable que su secuencia de comandos se bifurque en función de SIP y también dependa de lo que significa "extender" en la práctica.
Como estoy implementando para OS X en general, me gustaría que la secuencia de comandos funcione para todas las versiones de Server.app que puedan ejecutarse en El Capitan y Yosemite. "Extender Apache" no significa nada más que cargar módulos cgi, mime y alias apache y crear Alias ​​y Scriptaliases dentro de un product.confarchivo. ¿Podría explicar qué quiere decir con "bifurcación basada en SIP"?
@bmike SIP = ¿Protección de integridad del sistema? Bifurcación = ¿Fallo?
SIP - es exactamente lo que adivinas. A nadie le gusta que lo "bifurquen", también la necesidad de codificar una verificación del sistema operativo para ver qué "bifurcación" tomar. Si es 10.10, haz esto y aquello, si es 10.11, haz otra cosa: tipo de "bifurcación".
Ah, en ese caso, espero que Apple ofrezca alguna forma de tratar con SIP de una manera fácil de usar. Mi enfoque parece funcionar para El Capitán simple, ya que pude hacer un launchctl unloadseguimiento launchctl loadsin problemas.
@bmike Con la ayuda de @grgarside, descubrí que se puede bifurcar la aplicación Server.app instalada comprobando el resultado de serverinfo -q --software. Probé y descubrí que no hay necesidad de hacer nada con SIP para agregar a la configuración del servicio de sitios web de Server.app.
Estoy muy feliz. Siéntase libre de editar su solución a mi publicación o autoresponder la pregunta. Ese george es agudo y también aprendo mucho de su ayuda.
Acabo de agregar mi código de script al final de su respuesta. Buen trabajo en equipo @bmike Espero que también pueda ayudar a otros.

Respuestas (1)

La automatización de los componentes de server.app es bastante trivial, ya que puede usarla serveradminpara hacer el trabajo pesado.

  sudo serveradmin start web;

Pedir que un servicio se inicie si ya se está ejecutando es inofensivo/idempotente.

Para bifurcarse entre Apache configurado por Server.app y el "estado normal", haga lo siguiente:

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
Gracias. Supongo que podría esperar que no necesite cargar ningún servicio, ya que esto se hace dentro del startcomando. Intentaré lo siguiente dentro de mi script: serveradmin stop webentoncesserveradmin start web
Sí, una parada probablemente sería mejor si quiere asegurarse de que se reinicie @JoachimBratteli
Copié mi archivo de configuración de /etc/apache2/other/a /Library/Server/Web/Config/apache2/other/, paré serveradminy comencé, ¡y ahora funciona! . Gracias @bmike