python - 如何使用uwsgi挂载Django App?

标签 python django wsgi uwsgi

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

SERVER_URL:PORT/APP_NAME

我的 uswgi 配置是:

[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。

最佳答案

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

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

关于python - 如何使用uwsgi挂载Django App?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19475651/

相关文章:

flask - 为什么原始 wsgi 应用程序比 flask 应用程序慢?

Python : Why do we need a build tool, 你对 CI 有什么建议?

python - 操作系统错误 : [WinError 6] The handle is invalid when calling subprocess from Python 3. 6

python - 通过沿一个轴堆叠将两个 numpy View 合并为一个 View

php - Django 、Python : Is there a simple way to convert PHP-style bracketed POST keys to multidimensional dict?

django - GeoDjango 对于这个项目来说太多了?

具有多个数据库的 Django 迁移

python - 当服务器未完全消耗请求正文时连接重置

python - 你应该用 wsgi 部署 django 吗?

Python - 显示所有节点属性 Networkx