2012-08-29 12 views
16

Dopo aver fallito ripetutamente nel mio tentativo di far funzionare la mia bottiglia su Apache usando mod_wsgi ho deciso di provare a eseguire lo hello world example. Ecco quello che ho -Hello World in mod_wsgi

Directory Structure (ho cambiato il default apache /var/www a ~/public_html)

- public_html  
    - wsgi-scripts 
     - test_wsgi.wsgi 
    - test_wsgi 
     - test_wsgi.wsgi 

file di test_wsgi.wsgi

def application(environ, start_response): 
    status = '200 OK' 
    output = 'Hello World!' 

    response_headers = [('Content-type', 'text/plain'), 
         ('Content-Length', str(len(output)))] 

    start_response(status, response_headers) 

    return [output] 

di file di configurazione VirtualHost (chiamato testwsgi) - Questo risiede in /etc/apache2/sites-enabled/

<VirtualHost *:80> 
    DocumentRoot ~/public_html/test_wsgi 

    <Directory ~/public_html/test_wsgi> 
     Order allow,deny 
     Allow from all 
    </Directory> 

    WSGIScriptAlias /wsgi ~/public_html/wsgi-scripts/test_wsgi.wsgi 

    <Directory ~/public_html/wsgi-scripts> 
     Order allow,deny 
     Allow from all 
    </Directory> 
</VirtualHost> 

Quando provo andando a localhost/wsgi sul browser ottengo un errore 404 Not Found. Che cosa sto facendo di sbagliato? Questa è la prima volta che cerco di distribuire un'applicazione su un server di produzione. Fino ad ora ho preso il modo semplice di utilizzare Google App Engine. Non posso procedere alla distribuzione della mia app per flask fino a quando questa non sarà operativa. Molte grazie!

risposta

12

è necessario utilizzare un percorso assoluto, vale a dire non utilizzare ~. Questo funziona bene per me ...

[[email protected] public_html]$ sudo cat /etc/apache2/sites-available/wsgi_test 
<VirtualHost *:80> 
    ServerName wsgihost 
    DocumentRoot /home/mpenning/public_html 
    WSGIScriptAlias//home/mpenning/public_html/test.wsgi 
</VirtualHost> 
[[email protected] public_html]$ 

Per prima cosa ho istituito un hostname in /etc/hosts, così ho potuto verificare che posso mux sul nome host nella query ...

[[email protected] public_html]$ grep wsgihost /etc/hosts 
127.0.1.1  tsunami.foo.net tsunami wsgihost 
[[email protected] public_html]$ 

Riavviare apache , ed emettere un wget ...

[[email protected] public_html]$ wget http://wsgihost/ 
--2012-08-29 05:50:26-- http://wsgihost/ 
Resolving wsgihost... 127.0.1.1 
Connecting to wsgihost|127.0.1.1|:80... connected. 
HTTP request sent, awaiting response... 200 OK 
Length: 12 [text/plain] 
Saving to: âindex.html.3â 

100%[======================================>] 12   --.-K/s in 0s 

2012-08-29 05:50:26 (1.48 MB/s) - âindex.html.3â 

[[email protected]nami public_html]$ cat index.html 
Hello World![[email protected] public_html]$ # <------