Почему не работает деплой из bitbucket?

Следовал инструкции: jonathannicol.com/blog/2013/11/19/automated-git-de...

Сервер VPS, Ubuntu 14.04

Сделал на тестовом поддомене - всё работает.
На радостях тут же всё удалил и решил проделать тоже самое на основном, с улучшениями.
Не получилось.

Сейчас вернулся к простому варианту с тестовым поддоменом.

И так, есть приватный репозиторий на bitbucket, добавлены 2 Deployment keys:
1. Для пользователя username (лежит в /home/username/.ssh)
2. Для пользователя www-data (под ним работает Apache, лежит в /var/www)
В репозитории только 1 файл - index.php

Далее следую строго по инструкции, изменив в bitbucket-hook.php только пути (для git тоже пробовал менять). Ну и ветка у меня только master

После выполнения команд
git clone --mirror git@bitbucket.org:username/deploy.git
cd deploy.git
GIT_WORK_TREE=/var/www/deploy.example.com git checkout -f master


В папке /var/www/deploy.example.com появился index.php

так же были даны права (уже и так и эдак пробовал) на папку с сайтом и на репозиторий:
sudo chown -R username:www-data /var/www
sudo chown -R username:www-data deploy.git


Таким образом, у всех нужных папок владелец указан как:
Владелец/группа
username/www-data

Клонирую репозиторий на компьютер, вношу изменения, отправляю коммит на сервер...

До bitbucket-hook.php всё доходит, лог пишется.
Дальше я заметил происходит следующее:
1. В папке deploy.git у файла index меняется владелец на www-data/www-data
2. В папке /var/www/deploy.example.com у файла index.php меняется владелец на www-data/www-data

И всё, никаких изменений.
Если сейчас выполнить команды, которые прописаны в bitbucket-hook.php
cd ~/deploy.git
git fetch
GIT_WORK_TREE=/var/www/deploy.example.com git checkout -f


То файлы обновятся.
При этом у
/var/www/deploy.example.com/index.php
~/deploy.git/head
~/deploy.git/index
владелец станет username/username

После этого если ещё раз отправить коммит вообще ничего не произойдёт кроме записи логов с bitbucket...

Что делать?

UPD:
Подозреваю всё же проблему прав у www-data, но как её решить...
Вручную выполняю команду из скрипта от www-data
9b7d1cea8afe48ae806b802a3bbdcd5c.PNG
Та же команда от моего пользователя
9d4c7f1c69f346bc80c85821a1eead99.PNG
  • Вопрос задан
  • 3137 просмотров
Решения вопроса 1
andrhohlov
@andrhohlov Автор вопроса
Спасибо @DancingOnWater за идею про несработавший chown, помог прийти к решению.

Я пришел к тому, что нужно все действия сделать от пользователя www-data, то есть:
- генерировать ssh-ключ и конфиг к нему
- создавать папку для репозитория и клонировать репозиторий

В этом помогает исполнение команд от лица пользователя
sudo -u www-data

Ну и соответвтенно права и на папку с гит репозиторием, и на /var/www должны принадлежать www-data (а я указывал username/www-data).

Проверил решение на чистой установке сервера, всё работает. Может быть оформлю инструкцию, если кому пригодится.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@DancingOnWater
Подозреваю, что репозиторий, с которого приходит коммит и репозиторий, куда должен слить bitbuket один и тотже
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы