Mercurial и hgweb на IIS 7.5 - ошибка Python

Я пытаюсь получить Mercurial для размещения на IIS 7.5 (Win 7 x64) и продолжаю сталкиваться с ошибкой, которую я не могу исправить.

Я следовал учебному пособию Джереми Скиннерса здесь: Mercurial на IIS7

Вместо hgwebdir я использую hgweb, так как использую Mercurial 1.7.2

У меня установлен и работает Python. Я установил приложение IIS для Mercurial по адресу http://localhost/hg -> в каталоге c: \ inetpub \ wwwroot \ hg

Я поместил каталог шаблонов в c: \ inetpub \ wwwroot \ hg Я извлек файл library.zip в c: \ inetpub \ wwwroot \ hg

Когда я заходил на сайт, я получал сообщение об ошибке -> Файл "C:\inetpub\wwwroot\hg\hgweb.cgi", строка 15, из mercurial import demandimport; demandimport.enable() ImportError: Нет модуля с именем mercurial ".

При поиске этой ошибки я нашел следующие ответы: /questions/12780844/oshibka-nastrojki-mercurial-na-windows-server-2008

После принятого ответа я изменил свой hgweb.cgi, чтобы он выглядел так:

#!c:/python/python26/python.exe
#
# An example hgweb CGI script, edit as necessary
# See also https://www.mercurial-scm.org/wiki/PublishingRepositories

# Path to repo or hgweb config to serve (see 'hg help hgweb')
config = "/path/to/repo/or/config"

# Uncomment and adjust if Mercurial is not installed system-wide:
import sys; sys.path.insert(0, "c:\inetpub\wwwroot\hg")

# Uncomment to send python tracebacks to the browser if an error occurs:
#import cgitb; cgitb.enable()

from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb import hgweb, wsgicgi
application = hgweb('c:\inetpub\wwwroot\hg\hgweb.config')
wsgicgi.launch(application)

После этого я все еще получаю ту же ошибку. Я понятия не имею, что еще делать. Любая помощь будет принята с благодарностью.

Эди 1: Снимок экрана c: \ inetpub \ wwwroot \ hg согласно запросу: Мой каталог Hg

4 ответа

Решение

Я боролся с той же самой установкой в ​​течение прошлой недели или около этого.

Мне кажется, что они недавно внесли некоторые существенные изменения в работу Mercurial в IIS, поэтому ссылка выше на учебник Джереми Скиннера будет проблематичной для 1.7.2

Это более свежая ссылка, которую я обнаружил, я должен был сделать пару вещей по-другому.

Эти инструкции для 1.7.x, если вы используете 1.8.x, обязательно прочитайте комментарий Этана ниже!

Я следовал инструкциям в комментариях /contrib/win32/hgwebdir_wsgi.py.

  • Установите Python 2.6.6

  • Добавьте Python в систему PATH (чтобы облегчить жизнь)

  • Установите pywin32 v214 (с помощью программы установки Python, важно!) (Обратите внимание, что это сделано для Python 2.6)

  • Установите isapi_wsgi

  • скачайте пакет с исходным кодом Mercurial
    Извлечь, затем запустить

    python setup.py --pure build_py -c -d . build_ext -i build_mo --force
    python setup.py --pure install --force
    
  • Скопируйте hgwebdir_wsgi.py из / contrib / win32 в папку, из которой вы хотите его разместить.

  • Создайте файл hgweb.config в папке, из которой вы собираетесь разместить. Добавить содержимое

    [путь]
    yourRepoName = c:\yourRepoLocation
    
  • Отредактируйте hgwebdir_wsgi.py, чтобы указать hgweb.config. path_prefix равно 0, если hg является корнем сайта. если вы помещаете его в глубину 1 вдира, то это 1 и т. д.

  • Запустите python hgwebdir_wsgi.py, чтобы создать isapi dll _hgwebdir_wsgi.dll. Консоль должна распечатать "установка завершена"

  • Создайте пул приложений в IIS (без управляемого кода)

  • Создайте свой веб-сайт с папкой, установленной в ту же папку, что и hgwebdir_wsgi.py

  • Добавьте обработчик типа Module, используйте "*" в качестве отображения, выберите _hgwebdir_wsgi.dll в качестве исполняемого файла, выберите isapimodule в качестве типа, Mercurial-ISAPI в качестве имени (хотя имя на самом деле не имеет значения)

  • Отредактируйте функциональные разрешения модуля, чтобы разрешить выполнение.

web.config (для предыдущих 2 шагов):

<system.webServer>
<handlers accessPolicy="Read, Execute, Script">
<add name="Mercurial-Isapi" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\inetpub\hgweb\_hgwebdir_wsgi.dll" resourceType="Unspecified" />
</handlers>
</system.webServer>

После всего этого я смог заставить его работать.

И последнее, я скопировал MFC71.dll в windows/system32, хотя я не уверен, что это было необходимо http://python.net/crew/skippy/win32/

Я думаю, что основное различие между тем, что у меня здесь есть, и тем, что находится по вышеуказанной ссылке, заключается в том, что я выполнил установку "чистого питона", хотя я и новичок в питоне, поэтому не уверен. Кроме того, я выполнил "установку на python" для pywin и isapi_wsgi, а не для простых окон msis.

Я написал последние инструкции о том, как настроить хранилище Mercurial на IIS7, используя текущие версии Mercurial (1.8.x), а также текущую версию Python (2.7).

Это сработает для вас, и я буду признателен, если вы воспользуетесь им, чтобы проголосовать за ответ (вверх или вниз;)).

Адам Боддингтон написал обновленное описание установки, которое работает сейчас: http://stackingcode.com/blog/2011/02/24/running-a-mercurial-server-on-iis-7-5-windows-server-2008-r2

У меня было много ошибок раньше. Удалил все python, pywin32, isapi_wsgi и установил его, как указано выше. Это работало как ветер. Люк

Другие вопросы по тегам