运用Nginx代理和UWSGI将Flask项目部署在Linux中 详细步骤

nginx:
安装可以参照的路径:
  http://nginx.org/en/linux_packages.html#Ubuntu

启动Nginx

    nginx     [ -c  configpath]   默认配置目录:/etc/nginx/nginx.conf

查看进程:

    ps -ef |grep nginx

控制Nginx

    nginx -s xxxstop         快速关闭quit        优雅的关闭reload        重新加载配置

nginx的配置:/etc/nginx/nginx.conf  ----》 nginx默认的启动文件

cp一个启动文件到项目目录中 

配置代码内容:


user  root;   -----》 要与master process名称保持相同

运行要用绝对路径
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
          root   /home/liu/flask0923;   -----》 项目目录

        location /static {    -----》 配置静态文件
          alias  /home/liu/flask0923/static;
        }

        location / {    ------》 python相关的文件  对接uwsgi服务器
            include  /etc/nginx/uwsgi_params;
            uwsgi_pass  localhost:8000;   -----》 端口号要注意与uwsgi.ini的保持一致
        }


    }
}


启动: nginx -c  +绝对路径 

如果出现日志log文件错误 命令前 加上  sudo!!!!!!! 

nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
2019/09/25 19:57:51 [warn] 4096#4096: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2
2019/09/25 19:57:51 [notice] 4096#4096: signal process started
2019/09/25 19:57:51 [alert] 4096#4096: kill(3886, 3) failed (1: Operation not permitted)


 

     nginx -c /home/liu/flask0923/nginx.conf

     nginx -s quit

     nginx -s reload

配置: uwsgi

进入虚拟环境 workon中

pip install uwsgi

在项目下:创建uwsgi.ini 文件  !!!!!!!!踩坑用错会无法监听80端口

内容:
[uwsgi]
# 使用nginx连接时 使用
# socket = 0.0.0.0:8000

# 直接作为web服务器使用
http = 0.0.0.0:8000

# 配置工程目录
chdir = /home/running/Documents/day46_blog
wsgi-file = manage.py
# router
callable = app

# 配置项目的wsgi目录。相对于工程目录 django
# chdir = /root/shop/aixianfeng
# wsgi-file = aixianfeng/wsgi.py


#配置进程,线程信息
processes = 4

threads = 10

enable-threads = True

master = True

pidfile = uwsgi.pid

daemonize = uwsgi.log

启动: uwsgi --ini  /home/running/Documents/day46_blog/uwsgi.ini

停止: uwsgi --stop uwsgi.pid

Nginx.conf


user  root;
worker_processes  1;error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;server {listen       80;server_name  localhost;#charset koi8-r;#access_log  /var/log/nginx/host.access.log  main;root   /home/liu/flask0923;location /static {alias  /home/liu/flask0923/static;}location / {include  /etc/nginx/uwsgi_params;uwsgi_pass  localhost:8000;}#error_page   500 502 503 504  /50x.html;#location = /50x.html {#    root   /usr/share/nginx/html;#}}}

uwsgi.ini

[uwsgi]
# 使用nginx连接时 使用
socket = 0.0.0.0:8000# 直接作为web服务器使用
#http = 0.0.0.0:8000# 配置工程目录
chdir = /home/liu/flask0923
wsgi-file = manage.py
# router
callable = app# 配置项目的wsgi目录。相对于工程目录
# chdir = /root/shop/flaskday5
# wsgi-file = aixianfeng/wsgi.py#配置进程,线程信息
processes = 4threads = 10enable-threads = Truemaster = Truepidfile = uwsgi.piddaemonize = uwsgi.log

成功启动uwsgi和nginx 即可将项目成功部署!

root@ubuntu:~# workon flaskenv


(flaskenv) root@ubuntu:~# uwsgi --ini /home/admin/flask0923/uwsgi.ini 

(flaskenv) root@ubuntu:~# nginx -c /home/admin/flask0923/nginx.conf 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习算法之KNN

前言 KNN一般用于有监督的分类场景,除此之外,KNN在异常检测场景中也有应用,下面主要介绍下KNN在这两面的应用原理。 KNN做分类的原理 计算步骤如下: 1)算距离:给定测试对象,计算它与训练集中…

Supermap 组合单值专题图与标签专题图演示样例

效果图例如以下&#xff1a;单值专题图并显示每一个区域的相关文字信息 代码&#xff1a; <!DOCTYPE> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> <title>单值专题图</title>…

[剑指Offer] 25.复杂链表的复制

1 /*2 struct RandomListNode {3 int label;4 struct RandomListNode *next, *random;5 RandomListNode(int x) :6 label(x), next(NULL), random(NULL) {7 }8 };9 */ 10 class Solution 11 { 12 public: 13 //在旧链表中创建新链表&#xff0…

Flask项目中应用七牛云存储

七牛云存储&#xff1a; https://developer.qiniu.com/kodo/sdk/1242/python 点击注册开通七牛开发者帐号 如果已有账号&#xff0c;直接登录七牛开发者后台&#xff0c;点击这里查看 Access Key 和 Secret Key pip install qiniu q Auth(Access Key,Secret Key) b…

异常检测算法之IForest

前言 IForest即孤立森林&#xff0c;可以用于做异常检测。一句话总结IForest做异常检测的原理&#xff1a;异常点密度小&#xff0c;基于树模型容易被一下切割出来&#xff0c;正常值密度大&#xff0c;需要切割多次才能得到目标值。 原理 iForest算法得益于随机森林的思想&…

用c#编写爬虫在marinetraffic下载船仅仅图片

近期在做船仅仅识别方面的事情&#xff0c;须要大量的正样本来训练adaboost分类器。于是到marinetraffic这个站点上下载船仅仅图片。写个爬虫来自己主动下载显然非常方便。 站点特点 在介绍爬虫之前首先了解一下marinetraffic这个站点的一些特点&#xff1a; 1. 会定期检測爬虫…

异常检测算法之LOF

前言&#xff1a; LOF&#xff1a;Local outlier factor&#xff0c;即局部异常因子。LOF主要是通过比较每个点p和其邻域点的密度来判断该点是否为异常点&#xff0c;如果点p的密度越低&#xff0c;越可能被认定是异常点。至于密度&#xff0c;是通过点之间的距离来计算的&…

Android属性动画进阶用法

2019独角兽企业重金招聘Python工程师标准>>> 在上周二文章中介绍补间动画缺点的时候有提到过&#xff0c;补间动画是只能对View对象进行动画操作的。而属性动画就不再受这个限制&#xff0c;它可以对任意对象进行动画操作。那么大家应该还记得之前我举的一个例子&am…

5.3linux下C语言socket网络编程简例

原创文章&#xff0c;转载请注明转载字样和出处&#xff0c;谢谢&#xff01; 这里给出在Linux下的简单socket网络编程的实例&#xff0c;使用tcp协议进行通信&#xff0c;服务端进行监听&#xff0c;在收到客户端的连接后&#xff0c;发送数据给客户端&#xff1b;客户端在接受…

异常检测算法之HBOS

前言 HBOS&#xff08;Histogram-based Outlier Score&#xff09;核心思想&#xff1a;将样本按照特征分成多个区间&#xff0c;样本数少的区间是异常值的概率大。 原理 该方法为每一个样本进行异常评分&#xff0c;评分越高越可能是异常点。评分模型为&#xff1a; 假设样…

字典和json 的区别 和转换

前言&#xff1a;字典和json非常像。接下来比较一下两者的异同 先看一下字典的写法&#xff1a; a {a:1,b:2,c:3} 再看一下json的写法&#xff1a; {"studentInfo":{"id":123456,"stu_name":"Dorra"} } 从形式上看&#xff0c;都是…

easyui动态显示和隐藏表头

为什么80%的码农都做不了架构师&#xff1f;>>> var _bt{date:日期,subtime:填写时间,xz:小组,uname:操作人,qdbh:渠道编号,mt:媒体,zh:账户,sjd:时间段,tfwz:投放位置,tfh:投放号,td:团队,sjje:实际金额,jxs:进线数,cb:成本,yxzyjx:有效资源进线,yxzyl:有效资源率…

物联网

如果要说未来什么技术正在或将彻底改变人类生活、工作和娱乐的方式&#xff0c;那必须是物联网。小到各种可穿戴产品&#xff0c;大到汽车、工厂和楼宇&#xff0c;物联网能使一切设备互联并具备智慧。物联网也正改变着产业的格局&#xff0c;索尼、夏普、东芝等日本传统电子设…

Postico —— OS X 上的免费 PostgreSQL 客户端

Postico 是 OS X 下的一个 PostgreSQL 客户端管理工具。要求 OS X 10.8 或者更新版本。 文章转载自 开源中国社区 [http://www.oschina.net]

hdu 1760 A New Tetris Game(搜索博弈)

题目链接&#xff1a;hdu 1760 A New Tetris Game 题意&#xff1a; 给你一个矩阵&#xff0c;0表示可以放格子&#xff0c;现在给你2*2的格子&#xff0c;lele先放&#xff0c;问是否能赢。 题解&#xff1a; 爆搜。具体看代码 1 #include<bits/stdc.h>2 #define F(i,a,…

flask-restful接口

同flask一样&#xff0c;flask-restful同样支持返回任一迭代器&#xff0c;它将会被转换成一个包含原始 Flask 响应对象的响应&#xff1a; class ArticleApi(Resource):def get(self):return {"hello":"world"},201&#xff0c;{"course":&quo…

Django中的F对象和Q对象

F对象 可以获取到自己的属性值实现自己的属性自己的属性关联的复杂条件支持运算 Q对象 Q对象实际上是对条件的一个封装封装后支持逻辑运算与或非 &|~ 支持嵌套 例子 from django.db.models import Max, Avg, F, Q from django.http import HttpResponse from django.s…

Django模型关系

模型关系 1:1 一对一 &#xff08;一个身份证对应一个驾照&#xff09; 是使用外键唯一约束实现的对应最多只能有一个我们通常会在从表中声明关系 主表&#xff0c;从表 主表数据删除&#xff0c;从表数据级联删除从表数据删除&#xff0c;主表不受影响谁声明关系&#xff0c…

Android常用开源项目

Android常用开源项目 Android 2014-05-23 16:39:43 发布您的评价: 4.3 收藏 24收藏Android开源项目第一篇——个性化控件(View)篇包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar、TextView、其他Android开源项目第二篇——工具库…

git push/pull时总需要输入用户名密码的解决方案

在提交项目代码或者拉代码的时候&#xff0c;git会让你输入用户名密码&#xff0c;解决方案&#xff1a;&#xff08;我们公司用的是gitlab&#xff09;执行git config --global credential.helper store命令然后git push origin your-branch会让你输入用户名和密码&#xff0c…