/System/Library/LaunchDaemons/com.apple.servermgrd.plist отсутствует - из-за неправильного запуска postgres

6

Я недавно обновил свой Mac Mini Server до Yosemite и серверного приложения 4.0. Когда я попытался проверить доступность Postgres, выполнив sudo serveradmin fullstatus postgres, я получил следующую ошибку:

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

Когда я попытался выполнить команду sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.servermgrd.plist, я получил следующую ошибку:

/System/Library/LaunchDaemons/com.apple.servermgrd.plist: нет такого файла или каталога

Я попытался сделать то же самое в /Library/Preferences/com.apple.servermgrd.plist и получил следующую ошибку:

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

Я предполагаю, что первый файл, к которому он пытается получить доступ, отсутствует. Я не уверен, что удалил файл. Как я могу создать этот файл? У меня есть сайты, использующие веб-сервис, которые не работают.

Я думаю, что если я не смогу это выяснить, я восстановлю резервную копию прямо перед обновлением до Yosemite на обоих моих серверах. Ну что ж.

Памела Кук - LightBe Corp
источник
Для чего вам нужен PostGreSQL?
Кланомат
Я использую базы данных PostgreSQL в моих приложениях Ruby on Rails. Я только что восстановил оба моих сервера до последней резервной копии, используя Mavericks. С тех пор я обнаружил, что есть другая проблема с удалением или не преобразованием баз данных PostgreSQL Yosemite. Пока я использую Maverick на своих серверах, пока не смогу успешно использовать postgres.app или другой способ установки другой установки PostgreSQL. Рад, что у меня была только одна запись, которая не была обновлена ​​до моего восстановления.
Памела Кук - LightBe Corp

Ответы:

8

«Неверный или отсутствующий сервисный идентификатор», по-видимому, означает, что в вашем файле plist нет или неправильно написан раздел

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

Примечание «Метка» должна начинаться с заглавной буквы L.

Тим БЛ
источник
1

Начиная с версии OS X Server 4.0 кажется, что Apple не хочет, чтобы мы использовали встроенный PostgreSQL :

База данных Postgres, используемая сервером OS X, предназначена только для использования с служебными данными, используемыми системой. Избегайте добавления пользовательского контента в эту базу данных. Если вы хотите запустить Postgres на вашем OS X Server, вы должны загрузить и установить свой собственный экземпляр.

Но есть все еще способ использовать это. Используйте следующие команды в терминале:

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

затем скопируйте, вставьте и сохраните это:

<?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>

Также отредактируйте

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

затем скопируйте и вставьте это:

<?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>

Для установки сделать

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

и Postgres будет приветствовать вас

psql (9.3.5)
Type "help" for help.
postgres=# 
conscell
источник
Я вернулся в Маверикс, потому что у меня было больше проблем с Йосемити. К счастью, я не потерял много обновлений. Я посмотрю, нужно ли мне использовать приложение Server для чего-либо. Единственное, что мне нужно выяснить, это как разместить простой сайт html5 без использования веб-сервера в приложении «Сервер». Если я смогу это понять, я не буду использовать его и установить Postgres.app. Так как при обновлении до Yosemite использование встроенного postgreSQL выглядит как большая работа, я не буду его использовать. Я сохранил эту ссылку на случай, если передумаю. Спасибо за информацию.
Памела Кук - Корпорация LightBe
0

В более поздних версиях Mac OS X Server (на самом деле все, что работает вне Server.app), файл launchd plist для демона серверного бэкэнда находится внутри самого пакета Server.app и больше не управляется напрямую launchctl. Если у вас есть файл по старому пути, он будет перенесен из более ранней системы и больше не будет работать.

Аналогично, файл com.apple.servermgrd.plist в настройках не является списком запущенных заданий и не может быть загружен launchctl.

Основная часть файлов конфигурации в Server 4.0 и более поздних версиях находится в / Library / Server

Леланд Уоллес
источник
Я начал использовать Postgres.app для своих баз данных вскоре после того, как опубликовал этот вопрос, чтобы избежать подобных проблем в будущем. Это заняло пять минут. Я использую LaunchD Task Scheduler для создания регулярных резервных копий, используя pg_dump / pg_dumpall.
Памела Кук - LightBe Corp