Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Cr4id3r en 26 Octubre 2014, 15:39 pm



Título: HTML y Pyhton
Publicado por: Cr4id3r en 26 Octubre 2014, 15:39 pm
Buenas a todos,
os comento mi problema, tengo un servidor Apache corriendo con sitios virtuales y con mod_wsgi implementado, hasta aqui todo correcto, ahora viene la duda..
Tengo mi aplicación en Python preparada:
Código:
import serial

a = serial.Serial('/dev/ttyACM0', 9600)
while 1 == 1:
               a.write(1)

Necesito ejecutar esto desde una interfaz web, lo he realizado de la forma mas cazurra que se me ha ocurrido que ha sido en el html ingresar lo siguiente:

Código:
<a href="ruta del python"><button>Encender</button></a>

Esto no funciona, era de esperar  :xD
¿Sabeis como podria implementarle en la interfaz web?


Título: Re: HTML y Pyhton
Publicado por: engel lex en 26 Octubre 2014, 15:44 pm
esto puede servirte?

http://stackoverflow.com/questions/9145517/executing-a-python-script-in-apache2 (http://stackoverflow.com/questions/9145517/executing-a-python-script-in-apache2)

http://www.linux.com/community/blogs/129-servers/757148-configuring-apache2-to-run-python-scripts (http://www.linux.com/community/blogs/129-servers/757148-configuring-apache2-to-run-python-scripts)



Título: Re: HTML y Pyhton
Publicado por: Cr4id3r en 26 Octubre 2014, 17:57 pm
Gracias por responder engel lex,
puede que me sirva, pero antes necesito saber que error me da, para ello necesito ejecutarlo, es decir a lo que me vengo refiriendo es que necesito ejecutarlo.
Como si en el terminal escribiera "python on.py"
¿Sabes con que código puedo hacer un boton que lo llame? O si es necesario declararlo como una función y llamar a la función, me es indiferente el método.
Mi árbol de directorios lo tengo dispuesto de esta manera ahora mismo

Código:
testing/
├── __init__.py
├── manage.py
├── public_html
│   └── index.html
└── testing
    ├── __init__.py
    ├── off.py
    ├── on.py
    ├── settings.py
    ├── test.wsgi
    ├── urls.py
    └── wsgi.py

El conf del servidor virtual lo tengo dispuesto de esta manera:

Código:
<VirtualHost *:80>

        ServerName test.com
        ServerAlias www.test.com
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/testing/public_html/
        WSGIScriptAlias /var/www/testing/public_html /var/www/testing/testing/test.wsgi



        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined


</VirtualHost>

¿Alguna idea? :)


Título: Re: HTML y Pyhton
Publicado por: MinusFour en 26 Octubre 2014, 19:40 pm
Tienes mod_python para Apache:

http://modpython.org/

Lo instalas y deberias poder correr .py con solo llarmalo desde la URL. Depende de ti si quieres poner un AJAX a un boton para que llame al archivo.


Título: Re: HTML y Pyhton
Publicado por: Cr4id3r en 26 Octubre 2014, 20:15 pm
MinusFour,
antes de nada muchas gracias por participar, desde un principio estuve viendo las opciones y mod_python estaba entre ellas, el problema esta en que mod_python por lo que he leido ya esta obsoleto y tiene riesgos de seguridad, asi que me gustaria hacerlo de la forma correcta directamente.
Pero nuevamente muchas gracias por participar.


Título: Re: HTML y Pyhton
Publicado por: MinusFour en 26 Octubre 2014, 20:43 pm
¿Exactamente cual es el problema con tu modulo WSGI entonces? ¿Se ejecuta o no tu script? Revisa el log de errores de apache por si se ejecuto el programa, pero si hubo algun fallo.


Título: Re: HTML y Pyhton
Publicado por: Cr4id3r en 26 Octubre 2014, 21:52 pm
No se ejecuta el script y me da la impresión de que me estoy inventando el codigo para llamar al modulo python.
En el log no tengo ningun error.
 :rolleyes:
Le estoy echando un vistazo a django haber si puedo solucionar algo


Título: Re: HTML y Pyhton
Publicado por: MinusFour en 26 Octubre 2014, 23:29 pm
No se ejecuta el script y me da la impresión de que me estoy inventando el codigo para llamar al modulo python.
En el log no tengo ningun error.
 :rolleyes:
Le estoy echando un vistazo a django haber si puedo solucionar algo

¿Llamas al script, pero no se ejecuta? ¿Te regresa el texto del script? Vas a tener que asegurarte que tengas el handler puesto correctamente. Me parece que hay unas directivas del modulo que puedes usar para eso:

Código:
WSGIScriptAlias

Mira la documentación de mod wsgi:

https://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide

Y ojo que el mod_wsgi no es para ejecutar cualquier codigo en python, si no que tiene que implementar la especificacion de WSGI. Creo que es posible desde un controlador de Django (ya que este si la implementa).

De lo contrario vas a tener que correr el archivo python por CGI o por el modulo mod_python.


Título: Re: HTML y Pyhton
Publicado por: Cr4id3r en 27 Octubre 2014, 20:01 pm
MinusFour, por lo que estoy viendo mi problema esta viniendo de Django, voy a estudiarlo un poco y haber que saco en claro, en cuanto lo solucione posteo para que todos tengamos la solución 😉


Título: Re: HTML y Pyhton
Publicado por: MinusFour en 27 Octubre 2014, 20:32 pm
MinusFour, por lo que estoy viendo mi problema esta viniendo de Django

¿Estás usando Django? Hasta donde tenia entendido, tu querias correr una aplicación de python que no se adhiere al estandard WSGI de python. Aunque mencione que puedes ejecutar el código desde un controlador de Django, yo creo que es mucho para montarse una aplicación tan sencilla. Claro que si ahora te estas pensando en montarte toda una web por Django pues entonces si.

Desde mi punto de vista lo mejor sería leerse WSGI:

Ejemplo de Script

Código
  1. def application(environ, start_response):
  2.    status = '200 OK'
  3.    output = 'Hello World!'
  4.    #Tu Codigo aqui
  5.  
  6.    response_headers = [('Content-type', 'text/plain'),
  7.                        ('Content-Length', str(len(output)))]
  8.    start_response(status, response_headers)
  9.  
  10.    return [output]

Configuracion del VirtualHost:

Código
  1. <VirtualHost *:80>
  2.  
  3.    ServerName www.example.com
  4.    ServerAlias example.com
  5.    ServerAdmin webmaster@example.com
  6.  
  7.    DocumentRoot /usr/local/www/documents
  8.  
  9.    <Directory /usr/local/www/documents>
  10.    Order allow,deny
  11.    Allow from all
  12.    </Directory>
  13.  
  14.    WSGIScriptAlias /myapp /usr/local/www/wsgi-scripts/myapp.wsgi
  15.  
  16.    <Directory /usr/local/www/wsgi-scripts>
  17.    Order allow,deny
  18.    Allow from all
  19.    </Directory>
  20.  
  21. </VirtualHost>


Título: Re: HTML y Pyhton
Publicado por: Cr4id3r en 31 Octubre 2014, 17:15 pm
Finalmente ya he conseguido solucionarlo,
me faltaba un archivo y configurar correctamente el sitio.conf de sites-available
en primer lugar he tenido que crear un archivo que controle las peticiones, lo creamos donde queramos, en mi lugar lo cree en el proyecto.

proyecto.wsgi
Código:
import os
import sys
sys.path = ['/var/www/testing'] + sys.path
os.environ['DJANGO_SETTINGS_MODULE'] = 'testing.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Ahora configuramos nuestro sitio virtual proyecto.conf en sites-available
Código:
<VirtualHost *:80>
WSGIScriptAlias / /var/www/testing/testing.wsgi

Servername test.com
Alias /static /var/www/testing/static/

<Directory /var/www/testing/>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Se ve que me fui demasiado por las ramas   :xD

Ahora que ya tengo el entorno preparado, empezare el proyecto, si todo sale bien intentare realizar un tutorial para controlar componentes electronicos por interfaz web.
Un saludo y muchas gracias por la aydua ;)