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 согласно запросу:
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 и установил его, как указано выше. Это работало как ветер. Люк