Я ищу хороший учебник по развертыванию для приложения Rails 3.1.1 на сервере. И по добру я на самом деле подразумеваю полное. Причина, по которой я задаю этот вопрос, заключается в том, что, хотя в Интернете есть множество учебных пособий (google, блоги, книги, другие вопросы о stackoverflow и т.д.), Все они, похоже, сосредоточены либо на проблеме с процессом развертывания или сделать некоторые предположения относительно среды развертывания, которые не соответствуют тем, что мне нужно.
Я понимаю, что развертывание приложения Rails на сервере требует разнообразных программ и инструментов, которые необходимо настроить, и почему-то я всегда застрял на явно "маленьких" вещах, которые меня очень расстраивают.
Итак, начнем с самого начала. Теперь у меня есть сервер, к которому я могу получить доступ через SSH и имя домена, позвонив ему www.example.com. Сервер запускает новый Ubuntu 10.04 x64 и имеет только пользовательский интерфейс, а именно root (через root я обращаюсь к серверу с SSH). Заметка! Нет Apache, Ruby, PHP, MySQL, cPanel или любой другой панели, только минимальный минимум, который поставляется с новой установкой.
Также веб-сервер будет размещать одно приложение, и база данных будет работать на том же компьютере.
Насколько мне известно, процесс развертывания приложения Rails выполняется в следующих сценариях:
- Установка Ruby
Я уже делал это, используя RVM, используя процесс установки нескольких пользователей (просто потому, что у меня есть только пользователь root, и он делает это автоматически). Кажется, это работает нормально, но у меня есть несколько вопросов:
Было бы разумнее установить Ruby напрямую, а не через RVM (я думаю, возможно, с точки зрения эффективности), также RVM делает немного волшебства за теми изменениями, которые изменяют некоторые файлы bash_profile способами, которые я не понимаю и это как-то кажется инвазивным...)?
Будет ли более целесообразно устанавливать как отдельный пользователь через RVM (могут ли возникнуть какие-либо проблемы безопасности)?
- Необходимые драгоценные камни
Теперь, когда Ruby установлен, что будет лучшим исходным набором камней для установки рядом?
Я установил только связку, так что, как только я загружу свое приложение на сервер, я могу запустить команду установки пакета, которая будет устанавливать в свою очередь необходимые драгоценности приложения.
Вопрос. Должен ли я установить драгоценный камень перед собой? Существуют ли какие-либо другие драгоценные камни, которые необходимо установить?
- Веб-сервер
Здесь мне становится сложно. Я пытаюсь использовать apache и mod-пассажир для развертывания (они кажутся самыми популярными). Поэтому я установил веб-сервер Apache и жемчуг пассажиров и все связанные с ним зависимости (библиотеки, упомянутые пассажиром).
Теперь возникают проблемы. Первое, что связано с пользователем. Как работает Apache? Я имею в виду под каждым пользователем? Если я установил его и (повторно) запустил его с помощью пользователя root, он будет постоянно выполняться под пользователем root? Это плохая вещь? Если да, должен ли я создать другого пользователя? Если да, то как? В каких группах я должен вводить нового пользователя, какие у него права (а именно, какие папки он должен иметь). Как запустить apache в этом случае (под root, под этим пользователем, добавить строку где-нибудь в файле конфигурации и т.д.)
- Конфигурация веб-сайта
Где разместить материал конфигурации веб-сайта? Можно ли положить его в apache.conf или создать новый файл на доступных сайтах? Или я должен просто повторно использовать файл по умолчанию, который уже присутствует там? Если новый пользователь был создан на предыдущем шаге, какие права он должен иметь в отношении файлов конфигурации?
Также... где, в конце концов, поставить приложение rails? В какой папке было бы лучше? Где-то под домом? Может быть, под /var/www? Я хочу знать, как это повлияет на права apache-процесса, обслуживающего приложение? (Как правило, у меня возникают проблемы при обслуживании приложения, он жалуется, что он не имеет прав на конкретную папку. Кроме того, с использованием новых конвейеров ресурсов, которые я не совсем понимаю, создаются файлы активов, и они, похоже, не наследуйте права родительских папок...)
- База данных
В качестве базы данных я использую MySQL, и ее установка довольно проста. Вопрос, который у меня здесь, снова связан с пользователем. Должен ли я использовать специальный пользователь для базы данных? Как MySQL фактически управляет пользователями (они являются внутренними, или они являются пользователями Linux или...?). Должен ли пользователь базы данных быть таким же, как "веб-пользователь" сверху? Или это должно быть другое?
- Активы
Здесь я действительно теряюсь. У меня действительно есть проблемы, связанные с созданием трубопроводов активов. Я проверил эпизод railscasts, а также учебник по сайту rails, и я действительно теоретически понимаю это, но на практике у меня проблемы.
Итак, вопросы здесь будут: какие команды я должен выполнить для предварительной компиляции активов? (Попытка запускать рейк-активы: прекомпиляция). Это нормально? Что я должен изменить в файле production.rb? Как созданные активы работают в отношении пользователей веб-пользователей или баз данных, созданных выше? Я лично получаю проблему на этом этапе, а именно, в файлах журналов говорится, что некоторые файлы css недоступны (например, у меня есть библиотека jqplot, установленная в папке vendor/assets, и ее файлы не могут быть доступны, - я должен добавить файл манифеста здесь как-то?).
Было бы здорово, если бы кто-то мог указать мне на хорошую статью или на ресурс, объясняющий все это. Основная область, с которой у меня возникают проблемы, - это взаимодействие Apache, Passenger, Ruby, Rails и MySQL с пользователем Linux. Как правильно настроить разрешения для папки приложений Rails? Как конвейер активов влияет на этот пользовательский материал?
Спасибо