Ниже приведено то, что я сделал после того, как провел немало исследований по установке hgwebdir.cgi на IIS6. Он основан на следующих сайтах:
Вам потребуется установить на сервер следующее:
- Mercurial (я использовал версию 1.5)
- Python 2.6. Версия Python зависит от версии установленного Mercurial.
Mercurial 1.5 использует Python 2.6. Установите x86, даже если вы используете x64.
Шаги для меня были:
- Создать каталог для сайта. Я использовал c: \ inetpub \ wwwroot \ hg.
- В IIS щелкните правой кнопкой мыши папку hg, выберите «Свойства», перейдите на вкладку «Домашний каталог».
- Нажмите на кнопку Создать приложение. Установите права на выполнение для «сценариев».
- Находясь на вкладке Домашний каталог, нажмите кнопку Конфигурация. Во всплывающем окне «Конфигурация приложения» нажмите кнопку «Добавить», чтобы добавить расширение приложения. Исполняемый файл: c: \ Python26 \ python.exe -u "% s" "% s". Расширение .cgi. Установите «глаголы» в «ограничение: GET, HEAD, POST». Проверьте оба скриптовых движка и убедитесь, что файл существует.
- На вкладке «Безопасность каталога» нажмите кнопку «Изменить» в разделе «Аутентификация и контроль доступа». Снимите флажки со всех методов аутентификации и проверьте метод «Базовая аутентификация». Установите домен по умолчанию, если вам нравится домен Active Directory.
- В IIS щелкните папку расширений веб-службы на левой панели. Нажмите на ссылку «Добавить новое расширение веб-службы». Имя расширения должно быть Python, необходимый файл: c: \ Python26 \ python.exe -u "% s" "% s". Убедитесь, что новое расширение «Разрешено».
Сейчас самое время проверить, работает ли Python. Создайте файл в новой папке Hg с именем test.cgi. Вставьте следующий код Python:
print 'Status: 200 OK'
print 'Content-type: text/html'
print
print '<html><head>'
print ''
print '<h1>It works!</h1>'
print ''
print ''
Откройте браузер на вашем сайте, например, http://localhost/hg/test.cgi
Вы должны увидеть "Это работает!" в браузере.
Далее давайте включим hgwebdir.
- Удалить test.cgi
- клонировать репозиторий hg в новый каталог:
https://www.mercurial-scm.org/repo/hg/
- скопируйте hgwebdir.cgi в ваш веб-каталог: c: \ inetpub \ wwwroot \ hg \ из клонированного репозитория hg
- Отредактируйте файл и измените
application = hgwebdir('hgweb.config')
wsgicgi.launch(application)
до
application = hgwebdir('c:\inetpub\wwwroot\hg\hgweb.config')
wsgicgi.launch(application)
- Разархивируйте файл Library.zip в каталоге Mercurial, c: \ Program Files \ Mercurial \, в свой веб-каталог, c: \ inetpub \ wwwroot \ hg \
- Скопируйте каталог шаблонов из c: \ Program Files \ Mercurial \ templates \ в c: \ inetpub \ wwwroot \ hg \ templates \
- Создайте файл с именем hgweb.config в вашем веб-каталоге.
Сейчас самое время проверить это. Перейдите по следующему адресу в браузере, http://localhost/hg/hgwebdir.cgi
- Отредактируйте hgweb.config и вставьте следующее:
[collections]
\\server\share$\Hg\ = \\server\share$\Hg\
[web]
allow_push = *
push_ssl = false
Это все мои предпочтения, например, у нас есть репозитории в подкаталогах по адресу \\ server \ share $ \ Hg. Веб-приложение будет запускаться с разрешениями вошедшего в систему пользователя через браузер, поэтому им потребуются разрешения на чтение / запись для общего ресурса.
Последний шаг - разрешить длинные соединения, которые могут произойти при первом клонировании репо. Выполните следующую команду, чтобы увеличить время ожидания до 50 минут:
cd \inetpub\AdminScripts\
cscript adsutil.vbs GET /W3SVC/CGITimeout
cscript adsutil.vbs SET /W3SVC/CGITimeout 3000