Развертывание Capistrano без доступа к Интернету на сервере

Как развернуть приложение Rails с помощью Capistrano на производственном или промежуточном сервере, у которого нет доступа к внешней сети или репозиторию?

Мне удалось пройти половину развертывания и я понял, что Capistrano не загружает репозиторий git на мой локальный компьютер, а сначала подключается к удаленному серверу и он пытается загрузить туда репозиторий Git.

Я бы ожидал систему сборки, подобную Java-ее, в которой результат создается и отправляется на сервер. Точно так же, как вы создадите файл .ear и развернете его на любом сервере, который хотите. Судя по всему, в RoR вы вынуждены (насколько я понимаю) собирать приложение на этом сервере, создавать там репозиторий гема, клонировать там последнюю ветку и так далее.

Есть ли способ отправить готовый к запуску пакет на удаленный сервер?


person victor    schedule 10.08.2014    source источник
comment
Возможно, разместить репозиторий git в той же сети, что и сервер? В Ruby результатом является ваш код.   -  person Matt Harrison    schedule 11.08.2014
comment
Разве ваш рабочий сервер не находится в другой сети? Как вы можете получить к нему доступ без интернета?   -  person Kites    schedule 11.08.2014
comment
@Kites Мне было интересно то же самое, но, возможно, это внутреннее приложение?   -  person Matt Harrison    schedule 11.08.2014
comment
@Kites Это внутреннее развернутое приложение, а сервер размещен в сети нашей компании. У нас определенно не будет доступа в Интернет на постановке и производстве, поэтому мы должны придумать решение.   -  person victor    schedule 11.08.2014


Ответы (1)


Обновлено 29 августа 2014 г.

Возможно указать capistrano на локальный репозиторий. Я сделал это.

Вам нужен bare_repo для загрузки, поэтому сначала создайте голый репозиторий на удаленной машине:

mkdir -p ~/projects/my_project.git
cd ~/projects/my_project.git
git init --bare

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

Затем вернитесь на свою рабочую станцию ​​и отредактируйте файл deploy.rb, чтобы он указывал на локальный репозиторий, который вы создали на удаленной машине.

set :repo_url, 'file:///path/to/bare_repo.git'

Затем capistrano сможет получить данные из локального репозитория git.

Необязательно: если capistrano все еще ищет онлайн-репозиторий, перейдите в каталог развертывания на удаленном сервере и очистите папку репо:

cd /directory_where_i_am_deploying_to/
rm -rf repo
person Maximus    schedule 28.08.2014
comment
Только что закончил полное развертывание без интернета. Следующая проблема заключалась в том, чтобы пройти установку пакета, но я мог упаковать свои драгоценные камни в свой каталог vendor/cache, зафиксировать их в репозитории, а в моем файле deploy.rb на моей рабочей станции я установил эту строку: set :bundle_flags, "--deployment --local". Тогда упаковщик не стал искать в Интернете какие-либо драгоценные камни. Это сработало! - person Maximus; 04.09.2014