Поиск по сайту:

Как развернуть приложение Rails с помощью Passenger и Apache в Ubuntu 14.04


Введение

В этом уроке мы покажем, как установить Phusion Passenger в качестве удобного для Rails веб-сервера, который легко установить, настроить и обслуживать. Мы интегрируем его в Apache на Ubuntu 14.04. К концу этого руководства у нас будет тестовое приложение Rails, развернутое в нашей капле.

Если вы предпочитаете Nginx вместо Apache, узнайте, как развернуть приложение Rails с Passenger и Nginx в Ubuntu 14.04, перейдя по ссылке.

Предпосылки

Первый шаг — создать новую каплю. Для небольших сайтов достаточно использовать план 512 МБ.

Вы можете выбрать 32-битный образ Ubuntu из-за меньшего потребления памяти (64-битные программы используют примерно на 50% больше памяти, чем их 32-битные аналоги). Однако, если вам нужна машина большего размера или есть вероятность, что вы обновитесь до более чем 4 ГБ ОЗУ, вам следует рассмотреть 64-разрядную версию.

Обязательно используйте Ubuntu 14.04. На момент написания этой статьи в Ubuntu 14.10 еще не было репозитория Passanger APT. Кроме того, у Ubuntu 14.04 есть дополнительное преимущество: это LTS-версия, что означает «длительная поддержка». Выпуски LTS разработаны как стабильные платформы, которые мы можем использовать в течение длительного времени.Ubuntu гарантирует, что выпуски LTS будут получать обновления безопасности и другие исправления ошибок в течение пяти лет.

  • 32-разрядная капля Ubuntu 14.04

Шаг 1 — Добавьте пользователя Sudo

После создания дроплета вы должны создать системного пользователя и защитить сервер. Вы можете сделать это, следуя статье Начальная настройка сервера.

Если вы хотите следовать этому руководству, вам нужен базовый пользователь с привилегиями sudo. В этом примере мы будем использовать пользователя rails. Если у вашего пользователя другое имя, убедитесь, что вы используете правильные пути в следующих шагах.

Шаг 2 (необязательно) — настройте свой домен

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

Однако этот шаг не является обязательным, так как вы можете получить доступ к своему сайту через IP-адрес.

Шаг 3 — Установите Руби

Мы установим Ruby вручную из исходного кода.

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

sudo apt-get update

Затем установите некоторые библиотеки и другие зависимости. Это сделает установку максимально плавной:

sudo apt-get install build-essential libssl-dev libyaml-dev libreadline-dev openssl curl git-core zlib1g-dev bison libxml2-dev libxslt1-dev libcurl4-openssl-dev libsqlite3-dev sqlite3

Создайте временную папку для исходных файлов Ruby:

mkdir ~/ruby

Перейдите в новую папку:

cd ~/ruby

Загрузите последний стабильный исходный код Ruby. На момент написания статьи это версия 2.1.4. Вы можете получить текущую последнюю версию с веб-сайта Ruby. Если доступна более новая версия, вам нужно будет заменить ссылку в следующей команде:

wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.tar.gz

Распакуйте загруженный файл:

tar -xzf ruby-2.1.4.tar.gz

Выберите извлеченный каталог:

cd ruby-2.1.4

Запустите скрипт configure. Это займет некоторое время, так как он проверит зависимости и создаст новый Makefile, который будет содержать шаги, необходимые для компиляции кода:

./configure

Запустите утилиту make, которая будет использовать Makefile для сборки исполняемой программы. Этот шаг может занять немного больше времени:

make

Теперь запустите ту же команду с параметром install. Он попытается скопировать скомпилированные двоичные файлы в папку /usr/local/bin. Этот шаг требует root-доступа для записи в этот каталог:

sudo make install

Теперь Ruby должен быть установлен в системе. Мы можем проверить это с помощью следующей команды, которая должна распечатать версию Ruby:

ruby -v

Если ваша установка Ruby прошла успешно, вы должны увидеть вывод, подобный следующему:

ruby 2.1.4p265 (2014-10-27 revision 48166) [x86_64-linux]

Наконец, мы можем удалить временную папку:

rm -rf ~/ruby

Шаг 4 — Установите Apache

Чтобы установить Apache, введите эту команду:

sudo apt-get install apache2

Да, это все!

Шаг 5 — Установите пассажира

Сначала установите ключ PGP для сервера репозитория:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7

Создайте исходный файл APT:

sudo nano /etc/apt/sources.list.d/passenger.list

Вставьте следующую строку, чтобы добавить репозиторий Passenger в файл:

deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main

Нажмите CTRL+X, чтобы выйти, введите Y, чтобы сохранить файл, а затем нажмите ENTER, чтобы подтвердить местоположение файла.

Измените владельца и разрешения для этого файла, чтобы ограничить доступ к root:

sudo chown root: /etc/apt/sources.list.d/passenger.list
sudo chmod 600 /etc/apt/sources.list.d/passenger.list

Обновите кеш APT:

sudo apt-get update

Наконец, установите Passenger:

sudo apt-get install libapache2-mod-passenger

Убедитесь, что модуль Passenger Apache; возможно, он уже включен:

sudo a2enmod passenger

Перезапустите Апач:

sudo service apache2 restart

Этот шаг перезапишет нашу версию Ruby на более старую. Чтобы решить эту проблему, просто удалите неправильное местоположение Ruby и создайте новую символическую ссылку на правильный двоичный файл Ruby:

sudo rm /usr/bin/ruby
sudo ln -s /usr/local/bin/ruby /usr/bin/ruby

Шаг 6 — Развертывание

На этом этапе вы можете развернуть собственное приложение Rails, если оно у вас есть. Если вы хотите развернуть существующее приложение, вы можете загрузить свой проект на сервер и перейти к шагу /etc/apache2/sites-available/default.

В этом руководстве мы создадим новое приложение Rails непосредственно в дроплете. Нам понадобится гем rails для создания нового приложения.

Перейдите в домашний каталог вашего пользователя:

cd ~

Установите гем rails без дополнительной документации, что ускорит установку. Это все равно займет несколько минут:

sudo gem install --no-rdoc --no-ri rails

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

Мы пропустим установку Bundler, потому что хотим запустить ее вручную позже.

rails new testapp --skip-bundle

Войдите в каталог:

cd testapp

Теперь нам нужно установить среду выполнения JavaScript. Его можно установить как гем therubyracer. Чтобы установить его, сначала откройте Gemfile:

nano Gemfile

Найдите следующую строку:

# gem 'therubyracer',  platforms: :ruby

Раскомментируйте это:

gem 'therubyracer',  platforms: :ruby

Сохраните файл и запустите Bundler:

bundle install

Теперь нам нужно создать файл виртуального хоста для нашего проекта. Мы сделаем это, скопировав виртуальный хост Apache по умолчанию:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/testapp.conf

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

sudo nano /etc/apache2/sites-available/testapp.conf

Отредактируйте его или замените существующее содержимое, чтобы ваш окончательный результат соответствовал файлу, показанному ниже. Изменения, которые необходимо внести, выделены красным. Не забудьте использовать собственное доменное имя и правильный путь к приложению Rails:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin webmaster@localhost
    DocumentRoot /home/rails/testapp/public
    RailsEnv development
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory "/home/rails/testapp/public">
        Options FollowSymLinks
        Require all granted
    </Directory>
</VirtualHost>

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

Чтобы протестировать нашу настройку, мы хотим увидеть страницу приветствия Rails на борту. Однако это работает только в том случае, если приложение запущено в среде разработки. Passenger по умолчанию запускает приложение в производственной среде, поэтому нам нужно изменить это с помощью параметра RailsEnv. Если ваше приложение готово к производству, вы можете оставить эту настройку.

Если вы не хотите назначать свой домен этому приложению, вы можете пропустить строки ServerName и ServerAlias или использовать свой IP-адрес.

Сохраните файл (CTRL+X, Y, ENTER).

Отключите сайт по умолчанию, включите новый сайт и перезапустите Apache:

sudo a2dissite 000-default
sudo a2ensite testapp
sudo service apache2 restart

Теперь сайт вашего приложения должен быть доступен. Перейдите к домену или IP-адресу вашего дроплета:

http://droplet_ip_address

Убедитесь, что ваше приложение развернуто. Вы должны увидеть либо ваше пользовательское приложение, либо стандартную страницу «Добро пожаловать на борт Rails»:

Приложение Rails теперь работает на вашем сервере.

Шаг 7 — Регулярно обновляйте

Чтобы обновить Ruby, вам нужно скомпилировать последнюю версию, как показано на шаге 4 этого руководства.

Чтобы обновить Passenger и Apache, вам потребуется запустить базовое обновление системы:

sudo apt-get update && sudo apt-get upgrade

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

После процесса обновления вам потребуется перезапустить веб-сервер:

sudo service apache2 restart