Capistrano + Git: хранилище локально для рабочего сервера
Я пытаюсь развернуть приложение для моего приложения. Git-репозиторий является локальным для моего сервера развертывания (т.е. у меня всего один сервер для всего, и я не размещаю свой код на github).
Вот расшифровка (заменил название моего приложения на "myapp" для конфиденциальности)
* executing `deploy:cold'
* executing `deploy:update'
** transaction: start
* executing `deploy:update_code'
executing locally: "git ls-remote /home/mrichman/git/myapp.git master"
fatal: '/home/mrichman/git/myapp.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
*** [deploy:update_code] rolling back
* executing "rm -rf /var/www/myapp.com/releases/20100218203108; true"
servers: ["myapp.com"]
Password:
[myapp.com] executing command
command finished
Command git ls-remote /home/mrichman/git/myapp.git master returned status code 32768
Вот мой deploy.rb: http://pastie.org/831424
Я также пытался
set :repository, "deploy@localhost:/home/mrichman/git/myapp.git"
но это дает мне
ssh: connect to host localhost port 22: Connection refused
Любые идеи приветствуются.
5 ответов
Просто столкнулся с той же проблемой. Ключ в том, чтобы не использовать копирование deploy_via, а вместо этого установить:local_repository
Это должен быть URL-адрес, который вы используете для доступа к хранилищу с вашего компьютера / ноутбука разработки.
Так что мой имеет
set :repository, "file:///srv/git/myapp.git"
set :local_repository, "nameOfHostFromSSHConfig:/srv/git/myapp.git"
Кажется, сработало. Просто не забудьте затем удалить строку копирования deploy_via.
Войдите в систему как пользователь сайта, на котором вы развертываете, и попробуйте это, чтобы увидеть, есть ли у вашего пользователя разрешение на доступ к этому каталогу:
ls -la /home/mrichman/git/myapp.git
Если вы получаете сообщение об ошибке "Отказано в доступе", вам нужно будет установить разрешения для вложенных каталогов хранилища, которые позволяют сценарию развертывания получать доступ к файлам.
Убедитесь, что вы написали правильный git-репо с заботливым написанием с учетом регистра! (Я столкнулся с той же проблемой, она просто решена)
Если local_repository
устанавливается, тогда Capistrano использует значение respository
с сервера развертывания и значение local_respository
с сервера разработки. Или что-то типа того.
Моя конфигурация работала так:
set :repository, "/home/#{user}/path/to/repo.git"
set :local_repository, "myserver.com:path/to/repo.git"
Моя проблема была связана с проблемой известных хостов. Все, что мне нужно было сделать, - это убедиться, что удаленный git-сервер был на моих известных хостах (при первой попытке SSH к нему будет предложено добавить это самостоятельно), и это сработало как прелесть.