我正在寻找对以下问题的过于简化的答案。我试图建立对 Nginx 如何与 Gunicorn 之类的东西一起工作的基本理解。
我是否需要 Nginx 和 Gunicorn 之类的东西才能在 Nginx 上部署 Django 应用程序?
如果是这样,实际处理 HTTP 请求的是什么?
附言。我不想使用 Apache 和 mod_wsgi!
关于在部署Django应用时如何配置nginx配合uWGSI的教程有很多。
但是为什么我需要在这个套件中使用 nginx?uWSGI 本身可以服务 WSGI Python 应用程序,可以服务静态文件,也可以做 SSL。nginx 可以做什么而 uWSGI 不能?
使用我的 Django 应用程序,我可以很好地从数据库中读取数据。当应用程序没有访问文件的权限时,它给了我这个错误:
尝试写一个只读数据库
这是有道理的。所以我编辑了文件的权限,让Apache进程有写权限。但是,我收到了这个神秘的错误,而不是能够写入:
无法打开数据库文件
如果它有用,这里是整个输出:
Request Method: POST
Request URL: http://home-sv-1/hellodjango1/polls/1/vote/
Exception Type: OperationalError
Exception Value:
unable to open database file
Exception Location: /usr/lib/pymodules/python2.5/django/db/backends/sqlite3/base.py in execute, line 193
Python Executable: /usr/bin/python
Python Version: 2.5.2
Python Path: ['/var/www', '/usr/lib/python2.5', '/usr/lib/python2.5/plat-linux2', '/usr/lib/python2.5/lib-tk', '/usr/lib/python2.5/lib-dynload', '/usr/local/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages', '/usr/lib/pymodules/python2.5', '/usr/lib/pymodules/python2.5/gtk-2.0']
Server time: Sun, 23 Aug 2009 07:06:08 -0500
Run Code Online (Sandbox Code Playgroud)
如果需要堆栈跟踪,请告诉我。
我有一个在 Gunicorn 上运行的 Django 站点,通过 Nginx 使用反向代理。Nginx 不就是额外的不必要的开销吗?在 Gunicorn 之上添加它有什么帮助?
不记得在哪里,但我读到 uWSGI 可以像 Django 开发服务器一样在修改项目脚本时重新加载自身。我在文档和互联网中都找不到。我怎样才能做到这一点?
我在我的工作机器上使用 Ubuntu 12.04,在舞台和生产服务器上使用 Debian Squeeze,Django 1.4 和 uWSGI 1.2。
假设我有 2 个站点(超级用户和 Serverfault)在一个机器上从他们自己的 Apache 虚拟主机运行。这两个站点由 Django 提供支持,并使用 mod-wsgi 在 Apache 上运行。站点之一的典型配置文件如下所示:
WSGIDaemonProcess serverfault.com user=www-data group=www-data processes=5
Run Code Online (Sandbox Code Playgroud)
主机是一台运行 Ubuntu 的具有 4GB RAM 的 linux 机器。任何人都可以建议我应该在上面为我的 2 个站点指定的进程数吗?假设它们与实际的超级用户和 Serverfault 站点具有相同的流量。
我有一个 Django 设置,在 Ubuntu 14.04 LTS 上使用 Django 1.6.7 和 Postgres 9.3。
在任何给定时间,该站点大约有 250 个同时连接到 PostgreSQL 数据库,该数据库是 2.5GHz 的四核 Xeon E5-2670,具有 16GB 的内存。该特定机器上全天的平均负载约为 20 到 30。
有时,我会在哨兵中收到有关数据库连接超时的电子邮件,我认为启用某种连接池将有助于缓解此问题,并稍微降低数据库的负载。
由于我们使用的是 Django 1.6,因此我们可以使用内置池。但是,当我将 CONN_MAX_AGE 设置为 10 秒或 60 秒时,同时连接的数量几乎立即跳到允许的最大设置(大约是我们通常看到的两倍),并且连接开始被拒绝。
所以,出现什么都原因,连接ARE坚持,但他们不被重用。
这可能是什么原因?
附注。我们还使用带有 --worker-class=eventlet 的 gunicorn。也许这就是我们痛苦的根源?
我想在生产中使用 Lighttpd 来为 Django 应用程序提供服务,但我发现最近 Nginx 越来越流行。这是为什么?我知道过去 Lighttpd 有内存泄漏,但现在不是修复了吗?他们确实有活跃的开发人员来解决这类问题,不是吗?
我有什么理由应该使用 Nginx 而不是 Lighty 吗?我知道 nginx 是一个很棒的服务器,但它真的那么好并且比 lighty 更好吗?
根据您的经验,Lighttpd 和 Nginx 哪个更适合 Django?我都用过,几乎看不出有什么区别,它们工作得很好......是否有任何用例,其中一个比另一个表现得更好?回答时请同时考虑配置的简单性和效率。
我通常的设置是./manage.py runfcgi daemonize=false port=8098 host=127.0.0.1通过 daemontools 或init.d脚本和 lighty/nginx 作为反向代理启动一个单独的 Django FCGI 进程(如 中)。
哦,如果您觉得其他一些 http 服务器比 Lighty 和 Nginx 更适合 Django,请不要犹豫,分享您的想法。
我正在尝试按照本教程uWSGI使用Django和nginxon进行设置Ubuntu16.04。
一切正常,直到我尝试执行此命令的最后一步(哦,讽刺的是...):
sudo service uwsgi start
Run Code Online (Sandbox Code Playgroud)
如果失败并出现以下错误:
启动 uwsgi.service 失败:未找到单元 uwsgi.service。
其他人似乎得到了类似的错误:
启动 uwsgi.service 失败:单元 uwsgi.service 加载失败:没有这样的文件或目录。
该问题似乎与 Ubuntu 的版本有关。虽然该教程针对的是 Ubuntu 14.04,但它似乎不适用于较新的版本,因为在 15 版中 Ubuntu 从upstartinit daemon切换到systemdinit daemon。
如何使用systemduWSGI 启动 uWSGI 以便它与 nginx 和 Django 一起使用?
django ×10
nginx ×6
uwsgi ×3
lighttpd ×2
apache-2.2 ×1
mod-wsgi ×1
postgresql ×1
sqlite ×1
ubuntu ×1
web-server ×1
wsgi ×1