Внедряване на Rails 4.2 capistrano 3

Аз съм напълно нов в внедряването на релси. След гугъл все още ми е трудно да разбера как да разположа rails приложения.

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

  1. След като настроя VPS с всички зависимости на релсите, къде да съхранявам кодовата си база? Основната директория на VPS или някои специфични местоположения, напр. www/ или public/?

  2. Трябва ли да кача цялата папка на rails app или само част от нея? Имам кламер в моето приложение rails и paperclip създава 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 repo, не е необходимо да качвате приложението на сървъра. 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 repo във VPS, напр.

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

Сега, когато ангажирате и изпратите промените си на сървъра, capistrano ще разположи най-новата версия на вашия git сървър.

Ето връзка с ръководство за това как да започнете с git

person Optimus Pette    schedule 09.01.2015
comment
Това означава ли, че ТРЯБВА да имам отдалечено git repo, за да внедря през capistrano?? Чувствителен съм към git, тъй като рядко използвам git... - person The questioner; 11.01.2015
comment
Отдалеченото git repo може да бъде в същия 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 repo, след което да изпълня командата 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 с всички зависимости на релсите, къде да съхранявам кодовата си база? Основната директория на VPS или някои специфични местоположения, напр. www/ или обществено/?

Той ще бъде разгърнат в папката, посочена от параметър :deploy_to. Ако не е указано, :deploy_to по подразбиране е /var/www/#{fetch(:application) Вижте: https://github.com/capistrano/capistrano/blob/05f63f5f333bb261f2a4c4497174361c48143252/lib/capistrano/defaults.rb#L3

Трябва ли да кача цялата папка на rails app или само част от нея? Имам кламер в моето приложение rails и paperclip създава директория system/ в публичната папка/, така че трябва ли да кача 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