Вопрос по iis-6, mercurial, python – Хостинг Mercurial с IIS 6

15

Я пытаюсь настроить репозитории Mercurial для размещения на IIS в Windows Server 2003.эта почта Я установил Python 2.5.4.4 и Mercurial 1.3, настроил виртуальный каталог, распаковал library.zip и создал hgwebdir.config.

Тем не менее, когда я пытаюсь открытьHttp: //hostname/hg/hgwebdir.cgi Я получил ошибку & # x201C; Указанное CGI-приложение неправильно работает, поскольку не возвращает полный набор заголовков HTTP. & # X201D; Я все сделал лучше всего:

Checked IIS mappings to both .py and .cgi extensions. I even tried to use FastCGI with no success. Created “Hello World” in the same dir and checked that it works fine. Checked read/exec permissions to Python, IIS and repos directories for IUSR, IWAM and NETWORK SERVICE. Tried to apply two different patches from Mercurial mailing list. Since they both are old I haven't success with it. INstalled Sysinternals' procmon and checked for filesystem errors during request. I found nothing except lots of Buffer Overflow results in Python process while it loads it's libraries. Tried to add 'Content-type: text/html' to the script.

Еще одна вещь, когда я запрашиваю несуществующий файл сценария (например, /hg/inexist.cgi), у меня та же ошибка. Ничего не помогло!

Ваш Ответ

5   ответов
1

что «без заголовков» ошибка возвращается при любой ошибке скрипта Python, поэтому я проверил скрипт с консольным интерпретатором и исправил ошибки в моем конфигурационном файле. И, конечно, я должен задать этот вопрос на ServerFault вместо StackOverflow - недостаток сна сделал свое дело :)

Привет - так в чем же заключалась проблема с cgi? Я все еще страдаю этим.
Я столкнулся с подобной проблемой. Не могли бы вы опубликовать, что вы должны были изменить, чтобы решить вашу проблему?
В моем случае произошла ошибка в конфигурационном файле. Запустите скрипт на локальном компьютере & # x201C; python index.py & # x201D; и проверить вывод. Artem Koshelev
1

который это исправил, было использование: c: \ what \ Python26 \ python.exe -u -O -B & quot;% s & quot; & Quot;% s

До этого не работало с ошибкой:

A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.

 c:\hg\hgweb.cgi in ()
   13 import cgitb; cgitb.enable()
   14 
   15 from mercurial import demandimport; demandimport.enable()
   16 from mercurial.hgweb import hgweb, wsgicgi
   17 application = hgweb(config)
mercurial undefined, demandimport undefined
<type 'exceptions.ImportError'>: No module named mercurial 
      args = ('No module named mercurial',) 
5

Where the various HOWTOs say to use c:\whatever\Python26\python.exe -u "%s" "%s" instead use c:\whatever\Python26\python.exe -u -O -B "%s" "%s" -O causes it to also look for .pyo files (not just .py or .pyc, which at least in my version weren't present). -B causes it to not attempt to compile .py files that it finds into .pyo files (which fails due to lacking write permissions) I'd installed Python 2.7. Mercurial 1.6.2's .pyo files were compiled with Python 2.6. This resulted in a magic number error. Uninstalling 2.7 and installing 2.6.5 fixed this. (If you're reading this at some point in the future, this point may no longer be relevant - check the name of the DLL in Mercurial's directory, or TortoiseHg's directory, depending on where you took library.zip from) hgwebdir.cgi is now just hgweb.cgi - webdir was integrated into it
1

http://vampirebasic.blogspot.com/2009/06/running-mercurial-on-windows.html это поможет вам начать, но если вам нужно больше подробностей или идти дальше, чем писатель, у меня есть блог из 4 частей, который охватывает все, что вам нужно знать о настройке и работе с IIS, включая интеграцию с Active Directory , тянуть / толкать привилегии, настройка интерфейса:

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

Это стоит прочитать ...

1

application = hgwebdir('c:\somewhere\hgweb.config') в hgweb.cgi это должно бытьapplication = hgweb('c:\somewhere\hgweb.config').

Кроме того, раскомментируйте строкуimport cgitb; cgitb.enable() в hgweb.cgi даст вам больше информации об ошибке (и других ошибках).

Постскриптум Я использую Python 2.6.6 и Mercurial 1.7.3 на Windows Server 2003 с IIS 6.0.

Похожие вопросы