собственно скриптик, который устанавливает mercurial и настраивает апач для работы с репозиторием, два режима работы
./hg-configure install - устанавлаиет, mercurial, mod_wsgi, создает виртуальный хост и прочее
./hg-configure myproject - создает и иннициализирует репозиторий
./hg-configure install - устанавлаиет, mercurial, mod_wsgi, создает виртуальный хост и прочее
./hg-configure myproject - создает и иннициализирует репозиторий
PHP:
#!/bin/bash
argc=($#)
apache_dir='/var/www/sites' #директория Апача
hg_host="hg.webcom.dev"
if [ $argc -ne 1 ] ; then
echo "Формат: "; echo " hg-configure install - будет иннициализирован mercurial";
echo " hg-configure репозиторий - будет создан репозиторий";
exit;
fi
if [ $1 = "install" ] ; then
echo ""
echo -n "Установливать Apache mod_wsgi? "; read a2mod;
if [ $a2mod = 'y' ] ; then
sudo aptitude install libapache2-mod-wsgi
fi
sudo a2enmod wsgi > /dev/null
echo "Создание пользователя/группы 'hg:hg'";
sudo useradd hg > /dev/null
sudo usermod -d $apache_dir/$hg_host hg > /dev/null
if [ ! -d $apache_dir/$hg_host ] ; then
echo -n "Создание директории mercurial : "; echo $apache_dir/$hg_host;
sudo mkdir $apache_dir/$hg_host > /dev/null
sudo mkdir $apache_dir/$hg_host/repo $apache_dir/$hg_host/www > /dev/null
sudo chown -R hg:hg $apache_dir/$hg_host/
sudo chmod -R 0777 $apache_dir/$hg_host/
fi
if [ ! -d $apache_dir/$hg_host/www ] ; then
sudo -u www-data mkdir $apache_dir/$hg_host/www > /dev/null
fi
if [ ! -f /etc/apache2/sites-enabled/$hg_host ] ; then
echo -n "Создание виртуального хоста : $hg_host";
echo "<VirtualHost *:80>
ServerAdmin [email protected]
ServerName $hg_host
DocumentRoot $apache_dir/$hg_host/www
# настройки wsgi
WSGIProcessGroup hg
WSGIDaemonProcess hg user=hg group=hg threads=2 maximum-requests=1000
# путь до скрипта, обрабатывающий wsgi
WSGIScriptAlias / $apache_dir/$hg_host/www/hgwebdir.wsgi
# ограничение доступа к репозиторию
<Location />
AuthType Basic
AuthName \"Webcom Media Repository. Restricted access.\"
AuthUserFile $apache_dir/$hg_host/.htpasswd
Require valid-user
</Location>
</VirtualHost>" > /etc/apache2/sites-enabled/$hg_host
echo "";
echo "Пароль для пользователя 'root'";
htpasswd -c $apache_dir/$hg_host/.htpasswd root
fi
if [ ! -f $apache_dir/$hg_host/www/hgwebdir.wsgi ] ; then
echo "#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
os.environ['HGENCODING'] = 'utf-8'
from mercurial.hgweb.hgwebdir_mod import hgwebdir
from mercurial.hgweb.request import wsgiapplication
path = os.path.dirname(os.path.abspath(__file__))
application = hgwebdir(path+'/hgwebdir.conf')" > $apache_dir/$hg_host/www/hgwebdir.wsgi
chown www-data:www-data $apache_dir/$hg_host/www/hgwebdir.wsgi
fi
if [ ! -f $apache_dir/$hg_host/www/hgwebdir.conf ] ; then
echo "[web]
style = coal
push_ssl = false
allow_push = *
[paths]" > $apache_dir/$hg_host/www/hgwebdir.conf
chown hg:hg $apache_dir/$hg_host/www/hgwebdir.conf
fi
exit
else
echo -n "Инициализация репозитория : "; echo $1;
if [ -d $apache_dir/$hg_host/repo/$1 ] ; then
sudo rmdir --ignore-fail-on-non-empty $apache_dir/$hg_host/repo/$1
fi
sudo -u hg hg init $apache_dir/$hg_host/repo/$1
echo "$1 = $apache_dir/$hg_host/repo/$1" >> $apache_dir/$hg_host/www/hgwebdir.conf
fi
sudo /etc/init.d/apache2 reload