Развертывание Rails 4.2 capistrano 3

Я совершенно новичок в развертывании рельсов. После поиска в Google мне все еще трудно понять, как развертывать приложения rails.

Итак, мои вопросы:

  1. После настройки VPS со всеми зависимостями от rails, где мне хранить кодовую базу? Корневой каталог VPS или некоторые конкретные места, например. www/ или public/?

  2. Должен ли я загружать всю папку приложения rails или только ее часть? У меня есть скрепка в моем приложении rails, и скрепка создает каталог system/ в папке public/, поэтому я должен загрузить system/?

  3. В Capistrano 3 есть поле repo_url, я знаю, что они поддерживают file://, https://, ssh://, or svn+ssh://, но большинство статей о capistrano помещают в него репозитории github. Однако у меня нет такого репозитория github. Что мне тогда вводить?

Спасибо за внимание.


person The questioner    schedule 09.01.2015    source источник
comment
Что касается № 3, что вы используете для управления исходным кодом, если вы не используете github?   -  person Prakash Murthy    schedule 09.01.2015


Ответы (2)


Вы можете настроить свой собственный сервер git, затем в deploy.rb вы можете что-то поместить как

set :repo_url, 'ssh://user@server_ip/path/to/your_git_repo.git'

Когда вы фиксируете свои изменения в репозитории git, вам не нужно загружать приложение на сервер. Capistrano загрузит приложение для вас при развертывании.

где я могу разместить свою кодовую базу? Это определяется тем, что вы вводите deploy.rb, например

set :deploy_to, '/path/to/my_codebase'

Загружать ли каталог /system будет зависеть от того, хотите ли вы, чтобы изображения скрепки были в системе управления версиями. Если нет, вы можете добавить каталог в gitignore. Вот руководство о том, как развернуть на Ubuntu 14.04 пассажир и NGINX. если вы не используете Passenger и Nginx, вы можете перейти к настройке capistrano и внести коррективы в зависимости от вашей настройки.

ИЗМЕНИТЬ

Вам необходимо установить git на свой компьютер для разработки и настроить сервер git на вашем VPS, как описано в приведенной выше ссылке, добавить удаленный сервер на локальный компьютер, используя

git remote add origin <server>

где «сервер» — это URL-адрес вашего репозитория git на VPS, например.

ssh://VPS_user@VPS_ip/path/to/your_git_repo.git

Теперь, когда вы зафиксируете и отправите свои изменения на сервер, capistrano развернет последнюю версию на вашем сервере git.

Вот ссылка с руководством по началу работы с git

person Optimus Pette    schedule 09.01.2015
comment
Означает ли это, что у меня ДОЛЖЕН быть удаленный репозиторий git для развертывания через capistrano?? Я чувствителен к git, поскольку я редко использую git... - person The questioner; 11.01.2015
comment
Удаленный репозиторий git может находиться на том же VPS, на котором вы развертываете свое приложение. Единственным условием является то, что пользователь, выполняющий развертывание, должен иметь права на чтение и запись в каталог, в котором находится репозиторий. в этом случае вы помещаете это в deploy.rb set :repo_url, 'ssh://your_vps_username@your_vps_ip/path/to/git_repo.git'. Вскоре я отредактирую ответ со ссылкой на простое руководство по началу работы с git. - person Optimus Pette; 11.01.2015
comment
Спасибо за ответ. Мне нужно сначала git отправить мою локальную кодовую базу в удаленный репозиторий git, а затем запустить команду cap deploy? Или мне просто нужно ограничить развертывание, Capistrano затем подтолкнет мою последнюю кодовую базу и, следовательно, развернет приложение? - person The questioner; 11.01.2015
comment
Вам нужно запускать как команду git push, так и команду cap deploy каждый раз, когда вы вносите изменения. - person Optimus Pette; 11.01.2015
comment
Если я использую repo_url, 'ssh://your_vps_username@your_vps_ip/path/to/git_repo.git'. Означает ли это, что любой, кто может угадать мой путь git, имеет право клонировать мою кодовую базу? Здесь есть охрана?? - person The questioner; 14.01.2015
comment
Нет, это работает только в том случае, если вы скопировали открытые ключи сервера на свой компьютер для разработки, используя: ssh-copy-id vps_username@vps_ip что означает, что ни один другой компьютер не имеет доступа к вашим учетным данным для входа. - person Optimus Pette; 14.01.2015

Ответы на поставленные конкретные вопросы:

После настройки VPS со всеми зависимостями от rails, где мне хранить кодовую базу? Корневой каталог VPS или некоторые конкретные места, например. www/ или паблик/?

Он будет развернут в папку, указанную параметром :deploy_to. Если не указано, :deploy_to по умолчанию равно /var/www/#{fetch(:application) См.: https://github.com/capistrano/capistrano/blob/05f63f5f333bb261f2a4c4497174361c48143252/lib/capistrano/defaults.rb#L3

Должен ли я загружать всю папку приложения rails или только ее часть? У меня есть скрепка в моем приложении rails, и скрепка создает каталог system/ в папке public/, поэтому должен ли я загружать system/?

Папка Paperclip system специфична для среды; каждая среда (разработка, производство,...) будет иметь свою собственную папку system, в которой будут храниться файлы, загруженные в эту конкретную среду. Эта папка не должна быть частью развертываемого кода.

Рекомендуемый способ обработки таких папок — хранить их в общей папке на сервере и создавать символические ссылки в текущей версии кода, чтобы одна и та же папка использовалась для хранения/извлечения вложений. См. раздел Section 3. Update custom links в http://robmclarty.com/blog/how-to-deploy-a-rails-4-app-with-git-and-capistrano для получения более подробной информации об этом.

Как упоминалось там, то же самое относится к файлу config/database.yml и любому другому файлу, содержащему специфичные для среды конфигурации.

В Capistrano 3 есть поле repo_url, я знаю, что они поддерживают file://, https://, ssh:// или svn+ssh://, но большинство статей о capistrano помещают в него репозитории github. Однако у меня нет такого репозитория github. Что мне тогда вводить?

Зависит от того, где хранится код, который вы развертываете. Если он находится в локальной папке, используйте формат file:://, чтобы указать, где находятся файлы.

person Prakash Murthy    schedule 09.01.2015