我正在尝试使用 Nginx + uWSGI 运行 Django 应用程序,但没有成功。经过数小时的谷歌搜索和调试,我制作了必须工作的最简单的 uwsgi 配置:
$ uwsgi --http 127.0.0.1:8000 --wsgi-file test.py
test.py 在哪里
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return "Hello World"
问题是:它没有。同一台机器上的 wget 调用挂起:
$ wget http://127.0.0.1:8000
--2013-04-28 12:43:36-- http://127.0.0.1:8000/
Connecting to 127.0.0.1:8000... connected.
HTTP request sent, awaiting response...
uWSGI 输出是静默的(除了初始信息):
*** Starting uWSGI 1.9.8 (32bit) on [Sun Apr 28 12:43:56 2013] ***
compiled with version: 4.4.5 on 28 April 2013 06:22:28
os: Linux-2.6.27-ovz-4 #1 SMP Mon Apr 27 00:26:17 MSD 2009
...
连接实际上已经建立,因为杀死 uWSGI 会中止 wget。
可能 uWSGI 对发生的错误不够详细,或者我一定错过了一些东西。任何进一步查看的提示都将受到赞赏。
更新:
更多系统细节:Debian 6.0.7、Python 2.6.6。
完整的 uWSGI 登录开始:
$ uwsgi --http 127.0.0.1:8000 --wsgi-file test.py
*** Starting uWSGI 1.9.8 (32bit) on [Mon Apr 29 04:50:03 2013] ***
compiled with version: 4.4.5 on 28 April 2013 06:22:28
os: Linux-2.6.27-ovz-4 #1 SMP Mon Apr 27 00:26:17 MSD 2009
nodename: max.local
machine: i686
clock source: unix
detected number of CPU cores: 4
current working directory: /home/user/dir
detected binary path: /home/user/dir/env/ENV/bin/uwsgi
*** WARNING: you are running uWSGI without its master process manager ***
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
uWSGI http bound on 127.0.0.1:8000 fd 4
spawned uWSGI http 1 (pid: 19523)
uwsgi socket 0 bound to TCP address 127.0.0.1:57919 (port auto-assigned) fd 3
Python version: 2.6.6 (r266:84292, Dec 27 2010, 00:18:12) [GCC 4.4.5]
*** Python threads support is disabled. You can enable it with --enable-threads ***
Python main interpreter initialized at 0x80f6240
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 63944 bytes (62 KB) for 1 cores
*** Operational MODE: single process ***
WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x80f6240 pid: 19522 (default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI worker 1 (and the only) (pid: 19522, cores: 1)
没有其他任何东西被打印出来。