如何使用uwsgi挂载Django应用?

5
我正在使用uwsgi部署Django应用程序。 我希望该应用程序可以通过以下方式访问:
SERVER_URL:PORT/APP_NAME

我的uwsgi配置如下:

[uwsgi]
http=:PORT
threads = 10
die-on-term=true
chdir = /dir/to/my/app/
home = /dir/to/my/app/
logto = /dir/to/log/LOG.log    
wsgi-file = /dir/to/my/app/main_package/wsgi.py
mount = /APP_NAME=/dir/to/my/app/main_package/wsgi.py

我无法让挂载点工作。

我得到的应用程序是在SERVER_URL:PORT下而不是SERVER_URL:PORT/APP_NAME下。

我得到的日志如下:

*** Starting uWSGI 1.9.14 (64bit) on [Sun Oct 20 11:12:49 2013] ***
compiled with version: 4.6.3 on 15 October 2013 13:08:46
os: Linux-3.2.0-29-generic #46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 2012
nodename: SERVER_URL
machine: x86_64
clock source: unix
detected number of CPU cores: 1
current working directory: /
detected binary path: /dir/to/my/app/bin/uwsgi
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 
*** WARNING: you are running uWSGI without its master process manager ***
your processes number limit is 15886
your memory page size is 4096 bytes
detected max file descriptor number: 1024
building mime-types dictionary from file /etc/mime.types...530 entry found
lock engine: pthread robust mutexes
uWSGI http bound on :8016 fd 4
spawned uWSGI http 1 (pid: 21029)
uwsgi socket 0 bound to TCP address 127.0.0.1:60322 (port auto-assigned) fd 3
Python version: 2.7.3 (default, Apr 10 2013, 06:31:07)  [GCC 4.6.3]
Set PythonHome to /dir/to/my/app/
Python main interpreter initialized at 0x22c6830
python threads support enabled
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 165584 bytes (161 KB) for 10 cores
*** Operational MODE: threaded ***
WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x22c6830 pid: 21028 (default app)
mounting /dir/to/my/app/main_package/wsgi.py on /APP_NAME
WSGI app 1 (mountpoint='/APP_NAME') ready in 0 seconds on interpreter 0x276e1b0 pid: 21028
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI worker 1 (and the only) (pid: 21028, cores: 10)

我也尝试从uswgi配置中删除wsgi-file,只保留mount配置。我得到了以下结果:

mounting /dir/to/my/app/main_package/wsgi.py on /APP_NAME
WSGI app 0 (mountpoint='/APP_NAME') ready in 0 seconds on interpreter 0x24ae780 pid: 11515 (default app)

应用程序仍未正确挂载。

如何挂载我的应用程序?

附注:我想避免使用nginx。


added in the original message - Tamar
不知道,希望这个页面能有所帮助... 顺便说一下,我认为值得尝试 nginx - yakiang
1个回答

5

nginx无法将正确的SCRIPT_NAME(和PATH_INFO)传递给uWSGI。您需要使用--manage-script-name告诉uWSGI自行进行翻译。

顺便说一下,您不需要wsgi-file,因为mount已经加载了它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接