Запуск 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-адреса сервера или FQDN не помогла.
Я немного растерялся, поэтому я пришел сюда. Многие поиски в сети мне тоже не помогли.
Что мне не хватает?
1 ответ
Вы можете сказать 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, и я не уверен, существует ли вероятность конфликта ярлыков.