2012-04-12 14 views
11

Estoy tratando de comenzar con Python pero no puedo configurar mi servidor correctamente para localhost (usando Ampps). Python funciona perfectamente con IDLE y línea de comandos; sin embargo, cuando abro el archivo en el navegador, el código se muestra y no se ejecuta..py archivo que muestra el código en el navegador en lugar de ejecutar

Seguí este http://www.imladris.com/Scripts/PythonForWindows.html tutorial para obtener cgi configurado, pero no está funcionando.

Aquí está el código para mi programa "hello world", si eso hace la diferencia.

#!/usr/bin/env python 
# -*#!/usr/bin/python 

print "Content-type:text/html\r\n\r\n" 
print '<html>' 
print '<head>' 
print '<title>Hello Word - First CGI Program</title>' 
print '</head>' 
print '<body>' 
print '<h2>Hello Word! This is my first CGI program</h2>' 
print '</body>' 
print '</html>' 

¿Alguna sugerencia?

+0

¿Ha hecho el archivo ejecutable? ¿Han habilitado cgi-scripts en el servidor? –

+2

Después de que esto funcione, compruebe la sintaxis de Python para cadenas de líneas múltiples usando comillas triples como '" "" algo "" "' – jsbueno

+0

@JoachimPileborg Creo que habilité las secuencias de comandos cgi en el servidor, pero no estoy seguro de hacer el archivo ejecutable Cuando veo el archivo (el icono para el archivo en sí, no el código) tiene el logotipo de python, por lo que no estoy seguro si eso significa que es ejecutable. – user1104854

Respuesta

6

Su servidor web está tratando su código python como un archivo estático en lugar de un archivo ejecutable. El objetivo aquí es que quieras que Apache ejecute python y envíe el stdout al navegador del usuario.

No estoy familiarizado con Ampps, pero el flujo básico de Apache para obtener esta configuración es algo como esto.

  1. Editar su línea Opciones de httpd.conf para incluir ExecCGI
  2. Registra tu archivo de pitón con httpd.conf como un controlador CGI añadiendo la siguiente línea:
    AddHandler .py
  3. Reinicia Apache
  4. Asegúrate de que tu línea de shebang (el bit de #!/Usr/bin/env python en la parte superior) realmente apunte a la ruta al ejecutable de tu python. Para python2.6 viviendo en C :, esto podría leer:
    #!\Python26\python
  5. Si las secuencias de comandos deben ser portátil, en lugar de modificar la línea shebang añadir la línea ScriptInterpreterSource registry a su httpd.conf, y asegúrese de que las ventanas se abre * archivos .py con Python.exe de forma predeterminada. Esto se puede probar haciendo doble clic en un script. Si no se ejecuta, haga clic con el botón derecho, elija abrir-con, luego otro, y luego busque su python.exe. Asegúrese de marcar la casilla "Utilizar siempre este programa para abrir archivos de este tipo". Hay un artículo de Microsoft Knowledge Base en este here.

Finalmente, mod_wsgi o FastCGI es el método preferido para hacer que Apache ejecute python, con la preferencia anterior de mantener sitios de tráfico más bajos (10 de miles de solicitudes por día). También aconsejaría buscar marcos web como web.py (muy liviano) o django (más pesado, pero le ahorrará mucho tiempo si está recopilando información del usuario o interactuando con una base de datos).

+0

Ampps fue el primer paquete que vi que tenía Python incorporado así que lo elegí. ¿Hay otros que recomiendas? Yo uso xampp cuando estoy programando con PHP, no estoy seguro si eso lo soporta. – user1104854

+0

No me di cuenta de que "Ampps" era el sabor de las ventanas de Apache: soy principalmente un chico de Linux, y la mayoría de las veces uso Lighttpd. Ver respuesta editada, por favor. –

+1

Además, sería mejor usar mod-wsgi que cgi. Editaré la respuesta nuevamente para reflejar eso y agregar enlaces. –

Cuestiones relacionadas