/System/Library/LaunchDaemons/com.apple.servermgrd.plist fehlt – Verursacht, dass Postgres nicht richtig startet

Ich habe kürzlich meinen Mac Mini Server auf Yosemite und die Server-App 4.0 aktualisiert. Als ich versuchte zu überprüfen, ob Postgres verfügbar ist, indem ich sudo serveradmin fullstatus postgres ausführte, erhalte ich die folgende Fehlermeldung:

postgres:error = <62706c69 73743030 d4010203 04050618 19582476 65727369 6f6e5824 6f626a65 63747359 24617263 68697665 72542474 6f701200 0186a0a4 07081112 55246e75 6c6cd409 0a0b0c0d 0e0f1056 4e53436f 64655a4e 53557365 72496e66 6f584e53 446f6d61 696e5624 636c6173 73100180 00800280 035f1014 636f6d2e 6170706c 652e7365 72766572 6d677264 d2131415 165a2463 6c617373 6e616d65 5824636c 61737365 73574e53 4572726f 72a21517 584e534f 626a6563 745f100f 4e534b65 79656441 72636869 766572d1 1a1b5472 6f6f7480 0108111a 232d3237 3c424b52 5d666d6f 7173758c 919ca5ad b0b9cbce d3000000 00000001 01000000 00000000 1c000000 00000000 00000000 00000000 d5>
postgres:errorDescription = "The operation couldn’t be completed. (com.apple.servermgrd error 1.)"
postgres:errorCode = 1

Als ich versuchte , sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.servermgrd.plist auszuführen, erhielt ich die folgende Fehlermeldung:

/System/Library/LaunchDaemons/com.apple.servermgrd.plist: Keine solche Datei oder Verzeichnis

Ich habe versucht, dasselbe in /Library/Preferences/com.apple.servermgrd.plist zu tun und habe den folgenden Fehler erhalten:

/Library/Preferences/com.apple.servermgrd.plist: Invalid or missing service identifier

Ich vermute, dass die erste Datei diejenige ist, auf die sie zugreifen möchte und die fehlt. Ich bin mir nicht sicher, was die Datei gelöscht hat. Wie kann ich diese Datei erstellen? Ich habe Websites, die den Webdienst verwenden, die ausgefallen sind.

Ich denke, wenn ich es nicht herausfinden kann, werde ich das Backup wiederherstellen, bevor ich auf meinen beiden Servern auf Yosemite aktualisiert habe. Nun ja.

Wofür benötigen Sie PostGreSQL?
Ich verwende PostgreSQL-Datenbanken in meinen Ruby on Rails-Anwendungen. Ich habe gerade meine beiden Server mit Mavericks auf das letzte Backup zurückgesetzt. Ich habe seitdem festgestellt, dass es ein weiteres Problem mit Yosemite gibt, das PostgreSQL-Datenbanken löscht oder nicht konvertiert. Ich bleibe vorerst bei Maverick auf meinen Servern, bis ich erfolgreich postgres.app oder eine andere Möglichkeit zur Installation einer anderen Installation von PostgreSQL verwende. Ich bin froh, dass ich nur einen Datensatz hatte, der nicht aktualisiert wurde, bevor ich meine Wiederherstellung durchführte.

Antworten (3)

"Ungültige oder fehlende Dienstkennung" scheint zu bedeuten, dass Ihre Plist-Datei einen Abschnitt wie "

<key>Label</key>
<string>com.foo.bar</string>

Hinweis „Label“ muss mit dem Großbuchstaben L beginnen.

Beginnend mit OS X Server Version 4.0 scheint Apple nicht zu wollen, dass wir das integrierte PostgreSQL verwenden :

Die von OS X Server verwendete Postgres-Datenbank ist nur für die Verwendung mit Dienstdaten vorgesehen, die vom System verwendet werden. Vermeiden Sie das Hinzufügen benutzerdefinierter Inhalte zu dieser Datenbank. Wenn Sie Postgres auf Ihrem OS X-Server ausführen möchten, sollten Sie Ihre eigene Instanz herunterladen und installieren.

Aber es gibt immer noch eine Möglichkeit, es zu verwenden. Verwenden Sie die folgenden Befehle im Terminal:

sudo mkdir -p /Library/Server/PostgreSQL/Config
sudo chown -R _postgres:_postgres /Library/Server/PostgreSQL
sudo -u _postgres vim /Library/Server/PostgreSQL/Config/org.postgresql.postgres.plist

dann kopieren, einfügen und speichern:

<?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>ProgramArguments</key>
    <array>
        <string>-D</string>
        <string>/Library/Server/PostgreSQL/Data</string>
        <string>-c</string>
        <string>listen_addresses=127.0.0.1,::1</string>
        <string>-c</string>
        <string>log_connections=on</string>
        <string>-c</string>
        <string>log_directory=/Library/Logs/PostgreSQL</string>
        <string>-c</string>
        <string>log_filename=PostgreSQL.log</string>
        <string>-c</string>
        <string>log_line_prefix=%t </string>
        <string>-c</string>
        <string>log_lock_waits=on</string>
        <string>-c</string>
        <string>log_statement=ddl</string>
        <string>-c</string>
        <string>logging_collector=on</string>
        <string>-c</string>
        <string>unix_socket_directories=/private/var/pgsql_socket</string>
        <string>-c</string>
        <string>unix_socket_group=_postgres</string>
        <string>-c</string>
        <string>unix_socket_permissions=0770</string>
    </array>
</dict>
</plist>

Auch bearbeiten

sudo vim /System/Library/LaunchDaemons/org.postgresql.postgres.plist

dann kopieren und einfügen:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Disabled</key>
    <true/>
    <key>Label</key>
    <string>org.postgresql.postgres</string>
    <key>UserName</key>
    <string>_postgres</string>
    <key>GroupName</key>
    <string>_postgres</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Applications/Server.app/Contents/ServerRoot/usr/bin/postgres</string>
        <string>--apple-configuration</string>
        <string>/Library/Server/PostgreSQL/Config/org.postgresql.postgres.plist</string>
    </array>
    <key>OnDemand</key>
    <false/>
    <key>StandardErrorPath</key>
    <string>/Library/Logs/PostgreSQL/PostgreSQL.log</string>
    <key>StandardOutPath</key>
    <string>/Library/Logs/PostgreSQL/PostgreSQL.log</string>
</dict>
</plist>

Zu installieren tun

sudo launchctl load -w /System/Library/LaunchDaemons/org.postgresql.postgres.plist
sudo -u _postgres psql postgres

und Postgres wird Sie mit begrüßen

psql (9.3.5)
Type "help" for help.
postgres=# 
Ich bin zu Mavericks zurückgekehrt, weil ich viel mehr Probleme mit Yosemite hatte. Zum Glück habe ich nicht viele Updates verloren. Ich werde sehen, ob ich die Server-App für irgendetwas verwenden muss. Das einzige, was ich herausfinden muss, ist, wie man eine einfache HTML5-Website hostet, ohne den Webserver in der Server-App zu verwenden. Wenn ich das herausfinden kann, werde ich es nicht verwenden und Postgres.app installieren. Da es nach einer Menge Arbeit aussieht, das eingebaute PostgreSQL zu verwenden, wenn ich auf Yosemite aktualisiere, werde ich es nicht verwenden. Ich habe diesen Link gespeichert, falls ich meine Meinung ändere. Danke für die Info.

In den neueren Versionen von Mac OS X Server (wirklich alles, was außerhalb von Server.app läuft) befindet sich die launchd-PLIST-Datei für den Server-Backend-Daemon innerhalb des Server.app-Bundles selbst und wird nicht mehr direkt von launchctl verwaltet. Wenn Sie eine Datei im alten Pfad haben, ist sie von einem früheren System übrig geblieben und nicht mehr funktionsfähig.

Ebenso ist die Datei com.apple.servermgrd.plist in den Einstellungen keine Launchd-Job-Plist und kann nicht von Launchctl geladen werden.

Der Großteil der Konfigurationsdateien in Server 4.0 und höher befindet sich in /Library/Server

Kurz nachdem ich diese Frage gepostet hatte, begann ich, Postgres.app für meine Datenbanken zu verwenden, um solche Probleme in Zukunft zu vermeiden. Der Aufbau dauerte fünf Minuten. Ich verwende den LaunchD Task Scheduler, um regelmäßige Backups mit pg_dump/pg_dumpall zu erstellen.