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

Я ищу хорошее руководство по развертыванию приложения 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 или ...?).Должен ли пользователь базы данных быть тем же, что и «веб-пользователь» сверху? Или это должно быть другое?

  • Assets

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

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

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

Спасибо

11
задан Victor Blaga 13 November 2011 в 21:24
поделиться