Показаны сообщения с ярлыком administration. Показать все сообщения
Показаны сообщения с ярлыком administration. Показать все сообщения

1/27/2012

Настройка Apache + git + trac


Для хранения кода своих мелких проектов я частенько использую репозитории обычно или git или svn и систему багтрекинга trac.

Ниже для того, чтобы не забыть как это настраивается опишу все шаги на примере Ubuntu 10.10

1. Установка необходимого софта.

Устанавливаем весь необходимый софт:
$ apt-get install apache2 git subversion postgresql trac python-psycopg2 libapache2-mod-python

Включаем в апаче модули, которые нужны для доступа к репозиторию:
$ a2enmod dav dav_fs

2. Настройка git репозитория

Для примера создам тестовый репозитория с именем my_proj.
Для этого на сервер создаем каталог где у нас будут храниться данные,
как для bare репозитори, так и для обычного

$ mkdir -p /proj/git_repos_bare
$ cd /proj/git_repos_bare

$ git init --bare my_proj_init

Далее создаем каталог, где будут храниться репозитории:
$ mkdir -p /proj/git_repos
$ cd /proj/git_repos

Создаем пустой репозиторий:
$ git clone --bare /proj/git_repos_bare/my_proj_init my_proj

Даем права на доступ в репозиторий пользователю www-data от имени
которого будет хозяйничать апач:
$ chown -R www-data:www-data /proj/git_repos

3. Настройка Trac

Для того чтобы настроить trac сначала потребуется настроить базу данных в которой он будет хранить информацию о коммитах, логи и прочее.
Trac поддерживает много всяких БД: SQLite, MySQL, PostgreSQL.
Мне больше всего нравится PostgreSQL, но и с любой другой БД проблем возникнуть не должно.

3.1 Настройка postgres:

Создаем пользователя:
$ psql -d template1 -U postgres

$ template1=# CREATE USER trac WITH PASSWORD 'trac';

Создаем базу в которой trac будет хранить свои данные:
$ template1=# CREATE DATABASE "trac-my_proj" WITH OWNER = trac TABLESPACE = pg_default CONNECTION LIMIT = -1;

На этом этапе настройка базы данных завершена.

3.2 Настройка Trac

Теперь нужно настроить окружение Trac.

Создаем каталог где будут храниться окружения Trac'а:
$ mkdir -p /var/trac
$ cd /var/trac

Настраиваем окружение:
trac-admin {Название проекта} initenv {Имя репозитория} {Строка соединения с БД} {Тип репозитория} {Путь к репозиторию}

В нашем случае это будет выглядеть так:
$ trac-admin my_proj initenv my_proj postgres://trac:trac@localhost/trac-my_proj git /proj/git_repos/my_proj

Добавляем пользователя который будет являться администратором в Trac :
$ trac-admin my_proj permission add test TRAC_ADMIN

Разрешаем апачу хозяйничать в каталоге с файлами Trac'а:
$ chown -R www-data:www-data /var/trac/my_proj

3.3 Установка плагина для git репозитория

Поумолчанию trac в качестве системы контроля версий поддерживает только subversion, поэтому нужно установить дополнительный плагин для того, чтобы можно было использовать git репозиторий:
$ easy_install http://github.com/hvr/trac-git-plugin/tarball/master

Чтобы проверить что Trac заработал нужно запустить tracd:
$ tracd --port 8000 /var/trac/my_proj

Теперь на результаты деятельности можно посмотреть через браузер:
http://127.0.0.1:8000/

Если все ок, то должна отобразиться заглавная Wiki страничка.

4. Настройка Apache

Теперь для того чтобы иметь унифицированные механизм аутентификации и доступа к репозиториям и баг трекеру настраиваем apache.

Сначала добавим пользователя которому нужно дать доступ в репозитории и в баг трекер:
$ htpasswd -c /var/trac/users.auth test

Вводим пароль и готово.

Далее правим конфигурационный файл апача:
/etc/apache2/sites-enabled/000-default

Если же хочется использовать https, то править нужно:
/etc/apache2/sites-enabled/default-ssl

Сначала устанавливаем  Python handler который будет выводить список проектов при заходе на страничку yourdomain/trac:
<Location /trac/ > 

           SetHandler mod_python
           PythonInterpreter main_interpreter
           PythonHandler trac.web.modpython_frontend
           PythonOption TracEnvParentDir /var/trac
           PythonOption TracUriRoot /trac/
           PythonOption PYTHON_EGG_CACHE /tmp/.eggs

</Location>


После этого, нужно сказать апачу чтобы он не разрешал неавторизованным пользователям ходить в баг трекер.
     <LocationMatch /trac/*> 

            AuthType Basic
            AuthName "Input your username and password to access."
            AuthUserFile /var/trac/users.auth
            Require valid-user
     </LocationMatch>


Далее настраиваем git.
Прописываем переменные окружения, в которых указываем корень каталога с репозиториями, http-бэкенд и прописываем алиас пути к репозиториям через web:
     SetEnv GIT_PROJECT_ROOT /proj/git_repos

     SetEnv GIT_HTTP_EXPORT_ALL

     ScriptAlias /gitweb "/usr/lib/cgi-bin/gitweb.cgi"

     ScriptAlias /git/ /usr/lib/git-core/git-http-backend

     Alias /git "/proj/git_repos"


и запрещаем вход без пароля:
<Locationmatch /git/*>      
            DAV on
            AuthType Basic
            AuthName "Git Access"
            AuthUserFile /var/trac/users.auth
            Require valid-user

</LocationMatch>



Делаем в каталоге с репозиторием:
$ git update-server-info

И ,наконец, перезапускаем апач:
$ service apache2 restart

На этом настройка апача завершена.

5. Проверка что все работает.

Проверяем что репозиторий работает:
$ git clone http://test@mydomain/git/my_proj

Cloning into 'my_proj'...
Password for 'mydomain':
warning: You appear to have cloned an empty repository.

Добавляем файлы в репозиторий, и делаем начальный коммит:
git push origin master:master

Вот как-то так.

Если возникли какие-то проблемы, то посмотреть что идет не так можно в логах:
/var/log/apache2

11/19/2008

Управленеи квотами

Немного информации:

1. Что такое квотирование?

Квотирование позволяет ограничить два аспекта использования диска: количество файлов, которыми владеет пользователь или группа пользователей; и количество блоков диска, которые может использовать пользователь или группа пользователей. Квотирование определяется, как для каждого пользователя, так и для каждой файловой системы. Если у вас несколько разделов, то квоты нужно определить для каждого раздела, в котором пользователь намеревается создавать файлы.

2. Программное обеспечение

В зависимости от дистрибутива, у вас может быть, а может и не быть установлено программное обеспечение для поддержки квотирования. В этом случае, вы можете загрузить исходные тексты отсюда:
ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz

3. Установка

Пересоберите ядро с поддержкой квот. А дальше все написано в мануалах.

А теперь главное:

Как быстро определить закончилась квота у пользователя или нет? правильно, командой quota или repquota! А как увеличить квоту? правильно, командой setquota! а как все это делать быстро? а вот это мы сейчас и рассмотрим


#!/bin/sh
echo "Программа проверки пользовательских квот"
echo "Введите имя пользователя"
read USR # прочитали имя пользователя
MAIL=$USR@local # написали почтовый адрес
TEXT="Обратите внимание на содержимое вашей папки" # текст письма
RESULT=`repquota -u -a |grep $USR` # смотрим какой размер квоты у пользователя
USED=`echo $RESULT | tr -s ' ' ':' | cut -d : -f 3` # смотрим сколько место у пользователя затрачено
QUOTA=`echo $RESULT | tr -s ' ' ':' | cut -d : -f 5` # вообще вся его квота
MINQUOTA=$((QUOTA*90/100)) # минимальный размер квоты = 90% от квоты
NQUOTA=$((QUOTA*110/100)) # новый размер квоты = старая +10%

if [ $USED -ge $MINQUOTA ]; # если затрачено 90% и более, то
then setquota -u $USR -a 0 $NQUOTA 0 0; # устанавливаем размер квоты в 110%
echo "Изменен размер квоты" | mail -v -r "root@local" -s $TEXT -S smtp=192.168.11.15 $MAIL # от правляем письмо с уведомлением
echo "Установлена квота размером: " $NQUOTA;
exit;
else # если использовано менее 90% то все ок!
echo "Использовано: " $USED;
echo "Всего: " $QUOTA;
exit;
fi