在我试图让我的烧瓶应用程序运行在Apache上使用mod_wsgi
重复失败后,我决定尝试运行hello世界的例子 。 这是我所拥有的 –
目录结构(我改变了Apache的默认/var/www
~/public_html
)
- public_html - wsgi-scripts - test_wsgi.wsgi - test_wsgi - test_wsgi.wsgi
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]
VirtualHostconfiguration文件(称为testwsgi) – 位于/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>
当我尝试去浏览器上的localhost/wsgi
时,我得到一个404 Not Found错误。 我究竟做错了什么? 这是我第一次尝试在生产服务器上部署应用程序。 到现在为止,我使用了Google App Engine的简单方法。 我不能继续部署我的烧瓶应用程序,直到这是启动和运行。 非常感谢!
你需要使用绝对路径,即不要使用~
。 这对我来说很好…
[mpenning@tsunami 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> [mpenning@tsunami public_html]$
首先,我在/etc/hosts
设置了一个主机名,这样我就可以确保我可以在查询中的主机名上复用…
[mpenning@tsunami public_html]$ grep wsgihost /etc/hosts 127.0.1.1 tsunami.foo.net tsunami wsgihost [mpenning@tsunami public_html]$
重新启动apache,并发出一个wget …
[mpenning@tsunami 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â [mpenning@tsunami public_html]$ cat index.html Hello World![mpenning@tsunami public_html]$ # <------