Руководство по развертыванию приложений на Rails 3.1

Я ищу хорошее руководство по развертыванию приложения на Rails 3.1.1 на сервере. И под добром я на самом деле имею в виду полный. Причина, по которой я публикую этот вопрос, заключается в том, что, хотя в Интернете существует множество учебных пособий (Google, блоги, книги, другие вопросы, связанные с переполнением стека и т. Д.), Кажется, что все они посвящены либо проблеме процесса развертывания. или сделать некоторые предположения о среде развертывания, которые не соответствуют тому, что мне нужно.

Я понимаю, что для развертывания приложения 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-passenger для развертывания (они кажутся самыми популярными). Итак, я установил веб-сервер apache, пассажирский гем и все связанные с ним зависимости (библиотеки, упомянутые пассажиром).

Теперь проблемы возникают. Первое, что связано с пользователем. Как работает Apache? Я имею ввиду под каждым пользователем? Если я установил и (пере) запустил его, используя пользователя root, будет ли он постоянно работать под пользователем root? Это плохо? Если да, я должен создать другого пользователя? Если да, то как? В какие группы я должен поместить нового пользователя, какие права он должен иметь (а именно, к каким папкам он должен иметь доступ). Как запустить apache в этом случае (под пользователем root, под этим пользователем, добавить строку где-нибудь в файле конфигурации и т. Д.)

Конфигурация сайта

Куда положить настройки сайта? Это нормально, чтобы положить его в apache.conf, или я должен создать новый файл на сайтах, доступных? Или я должен просто повторно использоватьпо умолчанию файл, который там уже есть? Если на предыдущем шаге был создан новый пользователь, какие права он должен иметь в отношении файлов конфигурации?

Также ... где в конечном итоге поставить приложение рельсы? В какой папке это будет лучше? Где-то под домом? Может быть, в / var / www? Я хочу знать, как это повлияет на права процесса apache, обслуживающего приложение? (Обычно у меня возникают проблемы при обслуживании приложения, оно жалуется на то, что у него нет прав на определенную папку. Кроме того, при использовании новых конвейеров ресурсов - что я не совсем понимаю - создаются файлы активов, и они, похоже, не наследовать права родительской папки ...)

База данных

В качестве базы данных я использую MySQL, и установить его довольно просто. Вопрос, который у меня здесь, снова связан с пользователем. Должен ли я использовать специального пользователя для базы данных? Как MySQL фактически управляет пользователями (являются ли они внутренними, или они пользователи Linux или ...?). Должен ли пользователь базы данных быть таким же, как «веб-пользователь» сверху? Или это должен быть другой?

активы

Здесь я действительно теряюсь. У меня действительно есть проблемы с работой конвейера активов. Я проверил эпизод Railscasts, а также учебник на сайте rails, и я, кажется, теоретически понимаю эту вещь, но у меня есть проблемы на практике.

Таким образом, здесь будут вопросы - какие команды мне нужно выполнить для предварительной компиляции ресурсов? (Попытка запустить рейк-ресурсы: прекомпиляция). Это нормально? Что я должен изменить в файле production.rb? Как сгенерированные ресурсы работают с веб-пользователем или пользователями базы данных, созданными выше? Я лично получаю проблему на этом этапе, а именно файлы журнала говорят, что некоторые CSS-файлы недоступны (например, у меня установлена библиотека jqplot в папке vendor / assets, и ее файлы недоступны - следует ли мне как-то добавить файл манифеста здесь ?).

Было бы здорово, если бы кто-то мог указать мне на хорошую статью или ресурс, который объясняет все это. Основная область, в которой у меня возникают проблемы, заключается в том, как Apache, Passenger, Ruby, Rails и MySQL взаимодействуют с пользователем Linux. Как правильно настроить разрешения для папки приложения Rails? Как конвейер ресурсов влияет на эту информацию о правах пользователя?

Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос