Как настроить Mercurial и hgwebdir на IIS? - PullRequest
72 голосов
/ 04 мая 2009

Я искал приличные инструкции о том, как заставить hgwebdir работать на IIS, но я не нашел много полезного.

Это это "шаг за шагом" на вики Mercurial, но это не очень хорошо. Также есть это и это , но, опять же, я не могу найти хороших шагов, чтобы привести к тому, с чего начать.

Ответы [ 10 ]

49 голосов
/ 20 мая 2009

Я только вчера должен был установить свежий экземпляр Mercurial, вот обновленные инструкции для 1.7:

  1. Установите Mercurial (эти инструкции были протестированы с 1.7)
  2. Установить Python (для Mercurial 1.7 необходимо использовать версию Python 2.6.6 для x86)
  3. Вам потребуется загрузить файл hgweb.cgi из источника Mercurial. Вы можете скачать исходный код, запустив: hg clone https://www.mercurial-scm.org/repo/hg/
  4. Создайте папку, которая будет папкой вашего веб-приложения. Вам нужно будет скопировать три вещи в эту папку:

    • Файл hgweb.cgi
    • Содержимое Library.zip из папки "C: \ Program Files \ Mercurial"
    • Папка шаблонов из вашего "C: \ Program Files \ Mercurial"
  5. Вам нужно убедиться, что в IIS настроен Python.

    • Включить CGI с помощью следующего: Панель управления -> Включить или выключить функции Windows -> Роли -> Веб-сервер (IIS) -> Добавить службы ролей -> Проверить CGI
    • Создайте новый веб-сайт в IIS и убедитесь, что физический путь - это папка, которую вы создали выше
    • В сопоставлениях обработчиков для нового веб-сайта выберите «Добавить карту сценариев». Введите *. Cgi для пути запроса, c: \ Python26 \ python.exe -u "% s" для исполняемого файла и Python для имени ,
  6. Вам также необходимо создать файл с именем "hgweb.config" с содержимым, аналогичным приведенному ниже. Путь в файле должен быть тем местом на вашем диске, где вы хотите хранить репозитории Mercurial:

    [коллекции]
    c: \ Mercurial \ repos = c: \ Mercurial \ repos

  7. Отредактируйте файл hgweb.cgi и измените строку, в которой он устанавливает путь к вашему hgweb.config, примерно следующим образом (где бы ни находился файл hgweb.config):

    config = "C: \ Mercurial \ hgweb.config"

  8. Теперь откройте браузер и перейдите к http://localhost/mercurial/hgweb.cgi (или какому-либо подходящему URL-пути, который вы настроили в IIS), и вы должны увидеть страницу Mercurial Repositories.

Кроме того, ознакомьтесь с постом блога Джереми Скиннерса . Он немного устарел, но имеет несколько дополнительных полезных шагов, таких как настройка перезаписи URL для более чистых URL.

34 голосов
/ 04 мая 2010

Похоже, что с момента выпуска Mercurial 1.5.2, эти учебники работают не совсем правильно. Во-первых, hgwebdir.cgi был удален и теперь заменен на hgweb.cgi.

Инструкции, которые работали лучше всего для меня, находятся на eworldui.net :

http://www.eworldui.net/blog/post/2010/04/08/Setting-up-Mercurial-server-in-IIS7-using-a-ISAPI-module.aspx

Эти инструкции предназначены для IIS 7 или выше. Если вы настраиваете это на IIS 6, я написал аналогичные инструкции, ориентированные на Win2k3 и IIS 6.0:

http://partialclass.blogspot.com/2010/05/setting-up-mercurial-server-on-win2k3.html

ОБНОВЛЕНИЕ: Вскоре после начала работы я узнал, что BitBucket изменил свою схему ценообразования, чтобы предложить бесплатный, неограниченный, частный хостинг: https://bitbucket.org/. Я бы выбрал это сразу Я изначально работал над этим проектом.

12 голосов
/ 23 июля 2010

Я обнаружил, что сообщение в блоге на Vampire Basic было хорошим началом, но в нем не было почти достаточно подробностей того, что я преследовал.

Я написал в блоге статью из 4 частей, которая поможет вам начать работу с IIS с нуля, включая интеграцию с Active Directory, настройку привилегий безопасности для push / pull, настройку шаблона, я воспроизведу его здесь, но довольно долго удивлялось, что Mercurial действительно был разработан для размещения на Linux / Apache:

http://www.endswithsaurus.com/2010/05/setting-up-and-configuring-mercurial-in.html

11 голосов
/ 06 апреля 2010

Ниже приведено то, что я сделал после того, как провел немало исследований по установке 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
11 голосов
/ 19 июля 2009

Здесь есть довольно хорошее и всеобъемлющее руководство: http://vampirebasic.blogspot.com/2009/06/running-mercurial-on-windows.html

3 голосов
/ 05 мая 2009

Использование Mercurial для клонирования хранилища Mercurial:

hg clone https://www.mercurial-scm.org/repo/hg/

вы найдете hgwebdir.cgi на верхнем уровне. Следует установить как и любой другой скрипт cgi.

2 голосов
/ 06 декабря 2010

Я боролся с этой настройкой для Mercurial 1.7.2 в течение прошлой недели или около того, чтобы заставить его работать, мне пришлось сделать что-то немного отличающееся от приведенных выше статей.

Публикация здесь, потому что Google продолжал возвращать меня сюда ....

Полная инструкция опубликовано здесь

Я следовал комбинации этих инструкций и этих (в источнике)

Основные отличия заключаются в том, что мне пришлось сделать установку "чистого python" mercurial в противном случае он жаловался бы на отсутствие dll, и я обнаружил, что важно использовать "установщики python" для pywin ISAPI-WSGI. (возможно, это очевидно для опытных разработчиков Python, но я новичок в Python, так что это было для меня новостью)

Надеюсь, это кому-нибудь поможет, и я не просто придумываю вещи (может быть, как я уже сказал, новичок в Python)

1 голос
/ 10 декабря 2010

Я сталкивался с ошибкой типа "... не могу загрузить модуль ...", и после некоторого чтения я решил проигнорировать файл Library.zip в папке Mercurial и использовать вместо него C: \ Program Files (x86) \ папка TortoiseHg.

Совет, который я нашел в этом руководстве под номером 6:

http://www.endswithsaurus.com/2010/05/setting-up-and-configuring-mercurial-in.html

Надеюсь, это кому-нибудь поможет ...

1 голос
/ 12 августа 2009

Красная книга hg содержит некоторые гораздо лучшие общие инструкции, чем я видел в других местах. Они не специфичны для IIS, но вполне хороши:

http://hgbook.red -bean.com / чтение / СОТРУДНИЧАЮЩИЕ-с-другом-people.html # втор: сотрудни: CGi

0 голосов
/ 10 октября 2012

Вы можете попробовать HgLab . Это не совсем hgwebdir; скорее это чисто управляемая реализация Mercurial с сервером push и pull и браузером хранилища.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...