Выполнение произвольных команд при создании домена
Выполнение произвольных команд при создании домена
Скажите есть ли у Vesta возможность выполнить произвольную команду при определенных операциях?
Я в принципе могу занести, что нужно прямо в func/domain.sh или v-add-domain, но боюсь что оно затрется при обновлении.
Я в принципе могу занести, что нужно прямо в func/domain.sh или v-add-domain, но боюсь что оно затрется при обновлении.
Re: Выполнение произвольных команд при создании домена
Проще в команды по добавлению домена, но затрутся - это факт, т.е. нужно бы держать копию.
А что нужно такого делать при создании домена? Может это не единичная задача :)
А что нужно такого делать при создании домена? Может это не единичная задача :)
Re: Выполнение произвольных команд при создании домена
Ну вот сейчас разработчики хотят чтобы при создании домена, сразу инициализировать локальный git, инициализировать репозитарий в битбакет и сразу подключиться туда git remote add.
Re: Выполнение произвольных команд при создании домена
Кстати все прекрасно работает. Добавил нужные команды в v-add-web-domain и все.
Re: Выполнение произвольных команд при создании домена
Не сомневался, что справитесь :)grinder wrote:Кстати все прекрасно работает. Добавил нужные команды в v-add-web-domain и все.
Но у меня несколько вопросов все-таки есть. Можете подробнее рассказать.
Предположим у вас есть локальный репозитарий, с ним понятно.. а в случае с удаленным, как поступаете?
Re: Выполнение произвольных команд при создании домена
Да все просто. Мы завязались через битбакет, чтобы разраб не лез на сайт, сгенерили ключи и тянем по вебхуку.
В 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
В 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