Небольшой bash-скрипт инсталляции и иннциализации mercurial

Ирокез

бессмертный пони
Команда форума
Партнер клуба
собственно скриптик, который устанавливает mercurial и настраивает апач для работы с репозиторием, два режима работы

./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
 
Сверху