flask+nginx+uwsgi部署服务器(详细保姆级教程)

从零开始部署flask项目

概要

本次项目我利用flask写了接口需要部署到服务器供前端使用,一路走来爬了很多坑,所以这一次做了详细的记录,从零开始教大家将flask项目跑起来

准备工作

服务器

首先部署需要一台服务器,推荐大家使用腾讯云或者阿里云的服务器,我这里使用的是centos7.5版本的阿里云服务器,然后设置安全组信息,我这里开放了一个5656端口

flask+nginx+uwsgi部署服务器(详细保姆级教程)

; Xshell

还需要一个模拟服务器终端的连接软件方便操作,我使用的是Xshell,大家可以自行去下载,网上资源很多,然后打开软件新建链接连接服务器,如图所示状态,输入指令可以查看服务器文件,就算连接成功啦

flask+nginx+uwsgi部署服务器(详细保姆级教程)

Xftp 7

为了传输文件方便,我这里使用的是Xftp7,可以直接拖动文件上传到服务器,大家自己下载,可视化软件很多选择顺手的即可

部署flask

方案选择

我才用的是nginx+uwsgi+flaks的部署方案,这里也是给大家详细介绍这一种,下面我们开始进行部署

python3安装

要编译flask文件当然要在服务器内进行python的配置

which python
mkdir /usr/local/python3
cd /usr/local/python3

安装依赖

yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

安装python3

wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz

这种方式可能比较慢,大家也可以自行在上面网址下载安装包,然后上传安装包到服务器

解压压缩包

tar -xvJf  Python-3.6.2.tar.xz
cd Python-3.6.2
./configure --prefix=/usr/local/python3
make && make install

创建软链接

ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

此时在服务器输入python3,出现如下代表安装成功,输入exit()回车 退出

flask+nginx+uwsgi部署服务器(详细保姆级教程)
将要运行的flask文件放置root文件夹下
安装flask,进入目录,运行文件
pip3 install flask
cd /root/firstdemo
python3 app.py

运行成功后,然后通过服务器公网访问,如图,输入 ctrl+c 可停止运行,到此表示服务器python编译环境安装成功

flask+nginx+uwsgi部署服务器(详细保姆级教程)

安装uwsgi

安装

pip3 install uwsgi
find / -name uwsgi
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

安装nginx

安装nginx的详细步骤见我的另一篇文章,点我查看

nginx和uwsgi的配置

配置nginx

至此我默认大家已经完成了nginx的安装,下面进行nginx 的配置
进入到nginx目录下的conf文件夹

/usr/local/nginx/conf

可以看到有一个叫 nginx.conf 的配置文件,在里面进行相关的文件配置
文件里面默认的代码很多,下面我将我的配置精简如下:

worker_processes  4;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;

   server {
        listen 80;   // 监听的端口,默认为80端口
        server_name 47.108.xxx.180;  //  这里写服务器公网ip
        location / {
                proxy_pass http://127.0.0.1:5000;
                // 需要代理的地址,我的项目启动地址是这个
            }

     }
}

弄好配置文件然后就可以启动nginx了,nginx的启动停止的操作在 点我查看 一文中有说明。

配置uwsgi

下面开始配置uwsgi相关的东西,首先进入我们的项目文件夹
在项目文件夹中创建一个名为 uwsgi.ini 的文件

cd /root/firstdemo  //进入项目文件夹
vi uwsgi.ini //输入就自动创建了文件并进入了编辑模式

也可以直接用可视化工具操作

flask+nginx+uwsgi部署服务器(详细保姆级教程)
[uwsgi]
http-socket = 127.0.0.1:5000  // 启动地址
chdir = /root/firstdemo  // 项目地址
wsgi-file = app.py  // 项目的启动文件
callable = app
processes = 2
threads = 10
buffer-size = 32768
master = true
daemonize=flaskweb.log  // 日志文件保存在falskweb.log中
pidfile=uwsgi.pid

配置完成之后,在项目的根目录下就可以启动 uwsgi 了,下面附上uwsgi的相关操作指令

uwsgi --ini uwsgi.ini             // 启动
uwsgi --reload uwsgi.pid   // 重启

进入目录,输入指令启动uwsgi,如下代表启动成功

flask+nginx+uwsgi部署服务器(详细保姆级教程)

部署成功

启动成功后,我们就可以用浏览器通过服务器公网访问啦
因为前面nginx配置中我们直接把启动地址放在了 location/ 中,也就是将127.0.0.1:5000直接转发到了公网ip,所以可以直接访问:

flask+nginx+uwsgi部署服务器(详细保姆级教程)

Original: https://blog.csdn.net/weixin_45745641/article/details/119617866
Author: 北海的大鱼
Title: flask+nginx+uwsgi部署服务器(详细保姆级教程)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/745860/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • scrapy mysql pipeline_scrapy MysqlPipeline 同步和异步

    import MySQLdb import MySQLdb.cursors class MysqlPipeline(object): 采用同步的机制写入mysql def init…

    Python 2023年10月6日
    048
  • matplotlib直方图

    直方图(Histogram),一种数据统计层面的绘图方式。用一系列高低不等的柱子表示数据分布,横坐标表示数据划分区间,纵坐标可以表示落到各个区间内的频数/频率。使用 matplot…

    Python 2023年9月7日
    045
  • XGBoost基本介绍(机器学习ML神器)

    介绍: XGBoost整体思想就是直接把损失函数和正则项加起来合成一个整体的损失函数,对这个损失函数求二阶导,得到最终的obj,通过obj计算得到一个分数,这个分数越小越好,最终通…

    Python 2023年9月27日
    037
  • 【Python】如何写一个锅炉温控系统

    1.前言 冬天很冷,买了一个锅炉,需要循环泵的。简单来说就是锅炉水热了之后循环泵自动开启,然后将热水输送走,送到暖 气,热水抽走,凉水进入锅炉,温度降低,循环泵关闭,等待下一次水烧…

    Python 2023年11月2日
    046
  • 笔记:numpy array中冒号的用法

    在未引包的情况下,python中的冒号的用法比较简单,诸如a[10:20], 或者a[::10] 而在引入numpy后,冒号的用法得到了扩充,可以用引号来表示一整个维度,从开始到结…

    Python 2023年8月26日
    049
  • 【Pandas】DataFrame查询数据

    DataFrame查询数据 加载数据 通过索引查询 * 查询某(几)列 查询一列 的 某(几)行 查询多列 的 某(几)行 使用loc和iloc方法查询 * 使用bool-seri…

    Python 2023年8月17日
    091
  • pytest+selenium+allure UI自动化测试框架

    详情查看gitee,内有大量的注释。采用业务和业务位置元素分离的思维 目录结构: CaseElements —用于存放case元素位置(位置存放采用By格式) Conf…

    Python 2023年9月9日
    056
  • Python numpy广播机制

    numpy广播机制 numpy 在算术运算期间采用”广播”来处理具有不同形状的 array ,即将较小的阵列在较大的阵列上”广播”,…

    Python 2023年8月23日
    050
  • 自动化测试框架:pytest+excle+mysql

    一、创建utils.文件 import xlrd,pymysql #从excle中生成sqls列表和查询参数、期望结果 def gen_sqls_queryparms_expect…

    Python 2023年9月12日
    068
  • python flask实战订餐系统微信小程序-61申请免费https证书

    B站配套视频教程观看 强行关闭nginx yum install -y psmisc fuser -n tcp 80 kill -9 端&#x53E3…

    Python 2023年8月12日
    070
  • OpenART mini使用教程

    前言 OpenART mini 是我们在 NXP 的 OpenART 套件的基础上,去除非视觉部分而制作出来的迷你版。虽说只是迷你版,但”麻雀虽小,五脏俱全&#8221…

    Python 2023年10月24日
    074
  • python dataframe纵向合并_Python Dataframe合并问题

    用Pandas读取一个七百万条记录的微博爬虫文件,大小约1G。直接读入内存不足,于是采用chunksize=100000来分批读取。每个chunk的数据处理后得到count长这样:…

    Python 2023年8月8日
    033
  • dbm数据库详解【flask】【dbm.gun解决】

    DBM dbm数据库是利用简单的字符串值作为键来访问包含字符串的记录。 开发遇到的问题 之前的项目开发使用的dbm.gnu类型,而这个类型在Linux系统下可以正常使用,在wind…

    Python 2023年8月13日
    048
  • local_rank,rank,node等理解

    node:代表物理节点,即电脑台数,一台电脑可以有多个GPU nnodes:物理节点数,就是电脑数量 node_rank:物理节点的序号,每个电脑的序号 nproc_per_nod…

    Python 2023年9月26日
    049
  • python与Electron联合编程记录之五(进程间通信)

    进程间通信 进程间通信是Electron构建程序的关键之一,主要通过ipcMain 和 ipcRenderer 这两个模块来实现,通过开发人员定义的”通道”…

    Python 2023年8月14日
    073
  • Qt编写视频监控系统67-录像计划(支持64通道7*24录像设置)

    一、前言 录像计划这个功能一直挂了很久,之前做的也都有保存视频文件功能,其中还分了三大种,第一种是手动开启和停止录像;第二种是按照指定时长比如10s保存文件;第三种是定时30分钟一…

    Python 2023年10月8日
    054
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球