Upd (March 5th, 2015): В принципе, эту инструкцию я написал для личного использования, но в итоге залил на хабр в песочницу. Там меня раскритиковали что это все сильно по-нубски, никаких тебе Capistrano, chef, Ansible, ect. Но инструкция предназначена для новичков, которые что-то соорудили на Rails, и теперь им нужно выставить это на свежеоплаченную VPS-ку за 5 долларов.
А где дешевле всего арендовать VPS-сервер и как получить VPS на 2 месяца бесплатно читайте в этом посте.
На сервере мы будем использовать:
- Ubuntu 14.04 (берем последнюю LTS-версию)
- nginx + passenger (по-моему, отличная связка)
- rvm (удобно)
- Ruby 2.2.0 (берем последнюю stable-версию)
- PostgreSQL (я использовал 9.3)
- git
Для начала у вас уже должен быть сервер с включенным SSH-сервером, который мы взяли у VPS-провайдера.
Шаг 0. Подготовка окружения.
Логинимся к нему через свой любимый SSH-клиент. Скорее всего, у вас будет только root-аккаунт.
Законнектились? Для начала создаем нового пользователя и заходим под ним. В качестве примера используется имя пользователя deploy:
Создаем ключи для доступа к нашему серверу. Данный шаг не обязателен, и сервер будет работать и без него, но для безопасности это необходимо. Будет использовать утилита ssh-copy-id. В терминале вашего компьютера (не на сервере!) вводим:
P.S. на моем компьютере OS X, но это применимо почти к любой *nix-системе. Для windows ищите как это сделать отдельно, либо пропускайте этот шаг и пользуйтесь паролем.
Шаг 1. Устанавливаем все необходимое.
1.1. Устанавливаем Ruby
P.S. не уверен что этот шаг или все эти пакеты нужны, но где-то я это скопипастил, впрочем на данном этапе лишние пакеты не критичны.
1.2. Устанавливаем rvm
Команда для rubygems не устанавливать документацию:
1.3. Устанавливаем nginx
Введите следующую команду и проверьте что ip сервера в браузере теперь выдает nginx welcome page.
Теперь нужно открыть конфиг файл nginx. Для этого я использовал редактор nano, который сразу есть в Ubuntu. Вводим команду:
Вам нужно раскомментировать две строчки:
Адрес во второй строчке нужно изменить на следующий. Не забудьте заменить имя пользователя deploy на своего:
1.4. Устанавливаем PostgreSQL
Создаем пользователя (т.н. роль) в нашей бд. Логин и название бд в данном случае одинаковые и в качестве примера используется app_name:
Задаем пароль:
Жмем Ctrl+d для выхода, после чего создаем базу данных:
Шаг 2. Перенос приложения на сервер
Воспользуемся git. Сначала переходим в папку вашего юзера:
Идем на bitbucket.org или github.com, в общем, туда, где лежит ваш код и ищем ссылку на наш репозитарий и копируем ее в консоль сервера. Выглядит команда вот так:
Теперь в папке вашего пользователя у вас есть папка с вашим приложением app_name.
Шаг 3. Немного настроек
Теперь нужно снова внести изменения в конфиг nginx. Открываем файл:
Теперь нам необходимо заменить содержимое следующим текстом. Вместо имени домена можно вписать ip-адрес, если у вас его еще нет. Так же не забудьте заменить имя пользователя deploy на своего:
Удалять построчно можно комбинацией клавиш Ctrl+k
Теперь проверьте ваш config/database.yml файл, правильно ли указаны настройки подключения к базе данных. Должно быть:
Теперь необходимо внести изменения в конфиг PostgreSQL:
В этой строчке надо поменять «peer» на «md5»:
Теперь еще нужно доустановить JS Runtime, я использовал nodejs:
Теперь переходим в папку с нашим приложением и выполняем миграцию бд и компиляцию assets:
Перезагружаем nginx и сервер должен работать: