Ich verwende OS X als Server und führe Server.app 4.0 aus, um E-Mail-Hosting usw. bereitzustellen.
An diesen Computer ist ein PROMISE Pegasus R2 RAID-Laufwerk angeschlossen, das unter installiert ist /Volumes/RAID6-11TB
, und ich habe den Standardspeicherort für den Dienst so geändert, dass sich die Server.app-Daten auf dem RAID-Laufwerk befinden (aus Redundanzgründen und damit Backblaze meine wertvollen E-Mails sichern kann). , die normalerweise ) ignoriert /Library
).
Das Problem besteht darin, dass beim Neustart des Computers Server.app nicht ordnungsgemäß gestartet wird, da während des Startvorgangs ein leeres Verzeichnis erstellt /Volumes/RAID6-11TB/Library/Server/Web/Data/Sites/Default/NetBoot
wird . Wenn das RAID-Array später automatisch gemountet wird, ist sein Standard-Mountpoint bereits vorhanden, sodass er stattdessen unter gemountet wird /Volumes/RAID6-11TV 1
, was überhaupt nichts bringt.
Gibt es eine Möglichkeit, den Neustart so zu beheben, dass entweder:
Server.app
wird nicht gestartet, bis die RAID-Festplatte bereit ist, oderIn Bezug auf (1) habe ich bearbeitet, um einen QueueDirectories-/Library/LaunchDaemons/com.apple.serverd.plist
Schlüssel hinzuzufügen , aber das scheint keine Wirkung zu haben, und WatchPaths klingt, als hätte es die falsche Semantik, also bin ich misstrauisch, das überhaupt zu versuchen.
In Bezug auf (2), wenn ich im Einzelbenutzermodus boote ( Command+S
während des Bootvorgangs gedrückt halte), dann warte , bis alle Meldungen abgeschlossen sind, und dann drücke, Ctrl+D
um den Bootvorgang fortzusetzen, /Volumes/RAID6-11TB
wird wie beabsichtigt ordnungsgemäß gemountet.
Dies hilft jedoch nicht bei automatisierten Neustarts, wenn ich unterwegs bin (zB nach Stromausfällen). (OK, die "richtige" Antwort ist Batteriesicherung, damit die Maschine nicht neu startet, aber lassen Sie uns das vorerst ignorieren ...)
Gibt es eine Möglichkeit, dies zum Laufen zu bringen?
Es ist Server.app, das diesen mysteriösen Ordner erstellt, der Ihre Werke verklebt.
Verhindern Sie, dass die Server.app gestartet wird, wenn der Server hochfährt, und dann können Sie einen Cronjob erstellen , der sie über ein .sh-Skript startet .
Skript sollte nur so etwas wie sein
#!/bin/bash
/Applications/Server.app
und wie die Person in dem einen Link sagte, wäre der Cronjob-Eintrag so etwas wie
@reboot sleep 60 && my_script.sh
Das sollte Ihrem RAID genug Zeit geben, um richtig zu mounten, bevor Server.app erscheint und diesen Ordner erstellt.
Ich habe den Unterschied mit @zomgdavidbowie aufgeteilt: Ich habe ein neues Skript erstellt /usr/local/bin/start-server-app
:
#!/bin/sh
sleep 120
exec /Library/PrivilegedHelperTools/com.apple.serverd
Ich habe dann /Library/LaunchDaemons/com.apple.serverd.plist
alle Instanzen von bearbeitet und /Library/PrivilegedHelperTools/com.apple.serverd
durch ersetzt /usr/local/bin/start-server-app
:
<?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.apple.serverd</string>
<key>MachServices</key>
<dict>
<key>com.apple.serverd</key>
<true/>
</dict>
<key>OnDemand</key>
<false/>
<key>Program</key>
<string>/Library/PrivilegedHelperTools/com.apple.serverd</string>
<key>ProgramArguments</key>
<array>
<string>/Library/PrivilegedHelperTools/com.apple.serverd</string>
</array>
</dict>
</plist>
Dadurch kann ich beim standardmäßigen Startmechanismus bleiben, ohne in cron (8) einzutauchen, während ich den com.apple.serverd
Aufruf immer noch verzögere, bis das externe Laufwerk gemountet wurde.
Wie wäre es damit, anstatt nur zu warten, Folgendes zu tun:
#!/bin/sh
if [[ ! -e /Volumes/<volname ]]; then
sleep 60
else
exec /Library/PrivilegedHelperTools/com.apple.serverd
fi
exit 0
Dies sollte prüfen, ob Ihr Volume vorhanden ist, wenn nein, warten Sie 60 Sekunden, wenn ja, starten Sie die Server-App.
sleep
würde die sowieso getroffen werden .../Library/LaunchDaemons/com.apple.serverd.plist
überschrieben wird, wenn Sever.app aktualisiert wird?Server.app
es aktualisiert wird. Bewahren Sie eine Sicherungskopie auf, damit Sie sie problemlos ersetzen können, wenn Server.app aktualisiert wird.
klanomath
Jonp
Server.app
, daher bin ich mir nicht sicher, warum es überhaupt versucht, dieses Verzeichnis zu erstellen ...