НовостиСпособ перехода с Passenger на Unicorn.

Долгое время наши специалисты изучали пути повышения производительности Rails-проектов и в результате мы решили изменить способ запуска Rails на наших серверах. Начиная с 11 ноября 2010 года абсолютно все новые проекты Rails создаются и запускаются при помощи сервера Rack/Rails приложений Unicorn.

Уже созданные проекты, тем не менее, продолжают работать под управлением Phusion Passenger, и, если вас не устраивает производительность, то из этой статьи вы узнаете, как правильно и с минимальными усилиями изменить способ запуска вашего проекта.

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

В окне свойств перейдите к базе данных вашего проекта.

В свойствах базы данных нажмите кнопку «Отвязать» напротив названия проекта.

Аналогичным образом отвяжите от проекта все домены, кроме технических.

Используя логин и пароль в разделе «FTP и SSH», подключитесь к серверу, зайдите в каталог projects и переименуйте директорю с вашим проектом.

Удалите проект через панель управления хостингом.

После того, как проект исчезнет из списка (на это может уйти некоторое время), создайте новый Rails-проект с точно таким же именем. При этом базу данных создавать не нужно.

Дождитесь, пока проект перейдет в состояние «Готово», после чего вернитесь к менеджеру файлов по FTP.

В каталоге projects вы увидете две директории: архивная с вашим проектом и новая с именем вашего проекта, которая была создана только что. Удалите только что созданную директорию, после чего переименуйте архивный каталог обратно.

В панели управления в свойствах проекта нажмите кнопку «Перезагрузить сервер», после чего ваш проект начнет работу с Unicorn.

Привяжите к проекту все нужные вам домены.

Несколько важных моментов

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

kill -USR2 `cat /var/run/unicorn/project.hosting_user.pid`

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

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

  1. Alexey Kad:

    Получается и делать н ичего не надо, только перенести в новый проект и не убить базу. Отлично.

  2. tester:

    >В панели управления в свойствах проекта нажмите кнопку «Перезагрузить сервер», после чего ваш проект начнет работу с Unicorn.

    Сразу после переименования каталога в панели высвечивается — ОШИБКА. По ходу, в юниксе обращение идет не по пути к файлу, а возможно по какому то ID файла, который для каждого каталога уникален.

    Буду копировать файлы в новосозданнный каталог. Не факт что получится.

  3. tester: смотрите лог unicorn — там будет видна ошибка, тем более заметка-то эта крайне старая, посмотрите для начала как сейчас все работает: http://locum.ru/blog/hosting/rvm-new-force

  4. tester:

    Вот какая тема. Проект на 2.3.10. Без бандлера. Пробовали перейти с пассажира на юникорн. В надежде на улучшение отдачи. Принципиально проблем не возникло.

    1) переименовать каталог
    2) Открепить бд
    3) создать проект
    4) удалить новый проект и переименовать обратно
    5) привязать домен

    Ошибка выпала в тот момент когда я попробовал выставить по дефолту ree187 вместо 192.

    Руками завел сервер из каталога приложения

    START
    unicorn_rails -c /etc/unicorn/project.project.rb
    STOP
    kill -QUIT `cat /var/run/unicorn/project.project.pid`
    RESTART
    kill -USR2 `cat /var/run/unicorn/project.project.pid`

    Пока работает. Но в каталоге приложения по дефолту обычный 187 и unicorn 3.4

    ruby -v
    ruby 1.8.7 (2008-08-11 patchlevel 72) [x86_64-linux]

    unicorn_rails -v
    unicorn_rails v3.4.0

    По сути надо подцепить бандлер, и сделать rvmrc чтоб использовать ree по дефолту, установить гемы и запускать уже из под этого окружения. Только вот боюсь, что gems надо будет даунгрейдить до 1.6.2, под более новыми не заводится проект.

    Ребят, если не сложно — прокомментируйте, на что можно наткнуться при попытке провернуть данную схему?