2013-07-16 8 views
10

Ok, quindi sto cercando di eseguire Python con Bottle.py, attraverso Apache e mod_wsgi, e non funziona così lontano ...esecuzione Apache + Bottiglia + Python

Sono in esecuzione su Windows , usando un xampp. python v2.7

il codice ho aggiunto al httpd (Apache config):

<VirtualHost *> 
    ServerName example.com 
    WSGIScriptAlias/C:\xampp\htdocs\GetXPathsProject\app.wsgi 
    <Directory C:\xampp\htdocs\GetXPathsProject> 
      Order deny,allow 
      Allow from all 
    </Directory> 
</VirtualHost> 

mio codice app.wsgi:

import os 
os.chdir(os.path.dirname(__file__)) 
import bottle 
application = bottle.default_app() 

e la mia hello.py:

from bottle import route 
@route('/hello') 
def hello(): 
    return "Hello World!" 

quando sto provando ad andare a localhost/ciao ottengo un errore 404 e non ho altri errori sul file di log di Apache probabilmente mancherà qualcosa di base, sarà lieto di ricevere aiuto.

+0

bloccato con lo stesso problema = \ – jbkkd

risposta

6

Non non c'è nessun punto di collegamento dal WSGI file sul hello.py file.
Inserisci il contenuto nel tuo ciao.py nello app.wsgi e riavvia il tuo server web.
Questo dovrebbe risolvere il problema.

Per rendere il vostro modulare applicazione in modo tale che si può mettere il codice in vari file, controllare equivalente di bottiglia di Blueprints (utilizzati da quadro Flask)

+0

tnx! funziona :) –

+0

Siete i benvenuti :) –

2

Non vedo la tua ciao.py referenziata da nessuna parte.

Dovresti solo inserire il contenuto di hello.py (il route) in app.wsgi.

+0

ehi, il suo suono logico, ma si può mostrare il codice che ho bisogno di aggiungere? –

+0

Certo, sto viaggiando così sul mio cellulare ora; pubblicherò il codice quando torno su un computer. Ma fondamentalmente sono solo i due file combinati in uno solo. Se non vuoi aspettare che torni su un laptop, provalo. :) –

+0

bene ho provato e non riuscivo a farlo funzionare con apache, ma ora sono riuscito a eseguirlo senza apache, appena usato il comando run() quando apache è spento, e comunque, sarò più felice se sarò in grado di farlo funzionare con apache –

1

Sto aggiungendo la mia conclusione per le persone che avranno lo stesso problema di ho fatto: come Kneel-Before-ZOD e ron.rothman, ho dovuto scrivere il mio codice nel file WSGI dal momento che Python sta eseguendo il codice da lì, MA se vuoi ottenere i tuoi file py devi IMPORTarli da i file WSGI del genere:

from hello import application 

il "ciao" è il nome di pitone fILE e la "applicazione" è il come si dovrebbe scrivere in yo u PY di file e non in WSGI:

application = bottle.default_app() 

ha avuto anche di riavviare apache ogni volta che ho fatto un cambiamento (e non sapevo che - per questo che la sua mi ha fatto impazzire). tnx per i ragazzi che mi hanno aiutato. GooLuck.

+1

Solo un suggerimento: se usi 'bottle.run (reloader = True)' allora non dovrai riavviare apache ogni volta che apporti una modifica. –

+0

sfortunatamente non puoi usare correre con apache :( –

+0

Il mio male, hai ragione. Ahimè. –

2

Oppure i commenti di Duan sono stati un buon punto di partenza per separare app.wsgi e il file python dell'applicazione. Ma erano un po 'criptici per me capire. Dopo aver lavorato per un paio d'ore, ecco cosa ha funzionato per me:
[BTW, sto lavorando su OSX. Si prega di regolare i percorsi, utente, gruppo in base al proprio sistema operativo]

/Libreria/WebServer/Documenti/hello_app/app.WSGI:

import sys 

sys.path.insert(0, "/Library/WebServer/Documents/hello_app") 

import bottle 
import hello 
application = bottle.default_app() 

/Library/WebServer/Documents/hello_app/hello.py:

from bottle import route 

@route('/hello') 
def hello(): 
    return "Hello World!" 

/etc/apache2/extra/httpd-vhosts.conf:

<VirtualHost *:80> 
    ServerName xyz.com 

    WSGIDaemonProcess hello_app user=_www group=_www processes=1 threads=5 
    WSGIScriptAlias /v1 /Library/WebServer/Documents/hello_app/app.wsgi 

    <Directory /Library/WebServer/Documents/hello_app> 
     WSGIProcessGroup hello_app 
     WSGIApplicationGroup %{GLOBAL} 
     Order deny,allow 
     Allow from all 
    </Directory> 
</VirtualHost> 

Non dimenticare di riavviare il server Apache.

Check the app in the web browser

Problemi correlati