2012-08-29 13 views
16

Nach wiederholtem Fehlschlag in meiner Suche, um meine Kolben-Anwendung auf Apache mit mod_wsgi laufen zu lassen, entschied ich mich zu versuchen, die hello world example zu laufen. Hier ist, was ich habe -Hallo Welt in mod_wsgi

Verzeichnisstruktur (änderte ich den Apache-Standard /var/www zu ~/public_html)

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

test_wsgi.wsgi Datei

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] 

Virtualkonfigurationsdatei (genannt testwsgi) - hierfür liegt 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> 

Wenn ich versuche, im Browser auf localhost/wsgi zu gehen, erhalte ich einen Fehler 404 Not Found. Was mache ich falsch? Dies ist das erste Mal, dass ich versuche, eine App auf einem Produktionsserver bereitzustellen. Bis jetzt habe ich den einfachen Weg zur Nutzung von Google App Engine genommen. Ich kann nicht fortfahren, meine Flaschen-App bereitzustellen, bis dies funktioniert. Danke vielmals!

Antwort

12

Sie müssen einen absoluten Pfad verwenden, d. H. ~ nicht verwenden. Dies funktioniert gut für mich ...

[[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]$ 

Zuerst habe ich einen Hostnamen in /etc/hosts einrichten, so konnte ich sicher, dass ich auf dem Hostnamen in der Abfrage Mux kann ...

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

Starten Sie Apache und geben ein wget aus ...

[[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] public_html]$ cat index.html 
Hello World![[email protected] public_html]$ # <------