Назад | Перейти на главную страницу

Запуск Apache 2 при загрузке в Mac OS X Server 10.6

После компиляции, установки и настройки Apache 2.2.15 на Mac OS X Server 10.6 все прошло нормально. Сервер работает нормально при запуске вручную, проблем с настройкой нет.

Затем я добавил общесистемный демон launchd (в / Library / LaunchDaemons /), загрузил его и перезагрузил. Опять же, похоже, все работает нормально.

Но Apache не запускается при загрузке из-за проблемы с mod_unique_id, я думаю. Вот запись журнала ошибок apache:

[Tue Jun 29 09:01:29 2010] [alert] (EAI 8)nodename nor servname provided, or not known: mod_unique_id: unable to find IPv4 address of "my.server.net" Configuration Failed

Мне кажется, что launchd запускает задание слишком рано в процессе загрузки, в то время как обратный поиск DNS не выполняется или не распространяется должным образом. Если я запускаю Apache вручную через ssh, он запускается без ошибок. (Сервер имеет статический IP-адрес с полным набором доменного имени.)

Вот несколько строк из моего system.log:

Jun 29 09:01:29 org.apache.httpd[88]: httpd: apr_sockaddr_info_get() failed for my.server.com
Jun 29 09:01:29 org.apache.httpd[88]: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Jun 29 09:01:29 emond[78]: SetUpLogs: uid = 0 gid = 0
Jun 29 09:01:29 emond[78]: SetUpLogs: opening /Library/Logs/EventMonitor/EventMonitor.error.log
Jun 29 09:01:29 sandboxd[100]: kadmind(54) deny network-bind 0.0.0.0:654
Jun 29 09:01:29 sandboxd[100]: kadmind(54) deny network-bind 0.0.0.0:0
Jun 29 09:01:30 loginwindow: Login Window Application Started
Jun 29 09:01:30 com.apple.launchd (org.apache.httpd): Exited with exit code: 1
Jun 29 09:01:30 configd: network configuration changed.

Журналы здесь довольно понятны, Apache запускается и не запускается прямо перед тем, как сеть настроена с действительным IP-адресом и DNS-именем. Но это непоследовательно, при другой загрузке сначала выполняется настройка сети, но проблема сохраняется.

Я попытался установить ServerName переменную в httpd.conf на IP-адрес сервера или полное доменное имя не помогло.

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

Что мне не хватает?

Вы можете указать launchd возродить демон в случае сбоя, добавив что-то вроде этого:

<key>KeepAlive</key>
<true/>

в файл launchd .plist. Примечание: убедитесь, что вы запускаете httpd с -D FOREGROUND параметр, чтобы launchd мог правильно отслеживать его состояние, т.е. вы должны запускать его следующим образом:

<key>ProgramArguments</key>
<array>
    <string>/path/to/httpd</string>
    <string>-D</string>
    <string>FOREGROUND</string>
</array>

Кроме того, вы можете изменить метку элемента (и имя файла) на что-то другое, кроме org.apache.httpd; там уже есть демон с этой меткой в ​​/ System / Library / LaunchDaemons, и я не уверен, есть ли возможность конфликта меток.