Статус пассажира Phusion: какое значение для пассажира_instance_registry_dir?
Я сделал новую установку nginx 1.6.3 и пассажира 5.0.15 на Ubuntu 14.04 из источника, чтобы добавить компоненты трассировки из AppNeta для моего приложения ROR 4.2 на одном из моих серверов. Nginx и пассажир работают и обслуживают страницы. Я получаю данные трассировки для мониторинга сервера. Все кажется хорошо,
Однако, когда я запускаю "статус пассажира" (как root), я получаю следующее:
ОШИБКА: Phusion Passenger, похоже, не работает. Если вы уверены, что он запущен, причины этой проблемы могут быть следующими:
- Вы настроили каталог реестра экземпляра, используя параметр Apache PassengerInstanceRegistryDir, параметр Nginx passenger_instance_registry_dir или необязательный аргумент командной строки для параметра "Необязательный журнал". Если это так, установите переменную окружения PASSENGER_INSTANCE_REGISTRY_DIR в этот каталог и снова запустите статус пассажира.
- Каталог экземпляра удален операционной системой. Укажите другой каталог реестра экземпляра, используя параметр Apache PassengerInstanceRegistryDir, параметр Nginx пассажир_инстамент_регистр_дир, или параметр командной строки Phusion Passenger Standalone --instance-registry-dir.
Проблема заключается в том, что, похоже, это блокирование развертываний capistrano; эта же ошибка отображается cap перед выходом.
Пассажир работает (он находится на выходе ps
и страницы обслуживаются). Мне просто нужно сообщить статус пассажира, где можно найти текущий исполняемый экземпляр. (Это из документации Дизайн и архитектура). Поэтому представляется, что установка этого значения реестра реестра экземпляра является необходимым шагом. Но к какому значению?
В соответствии с ссылкой Nginx значения по умолчанию /tmp
и /var/run/passenger-instreg
И я нашел каталог экземпляра в /tmp. Итак, я попытался установить PASSENGER_INSTANCE_REGISTRY_DIR на несколько разных значений:
- /TMP
- /tmp/passenger.JxmCeiA(текущий каталог экземпляра, но это изменяется при каждом запуске Nginx)
Я даже попытался создать каталог/run/пассажир, установив это значение в файле конфигурации nginx и перезапустив nginx. Создается временная директория, но статус пассажира все равно дает одно и то же сообщение. Даже если я использую /opt/passenger -5.0.15/bin/passenger-status script, чтобы убедиться, что использую последнюю версию этого script.
В исходном каталоге location.ini для пассажира есть некоторые значения конфигурации, но ни один из них не был каталогом реестра экземпляра, поэтому повторного использования нечего.
Интересно, что файл /opt/passenger -5.0.15/lib/phusion_passenger/nginx/config_options.rb не имеет записи для параметра__диски__диски__диска. У него есть другие параметры конфигурации nginx, я бы ожидал, что он тоже будет таким.
Я попытался установить переменную окружения, а также параметр Nginx passenger_instance_registry_dir
, но я должен упустить что-то в своем понимании, потому что я не могу подключить команду passenger-status
к текущему запущенному экземпляру.
Любая помощь будет принята с благодарностью.
Ответы
Ответ 1
Здесь автор пассажира.
/tmp/passenger.JxmCeiA
- пример каталога экземпляра. Это действительно меняется при каждом запуске (потому что он специфичен для экземпляра).
Родительский каталог (каталог, в котором расположены каталоги экземпляров) - это каталог реестра. Таким образом, в вашем случае используется каталог реестра экземпляра, который используется /tmp.
Я предполагаю, что у вас есть некоторая несоответствие версии установки для Passenger. Мы несколько раз меняли структуру каталога экземпляров, и каждый раз, когда мы это делали, мы вызывали внутренний номер версии, чтобы указать, что он несовместим с предыдущими версиями Passenger. Можете ли вы дважды проверить следующее?
- Кажется ли, что пассажир работает корректно?
- Что версия Passenger скомпилирована внутри Nginx?
- В чем ваш
passenger_root
установлен? Соответствует ли это версии Passenger, скомпилированной внутри Nginx?
- Где полный путь к первому
passenger-status
в PATH? Соответствует ли это passenger_root
?
Кажется, что вы смешиваете репозиторий APU Phusion Passenger с установкой исходного tarball. Наличие нескольких установок вокруг - это, как правило, плохая идея. Попробуйте очистить свои другие установки, чтобы вы только закончили с ним.
Также проверьте правильность установки переменной среды PASSENGER_INSTANCE_REGISTRY_DIR
. Обратите внимание, что sudo nukes переменные окружения, поэтому вам нужно запустить статус пассажира следующим образом:
# Correct:
sudo env PASSENGER_INSTANCE_REGISTRY_DIR=/tmp passenger-status
# Incorrect, sudo nukes environment variables
export PASSENGER_INSTANCE_REGISTRY_DIR=/tmp
sudo passenger-status
Что касается lib/phusion_passenger/nginx/config_options.rb: этот файл содержит в основном списки параметров для каждого сервера и каждого местоположения. Многие параметры конфигурации в основном контексте либо еще не перенесены в систему config_options.rb
, либо не возможны, поскольку они требуют особого внимания. В настоящее время PASSENGER_INSTANCE_REGISTRY_DIR
реализуется в ext/common/nginx/Configuration.c. По мере того, как мы продолжаем очистку и рефакторинг кода, эта опция может быть в конечном итоге перенесена на config_options.rb
.
Ответ 2
шаг один проверить, что пассажир phusion установлен правильно
sudo passenger-config validate-install
", если вы видите вывод, который гласит:" Все выглядит хорошо:-) ", тогда вы в порядке, если вам не нужно переустанавливать phusion-пассажира, обратитесь к https://www.phusionpassenger.com/library/walkthroughs/start/
шаг два проверяет статус памяти фьюжн-пассажиров
sudo passenger-memory-stats
", если вы видите запущенные процессы, тогда это хорошо, если вам не нужно запускать какое-либо приложение для пассажиров или установить nginx или apache с дополнительной библиотекой для них. Для nginx вам нужны nginx и nginx-extras".
Шаг 3 раскомментирует пассажир_роут в файле nginx.conf(для ubuntu обычно он /etc/nginx/nginx.conf) или файл apache.conf
перезапустить nginx или apache
sudo service nginx restart # (or systemctl restart nginx, for new version of linux such as ubuntu 15.04, CentOS7)
теперь вы можете запускать
passenger-status
ошибка должна исчезнуть сейчас. В основном вероятный вывод, который вы получите, говорит: "Phusion Passenger в настоящее время не обслуживает никаких приложений".
Ответ 3
Если кто-то еще сталкивается с этой проблемой при запуске Passenger с помощью службы systemd, это может быть связано с системным private /tmp
. Проблема была решена путем добавления PrivateTmp=false
в служебный файл.
Источник