Перейти к содержимому

Phusion passenger что такое

  • автор:

What is Passenger ® ?

Phusion Passenger ® is an open source web application server. It handles HTTP requests, manages processes and resources, and enables administration, monitoring and problem diagnosis.

Phusion Passenger — the smart app server

Passenger is very easy to use, makes deploying in production much easier and is scalable. If you aren’t already familiar with the benefits, you can learn more about them.

Passenger supports multiple programming languages, of which is one. Passenger can also serve multiple applications at the same time (it is multitenant).

Supported languages:

Since the release of Passenger 6, it now supports all languages. Want to use Passenger with your favorite language? Take a look at the Generic Language Support guides.

Developers, take a load off

Passenger ® is an app server that runs and automanages your web apps with ease. Also improves security, reliability and scalability. Learn more.

Justin detached Passenger6

Passenger 6 has arrived

Passenger 6 introduces standardization across your stack by supporting all languages.

Over 650,000 sites use Passenger

From business critical apps with billions of requests per day to small side projects, Passenger is tailored for each scenario.

Supercharge Your Web App

Passenger has a myriad of features that are invaluable to today’s web apps and microservice APIs. You get these benefits (and more) by simply installing Passenger with Nginx or Apache. Learn how.

Optimization

Passenger was built with high performance and efficiency in mind. With Passenger’s zero-copy architecture, turbocaching and support for multiple concurrency models, you can count on Passenger to get the most out of your hardware.

Stability

Passenger auto-manages your apps’ processes, restarting them and itself if they ever crash. Passenger also keeps resource hogging apps in check, giving your web app maximum uptime.

Documentation

A tool is only as good as its users are able to wield it. Passenger comes with world class documentation to allow you to fully leverage its features.

Security

Passenger protects your web apps from various malicious attacks like slow client attacks, common HTTP parser exploits and privilege escalations.

Reliability

Passenger was battle-tested with some of the most demanding web apps for over a decade. This makes it one of the toughest app servers to date, currently powering over 650,000 web apps.

Polyglot

Deploy all your apps from one Passenger instance in seconds, regardless of the language they’re written in. No need to fiddle around with multiple app servers and proxies anymore!

You too can deploy apps with confidence

Learn what else Passenger can do for you.

As a consultant, I’m less likely to have anything to fix with Passenger, compared to other Ruby deploys. So many botched setups in the wild.

Развёртывание Rails-приложений на Passenger и Nginx в CentOS 6.5

Данное руководство поможет создать надёжную основу для развёртывания приложений Rails в системе CentOS с помощью простого и производительного сервера приложений Phusion Passenger и HTTP-сервера Nginx.

Серверы и их роль в развёртывании приложений

Phusion Passenger – это производительный сервер приложений, который предназначен для обслуживания приложений и выступает в качестве вторичной точки входа для входящих запросов.

Nginx – это многоцелевой веб-сервер HTTP, который может обслуживать статические файлы (например, изображения, текстовые файлы и т.д.) и выполнять балансировку нагрузки. Он выступает в качестве первой точки входа всех запросов, и передает их серверу Passenger для обработки и возвращает ответ.

Сервер приложений Phusion Passenger

Многие разработчики рекомендуют использовать Phusion Passenger (или mod_rails) для поддержки приложений Rails. Это зрелый полнофункциональный сервер, который отвечает всем требованиям развёртываний и не нуждается в сложных настройках. Он устраняет необходимость использовать промежуточный сервер.

Passenger очень популярен и широко используется в производстве.

Версия Passenger с открытым исходным кодом предоставляет мультипроцессный однопоточный режим, а коммерческая версия поддерживает однопоточный и многопоточный режимы.

Примечание: Больше информации о Passenger можно найти на сайте проекта.

Обратный прокси-сервер Nginx

Nginx – это высокопроизводительный веб-сервер и обратный прокси-сервер. Nginx легковесный, простой в работе, его функции можно расширить с помощью плагинов. Благодаря своей архитектуре Nginx может обрабатывать огромное количество запросов.

Примечание: Больше информации о Nginx можно получить на сайте проекта.

Подготовка сервера

Сначала нужно подготовить окружение для развёртывания приложения:

  • Обновить операционную систему;
  • Установить основные инструменты для развертывания;
  • Установить Ruby, Rails и дополнительные библиотеки;
  • Установить серверы Passenger и Nginx.

Обновление операционной системы

Чтобы обновить CentOS, введите:

Эта команда обновит все базовые приложения CentOS.

Установите инструменты для развёртывания:

yum groupinstall -y ‘development tools’

В более новых версиях системы можно использовать:

yum groupinstall -y development

Этот набор инструментов содержит всё необходимое: gcc, make, automake, binutils, git и т.п.

Некоторых необходимых инструментов нет в официальном репозитории CentOS. Чтобы получить их, нужно добавить репозиторий EPEL.

sudo su -c ‘rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm’

После этого нужно обновить систему ещё раз:

Для взаимодействия Passenger и Nginx нужна библиотека curl-devel, а для работы Rails – sqlite-devel.

yum install -y curl-devel nano sqlite-devel libyaml-devel

Установка Ruby и Rails

Для загрузки и установки пакетов Ruby используйте менеджер версий RVM. Чтобы установить RVM, введите:

curl -L get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh

Чтобы установить Ruby с помощью RVM, введите:

rvm reload
rvm install 2.1.0

Пакет RubyGems поможет установить остальные инструменты Ruby (например, фреймворк Rails).

Для работы Rails необходим интерпретатор JavaScript, потому сначала нужно установить Node.js:

yum install -y nodejs

Чтобы загрузить и установить Rails, введите:

gem install bundler rails

Установка серверов

Примечание: Если на сервере меньше 1 GB RAM, нужно добавить своп-файл. Инструкции можно найти здесь.

Установка Phusion Passenger

В репозитории системы можно найти пакеты Phusion Passenger, но они очень устарели. Потому сервер приложений лучше установить с помощью RubyGem.

gem install passenger

Чтобы убедиться, что установка прошла успешно, запустите:

Команда должна вернуть:

Phusion Passenger Standalone, the easiest way to deploy Ruby web apps.
Available commands:
passenger start Start Phusion Passenger Standalone.
..

Установка Nginx

Как правило, Nginx устанавливается с помощью стандартного пакетного менеджера (yum) или из репозитория EPEL. Однако в таком случае Nginx не сможет взаимодействовать с Passenger. Чтобы исправить это, нужно установить Nginx из исходного кода, предварительно откорректировав его.

Чтобы начать компиляцию кода Nginx со встроенным модулем Passenger, запустите:

Программа предложит выбрать язык программирования (в данном случае это Ruby):

Use to select.
If the menu doesn’t display correctly, ensure that your terminal supports UTF-8.
‣ ⬢ Ruby
⬢ Python
⬢ Node.js
⬡ Meteor

В следующем окне выберите вариант 1:

1. Yes: download, compile and install Nginx for me. (recommended)
The easiest way to get started. A stock Nginx 1.4.4 with Passenger
support, but with no other additional third party modules, will be
installed for you to a directory of your choice.

Чтобы продолжить, нажмите Enter.

Исходный код будет загружен, скомпилирован и установлен с поддержкой Passenger.

Подготовка приложения к развёртыванию

В данном разделе вы найдёте инструкции по развёртыванию простого приложения Ruby On Rails. Чтобы развернуть приложение, загрузите базу кода и установите зависимости.

Создание простого приложения/ Загрузка кода

Для начала создайте простейшее приложение Rails в домашнем каталоге. Для этого запустите команды:

# Create a sample Rails application
cd /var
mkdir www
cd www
rails new my_app
# Enter the application directory
cd my_app
# Create a sample resource
rails generate scaffold Task title:string note:text
# Create a sample database
RAILS_ENV=development rake db:migrate

Чтобы убедиться, что приложение работает, откройте каталог приложения и запустите простой сервер приложений:

# Enter the application directory
cd /var/www/my_app
# Run a simple server
rails s
# You should now be able to access it by
# visiting: http://[your droplet’s IP]:3000/tasks
# In order to terminate the server process,
# Press CTRL+C

Чтобы загрузить исходный код приложения, используйте SFTP или FileZilla.

Сценарий управления Nginx

Теперь нужно написать простой сценарий для сервера Nginx.

Скопируйте и вставьте в файл такой код:

Сохраните и закройте файл.

Сделайте его исполняемым:

chmod +x /etc/rc.d/init.d/nginx

Настройка Nginx

Теперь нужно создать виртуальный хост Nginx (или блок server).

Откройте конфигурационный файл:

# Only for development purposes.
# For production environment, set it accordingly (i.e. production)
# Remove this line when you upload an actual application.
# For * TESTING * purposes only.
passenger_app_env development;

Затем найдите раздел server < .. и закомментируйте его:

..
# location / # root html;
# index index.html index.htm;
# >
..

Укажите root-каталог приложения:

root /var/www/my_app/public;
passenger_enabled on;

Сохраните и закройте файл.

Проверьте состояние Nginx:

Чтобы протестировать приложение, откройте в браузере:

http://[server IP]/tasks
# Listing tasks
# Title Note
# New Task

Примечание: Больше информации о настройке сервера Nginx можно найти здесь.

Развертывание Rails с Phusion Passenger и Nginx за 5 минут

Когда я только начинал с RoR, я удивлялся, как разработчики так легко развернули свое приложение. Вот руководство, которое может пригодиться, если вы хотите развернуть приложение Rails с Nginx, не делая весь процесс утомительным. Я мог бы сделать это за 5 минут, а вы?

Phusion Passenger / mod_rails

Phusion Passenger – это надежный модуль для серверов Apache и Nginx, который предпочтительнее любого другого модуля для развертывания веб-приложений, разработанных с использованием инфраструктуры Rails. Но если вы используете платформу Microsoft Windows, вам, возможно, придется искать другие альтернативы, поскольку Phusion Passenger совместим с чем угодно, кроме Windows. В этом уроке я буду использовать Ubuntu, но вы можете использовать все что угодно в стиле Unix.

Выбирай между nginx и Apache

Apache и Nginx являются широко распространенными веб-серверами. Хотя Apache является наиболее известным веб-сервером, основанным на процессах, Nginx наиболее подходит, если вам нужен быстрый и быстро реагирующий сервер. Он совершает чудеса, когда сервер находится под большой нагрузкой.

В этом посте я буду полагаться на сервер Nginx, но если в вашем стеке есть Apache, метод подключения не сильно отличается от Nginx.

Развертывание приложения Rails с Phusion Passenger и Nginx

Сначала загрузите последнюю стабильную версию Nginx с nginx.org. Вам понадобится его исходный код, чтобы установить модуль Nginx позже. Я буду использовать nginx-1.0.15, который является последней стабильной версией на момент написания этого руководства.

cd /tmp wget http://nginx.org/download/nginx-1.0.15.tar.gz tar -xvzf nginx-1.0.15.tar.gz

Предполагая, что у вас установлены Ruby, Rails и RubyGems, введите следующий код для установки Gem для пассажиров Phusion.

gem install passenger

Теперь вам нужно настроить Nginx для работы с Passenger. Запустите следующую команду в вашей любимой оболочке.

passenger-install-nginx-module

Интерактивный установщик проведет вас через все, и вы получите полностью функциональный сервер Nginx всего за несколько минут. Я нашел установщик довольно забавным в использовании. Если что-то пойдет не так, вы получите уведомление об этом, и установщик покажет вероятную причину, а также решение для ее устранения. Чего еще ожидать?

При появлении запроса перейдите к пользовательскому методу установки Nginx (вариант 2). Это будет вашим преимуществом в долгосрочной перспективе, и если вы хотите добавить некоторые дополнительные параметры в конфигурационный скрипт Nginx, это идеальный выбор. Например, если вашему приложению требуется поддержка SSL и на вашем сервере лежит исходный код OpenSSL, вы можете безболезненно скомпилировать их, передав параметр в файл конфигурации.

При появлении запроса укажите расположение исходного кода nginx, который мы скачали ранее. В нашем случае это /tmp/nginx-1.0.15. Следующие несколько шагов говорят сами за себя.

Если все идет хорошо, вы должны увидеть что-то вроде «Nginx с поддержкой Passenger был успешно установлен». Установщик может отредактировать ваш файл конфигурации Nginx, чтобы добавить фрагмент кода, или вам, возможно, придется сделать это вручную. В любом случае, вы будете уведомлены об этом.

Меня попросили настроить это сам, и вот что это побудило меня сделать. (Код, приведенный ниже, может варьироваться от пользователя к пользователю).

Please edit your Nginx configuration file (probably /opt/nginx/conf/nginx.conf), http < . passenger_root /usr/lib/ruby/gems/1.8/gems/passenger-3.0.11; passenger_ruby /usr/lib/ruby1.8; . >server < listen 80; server_name www.yourhost.com; root /somewhere/public; # passenger_enabled on; >

Скопируйте вышеуказанный контент в ваш файл nginx.config и замените «где-нибудь» (упомянуто выше) абсолютным путем к вашему приложению.

Вот как выглядит (моя) финальная конфигурация;

worker_processes 1; events < worker_connections 1024; >http < passenger_root /usr/lib/ruby/gems/1.8/gems/passenger-3.0.11; passenger_ruby /usr/bin/ruby1.8; include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server < listen 80; server_name myapplication.com; root /home/root/application/public; passenger_use_global_queue on; passenger_enabled on; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html < root html; >> >

Установите среду базы данных и перезапустите сервер nginx, используя следующую

sudo /etc/init.d/nginx restart

Вуаля! На этом все и поздравляю. Вы успешно развернули свое приложение rails.

Введя URL своего приложения в браузер, и, надеюсь, вы обнаружите, что он работает. Если вы не видите его работающим или попадаете на страницу с ошибкой, проверьте файл error.log Nginx (можно найти в файле nginx.log) или файл журнала приложения для получения дополнительной информации. Это может быть потому, что вы пропустили определенный драгоценный камень или определенные зависимости не были удовлетворены.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *