标签: uwsgi

有没有人在高负载环境中使用过 uwsgi nginx 和 django?

我想知道之前是否有人使用 uwsgi 和 nginx 来服务高负载 django 站点。如果是这样,他们有什么问题吗?

python nginx django uwsgi

5
推荐指数
1
解决办法
2118
查看次数

Docker 如何 Django + uwsgi/gunicorn + nginx?

我无法理解部署使用 uwsgi/gunicorn 的 Django 项目的“正确”方法是什么(我还没有决定使用什么,可能是 uwsgi,因为它具有更好的性能和建议?)和 nginx 使用码头工人。

我看到有些人把所有东西都放在同一个容器里。我不是 docker 的专家,但容器应该只做一 (1) 件事。因此,拥有 Django + nginx 似乎是 2 而不是 1。

现在,我的部署想法是:

  • 带有 Django 和 uwsgi 的容器。在 Dockerfile 的末尾,我运行 uwsgi 脚本。这个容器暴露了 8000 端口
  • 一个带有 nginx 的容器,它链接到 django one。这暴露了端口 80 并将请求代理到 django。

有没有其他方法可以做到?有没有更深入地介绍这种情况的教程。我需要一个可靠的产品,而不仅仅是在我的电脑上测试一些代码。

nginx django uwsgi gunicorn docker

5
推荐指数
1
解决办法
9271
查看次数

Python uWSGI 日志没有读取权限

我正在通过 EC2 Ubuntu 14.04 LTS 在 uWSGI 上运行 Python Flask 服务器。服务器配置如下:

[uwsgi]
http-socket    = :9000
plugin         = python
wsgi-file      = /path/to_wsgi.py
enable-threads = true
Run Code Online (Sandbox Code Playgroud)

但是,日志是使用没有读取访问权限的 root 权限创建的:

$ ls -ltrh /var/log/uwsgi/app
total 34M
-rw-r----- 1 root root 2.3M Jun  4 06:50 reporter-uwsgi.log.2.gz
-rw-r----- 1 root root  24M Jun  5 06:51 reporter-uwsgi.log.1
-rw-r----- 1 root root 8.4M Jun  5 17:27 reporter-uwsgi.log
Run Code Online (Sandbox Code Playgroud)

这是一个烦恼,因为我的一些脚本以普通用户身份运行并解析这些日志。

知道如何配置 uWSGI 以使用全局读取权限写入吗?

ubuntu logging file-permissions amazon-web-services uwsgi

4
推荐指数
1
解决办法
4206
查看次数

普通 uWSGI 错误:uwsgi_response_write_body_do() TIMEOUT

这看起来像是 Nginx+uWSGI 超时的一个众所周知的问题,但我的设置不同,我找不到有关它的信息。

我在 uWSGI 上运行 Flask 应用程序,使用 http 协议(不是套接字)。当我查询 API 时,有时会收到错误消息:

uwsgi_response_write_body_do() TIMEOUT !!!
IOError: : write error
Run Code Online (Sandbox Code Playgroud)

我在“工作时间”收到它的频率更高,即在晚上不那么频繁。我正在查询长 JSON 数据(地理坐标,最多 50 MB),有时我根本没有得到响应,有时我得到了部分响应。这些是来自 Pythonrequests请求的错误:

requests.exceptions.ConnectionError: ('Connection aborted.', error(104, 'Connection reset by peer'))

requests.exceptions.ChunkedEncodingError: ('Connection broken: IncompleteRead(0 bytes read)', IncompleteRead(0 bytes read))

ValueError: Expecting object: line 1 column 5590371 (char 5590370)

ValueError: Unterminated string starting at: line 1 column 20998536 (char 20998535)

ValueError: end is out of bounds

# when I set `timeout=None` in Python
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='mydomain.com', port=80): …
Run Code Online (Sandbox Code Playgroud)

timeout requests uwsgi

4
推荐指数
1
解决办法
2613
查看次数

在Ubuntu上启动uWSGI时,opendir():没有这样的文件或目录[uwsgi.c第471行]

我正在尝试在 Ubuntu 12.04 上启动 uWSGI。

$ sudo service uwsgi start或 时# uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/file.ini,我收到以下错误:

opendir(): No such file or directory [uwsgi.c line 471]

第一个调用将此错误记录到/var/log/uwsgi,第二个调用将此错误输出到stdout

怎么了?

ubuntu uwsgi

3
推荐指数
1
解决办法
1万
查看次数

Django、uWSGI 和 Supervisord 配置

好的,我在我的服务器上设置了 Django、nginx 和 uWSGI……问题是我通过以下命令手动启动了 uWSGI:

uwsgi -s /home/user/sites/sock/uwsgi.sock -t 10 -M -p 1 -C --pythonpath /home/user/sites/ -w mysite.django_wsgi

而且效果很好。我想做的是使用 supervisord 来控制 uWSGI 进程(启动、停止等)。我将如何做到这一点,supervisord 配置会是什么样子?

django uwsgi supervisord

2
推荐指数
1
解决办法
8340
查看次数

Nginx:使用 uwsgi_pass 和 proxy_pass 后备?

是否可以将 Nginx 配置为代理到 uwsgi 服务器 ( ),如果 uwsgi 服务器不可用,则uwsgi_pass回退到标准 http 代理 ( )?proxy_pass

我的开发环境在给定端口上作为标准 HTTP 服务器运行,但在生产中它将在 uWSGI 套接字下运行。我希望能够开发我的应用程序,然后(仍在我的开发机器上)在 uwsgi 服务器下启动应用程序进行测试,而不必每次都切换我的 nginx 配置。如果 nginx 可以配置为尝试使用 uwsgi_pass,但如果出现错误(因为 uwsgi 服务器未运行),则回退到 proxy_pass,那将是理想的选择。

我还可以看到这在生产环境中很方便:通常,只需代理到本地 uwsgi 套接字,但如果由于某种原因不起作用(对于不起作用的某些任意定义),则代理到其他地方的某些辅助 http 服务器。不过,目前对我来说只是为了让开发更方便。

nginx proxy uwsgi

2
推荐指数
1
解决办法
3647
查看次数

当存在 * 并且在一个路径中的日志轮换中有一个显式文件名时,logrotate 的行为如何?

问题有点长!让我用下面的例子来解释。一世

有一个/etc/logrotate.d/用于 uwsgi的日志轮换配置文件:

"/var/log/uwsgi/*.log" "/var/log/uwsgi/*/*.log" {
  copytruncate
  daily
  rotate 5
  compress
  delaycompress
  missingok
  notifempty
}
Run Code Online (Sandbox Code Playgroud)

假设我有大约 12 个 uwsgi 模块,我想保留一个 uwsgi 应用程序日志文件比其他模块多,所以我有如下配置:

/var/log/uwsgi/app/MY_APP.log {
        daily
        missingok
        rotate 60
        compress
        delaycompress
        notifempty
        create 0640 www-data adm
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是我应该如何像上面那样创建日志轮换并保留*其他 11 个模块。我不想用相同的配置创建 11 个日志轮换,我应该怎么做才能只覆盖一个模块?

linux logrotate uwsgi

2
推荐指数
1
解决办法
1009
查看次数

Nginx 启动后无法启动,但使用手动命令可以正常工作

我最近有了一台 Ubuntu 18 服务器,至少可以说我有点困惑。

第一:如果我运行sudo service nginx startsudo systemctl start nginx,一切似乎都有效。我的网站加载,并且都sudo service nginx statussudo systemctl status nginx返回的所有明确的信息。

现在的问题是:当我重新启动我的服务器时,nginx不会自动启动,因为网站没有被加载。我试过sudo systemmctl enable nginx又试了一次重新启动。同样,nginx由于网站未加载而未运行。

事实上,如果我重新启动我的服务器sudo reboot然后sudo service nginx status或者sudo systemctl status nginx我收到一条错误消息。尽管有错误消息,但我可以运行sudo service nginx start或者sudo systemctl start nginx它会全部恢复工作。

我收到的错误消息如下:

(venv) user@server:/data/project$ sudo systemctl status nginx
? nginx.service - A high performance web server and a reverse proxy server
   Loaded: …
Run Code Online (Sandbox Code Playgroud)

nginx uwsgi systemctl

2
推荐指数
1
解决办法
3233
查看次数