18.01.2011

Установка Mercurial на RHEL-like

Многострадальный мой мануал, который я все время теряю и от того пытаюсь записать везде, где разрешают :)

Сначала следует добавить все необходимые пакеты
1) Установить httpd:
sudo yum install httpd

добавить его в автозапуск:
sudo chkconfig httpd on

и запустить:
sudo service httpd start

2) Установить модуль WSGI для Apache (модуль для работы с Python):
sudo yum install mod_wsgi



3) Установить пакет Mercurial:
sudo yum install mercurial

Переходим к настройке репозитория.
4) Создать пользователя hg:
sudo useradd --system hg

5) Создать директорию от имени hg, в которой будут создаваться сами репозитории:
sudo -u hg mkdir -p /var/hg/repo

и директорию для virtual-host:
sudo -u hg mkdir -p /var/hg/www

6) Создать первый репозиторий (остальные, соответственно, по образу и подобию):
sudo -u hg hg init /var/hg/repo/oss

Тестируем новый репозиторий.
Создать тестовый файл:
echo test > test

Выполнить проверку статуса пакетов в репозитории:
hg status

Корректный результат:
? test
Добавить данный файл в репозиторий:
hg add

Повторно выполнить проверку статуса файлов в репозитории:
hg status


Корректный результат:

A test
Коммитим изменения:
hg ci -m "test revision"
Получаем ворнинг:
No username found, using 'hg@repo.nodesquad.com' instead
Это сообщение говорит о том, что имя пользователя не задано. Его можно задать следующей командой:
echo "[ui]" > ~/.hgrc; echo "username = NODESQUAD.COM user_name <user@nodesquad.com>"


Следующий этап - настройка Apache, WSGI и прав доступа
7) Добавить виртуальный хост в конфигурационный файл Apache (путь к скрипту WSGI должен соответствовать созданному в 8-м пункте):

# OSS Repository Virtual Host
WSGISocketPrefix /tmp/wsgi
<Directory "/var/hg/repo/">
    Order allow,deny
    Allow from all
    AllowOverride All
    Options ExecCGI
    AddHandler cgi-script .cgi
</Directory>
<VirtualHost 111.222.111.222:80>
    ServerAdmin admin@nodesquad.com
    ServerName repo.nodesquad.com
    DocumentRoot /var/hg/repo

    # wsgi settings
    WSGIProcessGroup hg
    WSGIDaemonProcess hg user=hg group=hg threads=2 maximum-requests=1000

    # wsgi path to script
    WSGIScriptAlias / /var/hg/repo/hgwebdir.wsgi

    # Access restriction
    <Location />
        AuthType Basic
        AuthName "NODESQUAD.COM"
        AuthUserFile /var/hg/.hg.htpasswd
        Require valid-user
    </Location>
</VirtualHost>


ВНИМАНИЕ: Все дальнейшие "копипасты" должны быть без четверойных пробелов слева! Потому что это Python.
8) Создать скрипт WSGI:
sudo -u hg tee > /var/hg/repo/hgwebdir.wsgi

со следующим содержанием:
#!/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')


9) Создать конфигурационный файл web-интерфейса:
sudo -u hg tee > /var/hg/repo/hgwebdir.conf

со следующим содержанием:
[web]
style = coal
allow_push = username1, username2, username3, username4
allow_archive = gz, zip, bz2

[paths]
oss = /var/hg/repo/oss
extras = /var/hg/repo/extras

[extensions]
Раздел на собственный вкус. Подробнее смотреть тут:
ПодробностиИ хотелось бы добавить наглядную статью: Adding functionality with extensions

10) Перечитать конфигурационный файл Apache:
sudo service httpd reload

11) Теперь следует создать пользователей в файле авторизации:
htpasswd /var/hg/.hg.htpasswd username1

==========================
Полезная ссылка для начинающих:
A tutorial on using Mercurial

и для заканчивающих:
Mercurial Reference 1.0

Комментариев нет:

Отправить комментарий