После того, как я удалил версию 0.7.x, которая поставлялась в составе стандартных пакетов Debian, я установил версию nginx 1.4.1 из исходного кода.
Можно запустить nginx, service nginx start
и я вижу, что nginx резервирует порт 80, когда я выполняю netstat.
netstat -apn | grep nginx
выход:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3115/nginx
Проблема в том, что когда я это делаю service nginx status
или service nginx stop
получаю это сообщение:
не удалось получить доступ к PID-файлу для nginx ... ошибка!
Кто может это исправить? И как предотвратить возникновение этой проблемы?
EDIT: решение
remove nginx
- затем идите к источнику и
./configure --pid-path=/var/run/nginx.pid
make
checkinstall make install
решение1
Debian, вероятно, настроил/исправил nginx для своего пакета, чтобы поместить pid-файл в определенное место, чего он не делает по умолчанию. Когда вы заменили его чем-то, скомпилированным из исходников, это не соответствует ожиданиям инфраструктуры сервиса.
Я бы посмотрел, какие исправления и параметры конфигурации были сделаны ребятами из Debian, и перекомпилировал бы вашу версию 1.4.x с опциями, чтобы поместить pid-файл в то же место.
Как предотвратить этот тип проблем? Либо делайте что-то через пакеты, либо компилируйте из исходников, но не и то, и другое. Или знайте, что вам нужно будет проявлять особую осторожность, когда вы это делаете, так как все может сломаться.