Для хранения кода своих мелких проектов я частенько использую репозитории обычно или 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