Как настроить 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
Ответ 4
Здесь довольно хороший и всеобъемлющий учебник:
http://vampirebasic.blogspot.com/2009/06/running-mercurial-on-windows.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)
Ответ 8
Красная книга hg содержит некоторые более общие общие инструкции, чем я видел в других местах. Они не специфичны для IIS, но они довольно хороши:
http://hgbook.red-bean.com/read/collaborating-with-other-people.html#sec:collab:cgi
Ответ 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-сервера и браузера репозитория.