Как развернуть приложение Ruby с использованием Apache и Passenger на Ubuntu и Debian

Phusion Passenger — это приложение-сервер, которое можно интегрировать с веб-серверами, такими как Apache и Nginx, обеспечивая возможность работы с приложениями на Ruby/Rails через веб-сервер. Это отличный выбор для развертывания Ruby on Rails в производственной среде. В данной статье мы рассмотрим, как развернуть Ruby-приложение с использованием Apache на системах Linux, таких как Ubuntu и Debian. Вы можете использовать этот гид как для промежуточного, так и для окончательного развертывания.

Для начала предполагаем, что Ruby уже установлен на вашей системе. Если Ruby отсутствует, воспользуйтесь одним из следующих URL для его установки в зависимости от требований вашего приложения.

Также рекомендуется установить базовые зависимости, которые потребуются для работы Passenger. Для этого выполните следующую команду:

sudo apt-get install -y build-essential libssl-dev libreadline-dev zlib1g-dev

После этого установите сам Passenger и необходимые модули Apache. Это можно сделать с помощью RubyGems:

gem install passenger

И затем выполните следующий скрипт для автоматической конфигурации Apache:

passenger-install-apache2-module

Скрипт предоставит инструкции, которые нужно будет добавить в конфигурационный файл Apache. Обычно это файл /etc/apache2/apache2.conf. Обязательно добавьте следующие строки в конец файла:

LoadModule passenger_module /path/to/passenger/module
PassengerRoot /path/to/passenger
PassengerRuby /path/to/ruby

После настройки конфигурации, создайте виртуальный хост для вашего Ruby-приложения. Например:

<VirtualHost *:80>
ServerName example.com
DocumentRoot /path/to/your/app/public
<Directory /path/to/your/app/public>
Allow from all
Options -MultiViews
Require all granted
</Directory>
</VirtualHost>

Не забудьте заменить example.com на ваш домен и указать правильный путь к вашему приложению. После редактирования конфигурации перезапустите Apache:

sudo systemctl restart apache2

Теперь ваше Ruby-приложение должно быть доступно по указанному вами доменному имени. Если возникли ошибки, проверьте логи Apache для получения дополнительной информации.

Следуя этому гиду, вы сможете успешно развернуть ваше Ruby-приложение с использованием Apache и Passenger на Ubuntu или Debian. Удачи!

Необходимые условия

Сначала активируйте поддержку HTTPS для репозиториев Apt и установите PGP-ключи для пакетов passenger на вашем устройстве.

Читайте также:  Сконвертировать. doc файл в. txt в Linux

$ sudo apt-get install -y dirmngr gnupg
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
$ sudo apt-get install -y apt-transport-https ca-certificates

Затем добавьте ссылку на репозиторий пассажиров в указанный файл. Команда lsb_release -cs установит кодовое имя вашей операционной системы, которое также можно изменить вручную.

$ sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger `lsb_release -cs` main > /etc/apt/sources.list.d/passenger.list'

После добавления репозитория обновите список пакетов:

$ sudo apt-get update

Теперь вы можете установить пакет passenger с помощью следующей команды:

$ sudo apt-get install -y libnginx-mod-http-passenger

Не забудьте перезапустить Nginx, чтобы изменения вступили в силу:

$ sudo systemctl restart nginx

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

Установка модуля Passenger для Apache

Теперь установите модуль Apache passenger на своем компьютере. Вы также можете обновить Apache2 до последней версии, если это необходимо.

$ sudo apt-get install -y apache2 libapache2-mod-passenger

Активируйте модуль пассажира (если он еще не был активирован) с помощью следующей команды. После этого перезапустите службу Apache для применения новых настроек.

$ sudo a2enmod passenger $ sudo systemctl restart apache2.service

После установки и активации модуля Passenger, убедитесь, что ваш веб-сервер правильно настроен для работы с приложениями, написанными на Ruby. Для этого создайте конфигурационный файл для вашего приложения в директории конфигурации Apache, обычно это /etc/apache2/sites-available/. Пример конфигурации может выглядеть следующим образом:

<VirtualHost *:80>
ServerName example.com
DocumentRoot /path/to/your/app/public


Allow from all
Options -MultiViews
Require all granted
</Directory>

PassengerRuby /usr/bin/ruby
</VirtualHost>

Не забудьте заменить «example.com» и «/path/to/your/app» на соответствующие значения для вашего приложения. После этого активируйте новый сайт и перезапустите Apache:

$ sudo a2ensite your-site.conf $ sudo systemctl restart apache2.service

Также полезно проверить логи ошибок Apache, если после перезапуска сервер не запускается или возникает ошибка. Логи можно найти по адресу /var/log/apache2/error.log.

Создание виртуального хоста Apache

Теперь вы можете развернуть ваше Ruby/Rails приложение на данном сервере. Создайте файл конфигурации Apache и настройте виртуальный хост следующим образом.

$ vim /etc/apache2/sites-available/example.com.conf

Измените корневую директорию в соответствии с расположением вашего приложения на диске.



ИмяСервера example.com
Путь к директории 'public' приложения Ruby
DocumentRoot /path-to-your-app/public

Разрешить всем
Опции - Мультивьюсы
# Уберите комментарий, если вы используете Apache
Require all granted


Теперь активируйте созданный файл конфигурации сайта Apache.

$ sudo a2ensite example.com

После этого не забудьте перезапустить Apache, чтобы изменения вступили в силу:

$ sudo systemctl restart apache2

Также рекомендуется проверить конфигурацию на наличие ошибок перед перезапуском:

$ sudo apache2ctl configtest

Если все настройки корректны, вы увидите сообщение «Syntax OK». Это подтвердит, что ваш виртуальный хост настроен правильно.

Дополнительно, если ваше приложение использует SSL, вам нужно будет создать отдельный конфигурационный файл для HTTPS и установить соответствующий сертификат. Не забудьте также настроить перенаправление с HTTP на HTTPS для повышения безопасности.

Для установки SSL-сертификата вы можете использовать Let’s Encrypt. Установите Certbot, который упростит процесс получения и установки сертификатов:


$ sudo apt-get install certbot python3-certbot-apache

После установки выполните команду для получения сертификата:


$ sudo certbot --apache -d example.com

Следуйте инструкциям на экране, чтобы завершить настройку SSL. Certbot также предложит автоматически настроить перенаправление с HTTP на HTTPS, что рекомендуется для повышения безопасности вашего приложения.

Кроме того, убедитесь, что ваши зависимости (например, Ruby, Rails и другие библиотеки) актуальны, а также регулярно проверяйте журналы ошибок Apache, чтобы быстро обнаруживать и устранять возможные проблемы:


$ tail -f /var/log/apache2/error.log

Проверьте настройки и перезапустите Apache

Используйте приведенную ниже команду для проверки установки пассажира на вашей системе.

$ sudo /usr/bin/passenger-config validate-install

Все проверки должны завершиться успешно. Если какая-либо из них не прошла, это поможет вам выявить и исправить ошибки.

Развертывание Ruby-приложения
$ sudo systemctl перезапустить apache2.service

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

$ sudo systemctl статус apache2.service

Если служба не запустилась, изучите журнал ошибок Apache для поиска причин. Используйте команду:

$ sudo journalctl -xe | grep apache2

Также убедитесь, что конфигурационные файлы Apache не содержат ошибок. Для этого выполните:

$ sudo apachectl configtest

Эта команда позволит вам проверить синтаксис конфигурации. Если вы внесли изменения в конфигурацию, обязательно перезапустите Apache для применения изменений.

Управление зависимостями с Bundler

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

Для начала работы с Bundler достаточно установить его через систему управления пакетами. После установки создаётся файл Gemfile, в который добавляются необходимые библиотеки. Затем, выполняя команду, можно автоматически загрузить и установить все указанные зависимости. Это обеспечивает удобный и быстрый способ поддержания актуальности всех необходимых компонентов в рамках одного проекта.

Используя Bundler, разработчики могут сосредоточиться на написании кода, не отвлекаясь на управление библиотеками, что в конечном итоге ускоряет процесс разработки и повышает качество конечного продукта.

Мониторинг и отладка приложения

Мониторинг включает в себя сбор данных о производительности, таких как время отклика, загрузка сервера и использование ресурсов. Регулярный анализ этих показателей помогает выявить потенциальные проблемы до того, как они повлияют на пользователей. Использование таких инструментов, как New Relic или Datadog, обеспечивает комплексный подход к наблюдению за состоянием вашего сервиса.

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

Не стоит забывать и о отчётности. Регулярное создание отчетов о производительности и стабильности помогает оценить эффективность предпринятых мер и выработать стратегию на будущее. Такой подход обеспечивает прозрачность и позволяет команде принимать обоснованные решения.

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

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