Подтвердить что ты не робот

Phusion Passenger (для чайников!)

Я опытный разработчик LAMP, перемещающийся в Rails. У меня очень глупый вопрос: что, черт возьми, делает Phusion Passenger?

Я прочитал много документации, я googled, я читал Википедию, я читал "Переполнение стека". Я даже установил его и получил его на машине разработки (с Apache). Я все еще не знаю, что это на самом деле делает.

Вот одна догадка: мне кажется странным, что корень документа Apache указывает на /mywebapp/public/ вместо /mywebapp/, поэтому я предполагаю, что он имеет отношение к тому, чтобы сделать все внутри /mywebapp/ доступным. (Это дикое предположение, хотя, основываясь на том факте, что я не знаю, как еще к этому материалу попадают.)

Я понял, что Пассажир революционный, новаторский и т.д. и т.д., но что он делает??

Извините за вопрос n00b, все. Спасибо!

4b9b3361

Ответ 1

Пассажир - это система для подготовки и запуска экземпляров Ruby для использования с приложениями на базе Rack, такими как Ruby on Rails. Apache и nginx, обе поддерживаемые платформы веб-серверов, не могут запускать Ruby, как они могут PHP, Perl или Python, потому что нет встроенного в Ruby модуля, который работает так же хорошо, как это делают. Это означает, что Ruby имеет тенденцию работать как независимая группа процессов, которым веб-сервер должен будет направлять трафик через.

Rails имеет тенденцию работать как постоянный процесс, потому что время запуска для всего пакета является значительным. Пассажир запускает новые экземпляры, поскольку они необходимы, и уничтожит те, которые больше не требуются. Вы можете увидеть это в списке процессов, поскольку они четко идентифицированы с префиксами "Пассажир" и "Rails".

Одна из особенностей Passenger заключается в повторном использовании части Rails-стека, чтобы быстрее создавать дополнительные процессы, клонируя один экземпляр вместо того, чтобы откручивать новый с нуля. Загрузчик написан на С++ и позволяет правильно настраивать и запускать каждый процесс Ruby максимально эффективно, а также помогает экономить память, делясь ею между различными процессами.

Причина, по которой вы размещаете вещи из каталога public/, заключается в том, чтобы не подвергать риску вашу прикладную кодовую базу. PHP необходимо правильно настроить, чтобы люди не просто просматривали каталоги и не загружали источник, потому что не было никакого конкретного различия между статическим контентом и исполняемыми скриптами. Например, неправильно сконфигурированный сервер с радостью будет обслуживать необработанные файлы .php, а не запускать их.

Пассажир не совсем революционен, но в нем очень много важных функций. Что отличает его от того, что он работает очень хорошо и не требует большого внимания. Из коробки он в значительной степени готов к работе.

Ответ 2

Он обслуживает рубины на приложениях rails (на самом деле любое приложение в стойке). Я был использован с версией 2.x для интеграции пакета в apache, но с новой версией, которая поддерживает автономное выполнение, я предпочитаю запускать ее в автономном режиме (в сочетании с rvm)

Это может быть очень полезно как в режиме разработки, так и в режиме производства и ускоряет выполнение приложения RoR.

Для развертывания приложения RoR я устанавливаю его со своим собственным gemset, а затем устанавливаю пассажира в этом gemset с помощью gem install passenger (вы также можете безопасно пропускать gemsets, но они будут изолировать среду приложения, поэтому приятно иметь их). После этого вы можете запустить приложение с passenger start -a 127.0.0.1 -p 3081 -e production в корне проекта.

Затем я настраиваю apache vhost для работы в режиме обратного прокси с файлом, подобным этому

<VirtualHost *:80>
        ServerName your.server.org

        ProxyPass /  http://localhost:3081/
        ProxyPassReverse  /  http://localhost:3081/
        ProxyRequests     Off

        # Local reverse proxy authorization override
        # Most unix distribution deny proxy by default (ie /etc/apache2/mods-enabled/proxy.conf in Ubuntu)
        <Proxy http://localhost:3081/*>
                Order deny,allow
                Allow from all
        </Proxy>
</VirtualHost>

и все в порядке, ваше приложение развернуто с его локальной конфигурацией, оно даже не требует прав root (для пассажирской части).