微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 设置Flask uWSGI nginx的最佳实践

我正在尝试使用Flask,uWsgiNginx的组合来设置我的第一个Web服务器.我已经取得了一些成功获得Flask& amp; uWsgi组件正在运行.我还从各种博客中获得了很多关于如何设置它的技巧.但是,没有一致性,文章提出了许多不同的设置方法,特别是在文件夹结构,Nginx配置和用户/权限方面(我已经尝试了一些这些建议,许多确实有效,但我不确定哪个是最好的).那么有一种基本的“最佳实践”方式来设置这个堆栈吗?

最佳答案
Nginx uwsgi flask是一个强大的堆栈!我将supervisor添加到混合中并按如下方式配置它.

>从主管中运行uwsgiNginx以获得更好的过程控制.然后,您可以在启动时启动主管,它将以正确的顺序运行uwsgiNginx.如果他们死了,它也会智能地试图让他们活着.请参阅下面的示例主管配置.
>如果在同一主机上运行Nginx和uwsgi,请使用unix套接字而不是HTTP.
>如果您的Web服务器正在侦听端口80,则Nginx主进程必须以root身份运行.我通常在其他端口(如8080)上运行我的Web服务器,并使用前面的负载均衡器来侦听端口80和代理到Nginx.
>确保您的uwsgi服务器有权读取/写入您选择的套接文件以及对任何应用程序代码和数据目录的适当权限.

不要太担心你的文件夹结构,特别是如果你使用像Ubuntu这样具有合理认值的Linux发行版.主管理程序配置文件可以包含来自/etc/supervisor/conf.d/等子目录的文件,以将特定于应用程序的配置与管理程序核心配置分开.同样适用于Nginx,只有/ etc / Nginx / sites-enabled.

uwsgiNginx的示例管理器配置:

$cat /etc/supervisor/conf.d/app.conf
[program:app]
command=/usr/local/bin/uwsgi
  --enable-threads
  --single-interpreter
  --vacuum
  --chdir /path/to/app
  --uid www-data
  --log-syslog
  --processes 4
  --socket /tmp/app.sock
  -w mypython:app
  --master
directory=/path/to/app
autostart=true
autorestart=true
priority=999
stopsignal=INT
environment=SOMEVAR=somevalue

[program:Nginx]
command=/usr/sbin/Nginx

autostart=true
autorestart=true

priority=999

示例Nginx.conf:

$cat /etc/Nginx/sites-enabled/myapp.conf
server {
  listen 8080;
  client_max_body_size 4G;
  server_name localhost;
  keepalive_timeout 5;
  location / {
      include uwsgi_params;
      uwsgi_pass unix:///tmp/app.sock;
  }
}

原文地址:https://www.jb51.cc/nginx/434819.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐