Page 1 of 1

Выполнение произвольных команд при создании домена

Posted: Wed Aug 10, 2016 3:37 am
by grinder
Скажите есть ли у Vesta возможность выполнить произвольную команду при определенных операциях?
Я в принципе могу занести, что нужно прямо в func/domain.sh или v-add-domain, но боюсь что оно затрется при обновлении.

Re: Выполнение произвольных команд при создании домена

Posted: Thu Aug 11, 2016 11:30 am
by skurudo
Проще в команды по добавлению домена, но затрутся - это факт, т.е. нужно бы держать копию.
А что нужно такого делать при создании домена? Может это не единичная задача :)

Re: Выполнение произвольных команд при создании домена

Posted: Fri Aug 12, 2016 6:41 am
by grinder
Ну вот сейчас разработчики хотят чтобы при создании домена, сразу инициализировать локальный git, инициализировать репозитарий в битбакет и сразу подключиться туда git remote add.

Re: Выполнение произвольных команд при создании домена

Posted: Mon Aug 15, 2016 7:41 am
by grinder
Кстати все прекрасно работает. Добавил нужные команды в v-add-web-domain и все.

Re: Выполнение произвольных команд при создании домена

Posted: Wed Aug 17, 2016 8:47 am
by skurudo
grinder wrote:Кстати все прекрасно работает. Добавил нужные команды в v-add-web-domain и все.
Не сомневался, что справитесь :)

Но у меня несколько вопросов все-таки есть. Можете подробнее рассказать.
Предположим у вас есть локальный репозитарий, с ним понятно.. а в случае с удаленным, как поступаете?

Re: Выполнение произвольных команд при создании домена

Posted: Sat Aug 20, 2016 5:35 am
by grinder
Да все просто. Мы завязались через битбакет, чтобы разраб не лез на сайт, сгенерили ключи и тянем по вебхуку.

В v-add-web-domain после Creating domain logs добавляем т.к. инициализировать git нужно в пустом каталоге добавляем


######## Git Bitbacket ########

repo=$(echo -e "$domain" | sed -e "s/\.домен//g")

## создаем репу
curl -X POST -v -u user:pass https://api.bitbucket.org/2.0/repositories/тема/$repo -H "Content-Type: application/json" -d '{"is_private": true}'

# создаем хук
curl -X POST -v -u 'user:pass' -d '{ "description" : "Autodeploy", "url" : "'"http://$domain/deploy.php"'", "events" : [ "repo:push" ], "active": "true" } ' https://api.bitbucket.org/2.0/repositor ... repo/hooks

cd $HOMEDIR/$user/web/$domain/public_html
git init
git remote add origin [email protected]:тема/$repo.git
chown -R $user:$user $HOMEDIR/$user/web/$domain/.* # права на .git

Потом скрипт копирует скелет
# Adding domain skeleton

В скелете файл
deploy.php

<?php
shell_exec("/usr/bin/git pull origin master 2>&1");
?>

При создании репы достаточно разрабу запушить, битбакет дернет скрипт который вытянет обновления на сайт.
В некоторых случаях приходится писать
shell_exec("sudo /usr/bin/git pull origin master 2>&1");

и в sudoers www-data ALL=(root) NOPASSWD:/usr/bin/git