Mercurial и hgweb на IIS 7.5 - ошибка Python - PullRequest
9 голосов
/ 04 декабря 2010

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

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

Вместо 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,из ртути импорт импорт спрос спрос;demandimport.enable () ImportError: Нет модуля с именем mercurial ".

При поиске этой ошибки я нашел следующие ответы: /1621371/oshibka-nastroiki-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)

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

Edi 1: Снимок экрана c: \ inetpub \ wwwroot \ hg согласно запросу: My Hg directory

Ответы [ 4 ]

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

Я боролся с такой же настройкой на прошлой неделе или около того.

Мне кажется, что они недавно внесли некоторые существенные изменения в работу 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 в папке, из которой вы собираетесь разместить.Добавьте содержимое

    [paths]
    yourRepoName = c:\yourRepoLocation
    
  • Отредактируйте hgwebdir_wsgi.py, указав hgweb.config.path_prefix равно 0, если hg является корнем сайта.если вы помещаете его в глубину vdir 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/

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

3 голосов
/ 28 июня 2011

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

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

3 голосов
/ 25 марта 2011

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

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

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

...