Статус пассажира 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 в служебный файл.

Источник