Как настроить Mercurial и hgwebdir на IIS?

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

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

Ответ 1

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

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

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

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

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

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

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

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

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

Ответ 2

Похоже, что с момента выпуска 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/. Я бы выбрал это в одно мгновение, когда я изначально работал над этим проектом.

Ответ 3

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

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

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

Ответ 5

Ниже я сделал то, что сделал после проведения большого количества исследований для получения установки 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". Проверьте оба механизма Script и убедитесь, что файл существует.
  • На вкладке "Безопасность каталога" нажмите кнопку "Изменить" в разделе "Проверка подлинности" и "Контроль доступа". Снимите отметку со всех методов проверки подлинности и проверьте метод "Basic authenification". Установите домен по умолчанию, если вам нравится домен 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 в своем веб-каталоге.

Сейчас самое время проверить это. Перейдите по следующему URL-адресу в браузере, 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

Ответ 6

Используйте mercurial для клонирования ртутного хранилища:

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

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

Ответ 7

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

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

Полные инструкции размещены здесь

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

Основные отличия заключаются в том, что я должен был установить "чистый python" установление меркуриального, иначе он будет жаловаться на недостающие DLL, а я что важно использовать "инсталляторы python" для pywin и isapi-wsgi. (возможно, это очевидно для опытных разработчиков python, но я новичок в python, так что это были новости для меня)

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

Ответ 9

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

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

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

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

Ответ 10

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