2010-12-04 11 views
9

Estoy tratando de obtener Mercurial para alojar en IIS 7.5 (Win 7 x64) y seguir corriendo en un error que parece que no puedo solucionar.Mercurial y hgweb en IIS 7.5 - error de pitón

He seguido Jeremy Skinner tutorial aquí: Mercurial on IIS7

En lugar de hgwebdir, utilizo hgweb como yo estoy usando Mercurial 1.7.2

tengo Python instalado y funcionando. He creado una aplicación IIS para Mercurial en http://localhost/hg -> en el directorio c: \ inetpub \ wwwroot \ hg

coloqué el directorio de plantillas en c: \ inetpub \ wwwroot \ hg extraje el archivo en c library.zip : \ inetpub \ wwwroot \ hg

Cuando visité el sitio, recibí un error -> Archivo "C: \ inetpub \ wwwroot \ hg \ hgweb.cgi", línea 15, desde mercurial import demandimport; demandimport.enable() ImportError:. Sin módulo denominado mercurial"

Durante la búsqueda de este error, he encontrado las siguientes respuestas: https://stackoverflow.com/questions/2123798/

A raíz de la respuesta aceptada, he cambiado de hgweb.cgi a tener este aspecto:

#!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) 

Después de hacer eso, sigo teniendo el mismo error no tengo idea de qué otra cosa hacer Cualquier ayuda sería muy apreciada

Edi 1:... Captura de pantalla de c: \ inetpub \ wwwroot \ hg según solicitud: My Hg directory

+0

¿Podría publicar una captura de pantalla o lo que sea de los contenidos de c: \ inetpub \ wwwroot \ hg? Tal vez los archivos hayan terminado en un subdirectorio de lo que se supone que deben hacer. –

+0

@Lasse publicó la captura de pantalla según su pedido. – thorkia

+0

Tuve el mismo error e investigué la solución luego creé [instrucciones completas para configurar mercurial hgweb en iis7] (http://www.firegarden.com/software/hosting-mercurial-repo-iis7-windows-server-2008r2-x64 -python-isapi-cgi) – Firegarden

Respuesta

15

He estado luchando con esta misma configuración durante la última semana más o menos.

A mi me parece como que han hecho algunos cambios significativos en la forma en mercurial obras en IIS recientemente, por lo que el enlace anterior para Jeremy Skinner tutorial ser problemático para 1.7.2

Esta es una more recent link me di tenía que hacer un par de cosas de manera diferente.

Estas instrucciones son para 1.7.x, si está utilizando 1.8.x, ¡asegúrese de leer el comentario de Ethan a continuación!

Seguí las instrucciones en the comments of /contrib/win32/hgwebdir_wsgi.py.

  • Instalar Python 2.6.6

  • Añadir Python para PATH del sistema (para hacer vida más fácil)

  • Instalar pywin32 v214 (utilizando el pitón instalador , Importante!) (Nota que esta se construye contra python 2.6)

  • Instalar isapi_wsgi

  • download the mercurial source package
    Extracto, a continuación, ejecutar

     
    python setup.py --pure build_py -c -d . build_ext -i build_mo --force 
    python setup.py --pure install --force 
    
  • Copia hgwebdir_wsgi.py desde/contrib/Win32 a la carpeta que desea alojar desde.

  • Cree un archivo hgweb.config en la carpeta desde la que va a hospedar. Añadir el contenido

     
    [paths] 
    yourRepoName = c:\yourRepoLocation 
    
  • Editar hgwebdir_wsgi.py señalar la hgweb.config . path_prefix es 0 si hg es la raíz del sitio web. Si que está poniendo en un vdir 1 profundo, entonces es 1, etc.

  • Run hgwebdir_wsgi.py pitón para crear la DLL _hgwebdir_wsgi.dll isapi. consola debe imprimir "instalación completa"

  • Crea tu grupo de aplicaciones en IIS (sin código administrado)

  • crear su sitio web, con la carpeta conjunto a la misma carpeta que hgwebdir_wsgi.py

  • Agregar controlador del tipo de módulo, utilizar "*" como el mapeo, seleccione _hgwebdir_wsgi.dll que el ejecutable, seleccione IsapiModule como el tipo, Mercurial-ISAP Yo como el nombre (aunque el nombre en realidad no importa)

  • Editar los permisos de función del módulo para permitir la ejecución.

web.config (para los 2 pasos anteriores):

<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> 

Después de todo esto, yo era capaz de conseguir que funcione.

Una última cosa, yo no copiar mfc71.dll a windows/system32, aunque no estoy seguro de que era necesario http://python.net/crew/skippy/win32/

Creo que la diferencia principal entre lo que tengo aquí y lo que está en el El enlace de arriba es que hice la instalación mercurial de "python puro", aunque soy un novato completo de Python, así que no estoy seguro. También hice las "instalaciones de Python" para pywin e isapi_wsgi en lugar de las ventanas simples msis.

+0

Todo funciona bien hasta que llego a este paso: Ejecute python hgwebdir_wsgy.py para crear isapi dll _hgwebdir_wsgy.dll. Consola debe imprimir "instalación completa" me sale el siguiente error: Rastreo (llamada más reciente pasado): Archivo "hgwebdir_wsgi.py", línea 61, en isapi_wsgi importación ImportError: Sin módulo denominado isapi_wsgi – thorkia

+0

seguido todas sus instrucciones , y cuando visito http: // localhost/hg/obtengo el directorio no aparece el error de archivos ... ¿Hay algo más que deba hacer? – thorkia

+0

Parece que olvidé un paso muy importante, instalando isapi_wsgi. Lo agregué y agregué el enlace de arriba. Lo siento mucho por eso. – Brook

1

Tuve muchos errores antes. Desinstalado todos los python, pywin32, isapi_wsgi y dinstalled como arriba. Funcionó como una brisa. Luc

3

escribí up to date instructions on how to setup a mercurial repository on IIS7 utilizando las versiones actuales de Mercurial (1.8.x), así la versión actual de Python (2.7).

Esto funcionará para usted y le agradecería si lo utiliza para votar la respuesta (o hacia abajo;)).

+0

Finalmente un tutorial que funciona con el servidor de Windows de 64 bits 2008, IIS 7, Python 2.7 y Mercurial 1.7.2+. ¡Gracias! –

Cuestiones relacionadas