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

2023-10-29

概要

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

准备工作

服务器

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

Xshell

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

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
将要运行的flask文件放置root文件夹下
安装flask,进入目录,运行文件

pip3 install flask
cd /root/firstdemo
python3 app.py

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

安装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 //输入就自动创建了文件并进入了编辑模式

也可以直接用可视化工具操作
在这里插入图片描述下面开始配置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,如下代表启动成功

在这里插入图片描述

部署成功

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

flask+nginx+uwsgi部署服务器(详细保姆级教程) 的相关文章

  • NUMA 在虚拟内存中是如何表示的?

    有许多资源 https en wikipedia org wiki Non uniform memory access从硬件角度描述NUMA的架构性能影响 http practical tech com infrastructure num
  • Windows CE 与嵌入式 Linux [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 现在我确信我们都清楚 Linux 与 Windows 桌面的相对优点 然而 我对嵌入式开发世界的了解却少得多 我主要对行业解决方案感兴
  • 高效的内存屏障

    我有一个多线程应用程序 其中每个线程都有一个整数类型的变量 这些变量在程序执行期间递增 在代码中的某些点 线程将其计数变量与其他线程的计数变量进行比较 现在 我们知道在多核上运行的线程可能会无序执行 一个线程可能无法读取其他线程的预期计数器
  • 在 Mac OSX 上交叉编译 x86_64-unknown-linux-gnu 失败

    我尝试将我的 Rust 项目之一编译到 x86 64 unknown linux gnu 目标 cargo build target x86 64 unknown linux gnu Compiling deployer v0 1 0 fi
  • Flask-admin 内联建模传递表单参数会抛出 AttributeError

    Flask 开发者们大家好 在 Flask admin 中 我目前尝试在模型视图中实现内联模型编辑 在模型方面 我有一个简单的树结构 表示一组内容页面 每个节点都有多个子节点以及与其关联的多个内容数据模型 模型被命名为ContentNode
  • PyQt5 - 无法使用 QVideoWidget 播放视频

    from PyQt5 QtWidgets import from PyQt5 QtMultimedia import from PyQt5 QtMultimediaWidgets import from PyQt5 QtCore impor
  • 为什么C Clock()返回0

    我有这样的事情 clock t start end start clock something else end clock printf nClock cycles are d d n start end 我总是得到输出 时钟周期是 0
  • 在 unix 中编译 dhrystone 时出错

    我是使用基准测试和 makefile 的新手 我已经从下面的链接下载了 Dhrystone 基准测试 我正在尝试编译它 但我遇到了奇怪的错误 我尝试解决它 但没有成功 有人可以帮助我运行 dhrystone 基准测试吗 以下是我尝试编译的两
  • 为什么我可以在 /proc/pid/maps 输出中看到几个相同的段?

    测试在32位Linux上进行 代码如下 int foo int a int b int c a b return c int main int e 0 int d foo 1 2 printf d n d scanf d e return
  • Mcrt1.o和Scrt1.o有什么用?

    我坚持使用以下两个文件 即 Mcrt1 o 和 Scrt1 o 谁能帮我知道这两个文件的用途 如何使用它 我们以 gcrt1 o 为例 在使用 pg 选项编译进行性能测试时非常有用 谢谢 表格的文件 crt o总是 C 运行时启动代码 大部
  • Python 脚本作为 Linux 服务/守护进程

    Hallo 我试图让 python 脚本作为服务 守护进程 在 ubuntu linux 上运行 网络上存在多种解决方案 例如 http pypi python org pypi python daemon http pypi python
  • Flask 或 Pyramid 中的简单网络 UDP 监听

    我需要创建一个 Web 应用程序来显示通过定期传入 UDP 数据包提供的数据 该站点可能位于 Flask 可能是 Pyramid 中 部署在 Nginx 下 如何创建一个非常简单的后台任务 基本上只是 socket recv 来侦听任何传入
  • 使用代理协议的 kubernetes nginx 入口最终出现损坏的标头

    我尝试使用代理协议在 google 容器上设置 nginx 入口 nodeport 以便可以将真实 IP 转发到后端服务 但最终导致标头损坏 2017 02 05 13 48 52 error 18 18 2 broken header H
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • Fedora dnf 更新不起作用?

    当我尝试使用 update 命令更新 Fedora 22 时 sudo dnf update 我收到以下错误 错误 无法同步存储库 更新 的缓存 无法准备内部镜像列表 Curl 错误 6 无法解析主机名 无法解析主机 mirrors fed
  • 如何从 C 程序中获取 NIC 详细信息?

    我想要获取连接到我的计算机的所有 NIC 的以下详细信息 1 接口名称 例如eth0 2 接口编号 如Windows http answers yahoo com question index qid 20080517041705AAOmJ
  • 使用 posix_spawn 启动进程

    我正在使用以下代码在 Linux 中启动新进程 pid t processID char argV 192 168 1 40 char 0 int status 1 status posix spawn processID home use
  • 如何以全屏模式连接Linux CentOS 7虚拟机? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在从 Windows 8 1 从 Hyper V 连接到 CentOS 7 VM 全屏模式不起作用 我需要解决这个问题 其他虚拟机包括
  • 为什么将域连接到“Shopify”需要 CNAME 和 A 记录?

    为什么将域连接到 Shopify 需要CNAME and ARecord ref https help shopify com en manual domains add a domain using existing domains co
  • 码头无故停止

    我需要经验丰富的码头用户的建议 我在负载均衡器 亚马逊云 后面维护着 2 台 Linux 机器 使用 Jetty 9 0 3 有时我的 Jetty 容器会被 Thread 2 无故关闭 同时地 显示以下日志并且容器无故停止 没有错误 没有例

随机推荐

  • 机器学习好伙伴之scikit-learn的使用——特征提取

    机器学习好伙伴之scikit learn的使用 特征提取 什么是特征提取 sklearn中特征提取的实现 PCA 主成分分析 LDA 线性评价分析 应用示例 PCA部分 LDA部分 有些时候特征太多了 可以利用sklearn中自带的函数进行
  • Yii Framework 开发教程(48) 多国语言示例

    本例通过Yii Framework 开发教程 11 UI 组件 ActiveForm示例添加中文支持简要说明一下多国语言支持 详细文档可可以参考Yii文档 信息翻译是通过调用 Yii t 实现的 此方法会将信息从 源语言 翻译为 目标语言
  • DVWA学习之XSS(跨站脚本攻击)(超级详细)

    DVWA学习之XSS XSS 跨站脚本攻击 0x01 XSS Cross Site Script 简介 0x02 何为XSS 0x03 XSS存在的原因 0x04 XSS漏洞的危害 0x05 XSS 的分类及特点 1 存储型XSS 2 反射
  • 初识C语言(3)

    目录 8 函数 函数的特点就是简化代码 代码复用 9 数组 要存储 1 10 的数字 怎么存储 C 语言中给了数组的定义 一组相同类型元素的集合 9 1数组的定义 9 2数组的下标 C 语言规定 数组的每个元素都有一个下标 下标是从 0 开
  • 人工智能——机器学习,数据特征预处理,数据降维

    数据特征预处理 数据降维 处理方法 1 数值型数据 标准缩放 1 归一化 2 标准化 3 缺失值 2 类别型数据 one hot 编码 3 时间类型 时间的切分 下面是归一
  • Git --- 基础介绍

    Git 基础介绍 git 是什么 git 工作区 暂存区 资源库 git 文件状态 git branch 和 HEAD git 一次正常的git提交流程 git 是什么 Git是一款分布式源代码管理工具 版本控制工具 Git和其他传统版本控
  • HTTP 与 HTTPS 的区别

    HTTP 与 HTTPS 的区别 文章目录 HTTP 与 HTTPS 的区别 前言 一 基本概念 二 HTTP 与 HTTPS 区别 三 TCP 三次握手 四 HTTPS 的工作原理 我的公众号 前言 一 基本概念 HTTP HyperTe
  • 基于SSM+Vue游戏商城系统Java游戏攻略网站(源码调试+讲解+文档)

    作者 计算机源码社 个人简介 本人七年开发经验 擅长Java 微信小程序 Python Android等 大家有这一块的问题可以一起交流 学习资料 程序开发 技术解答 代码讲解 文档报告 JavaWeb项目 微信小程序项目 Python项目
  • Servlet(GenericServlet相关)

    Servlet是用于实现web浏览器和java程序的对应关系 通过浏览器请求服务器调用对应的java程序 就是Servlet的主要功能 一个使用Servlet的类必须实现Servlet接口 implements Servlet 并且实现其中
  • 服务器巡检规范

    服务器巡检规范 01 服务器主机巡检规范 02 服务器日常巡检细则 03 管理员账号管理规范 04 用户服务器系统使用规范 05 机房来访人员管理规范 06 主机防火墙管理规范 07 组织容器命名规范 08 服务器主机名命名规范 01 服务
  • js是如何单线程执行的

    据大家所知 js都是单线程执行的 那么就会接触到线程与进程 同步执行与异步执行 以及js单线程执行原理概念 一 进程与线程的概念 1 1 进程 进程是CPU进行资源分配的基本单位 浏览器使用的是多进程 一个标签对应一个进程 此进程负责管理各
  • 【视音频编程学习】开源音频加速方案Sonic、SoundTouch对比及实时处理音频的实验分析

    语音变速不变调是指保持音调和语义保持不变 语速变快或变慢 该过程表现为语谱图在时间轴上如手风琴般压缩或者扩展 那也就是说 基频值几乎不变 对应于音调不变 整个时间过程被压缩或者扩展 声门周期的数目减小或者增加 即声道运动速率发生改变 语速也
  • 分布式架构之服务注册中心选型

    互联网架构下 大部分系统已经转型分布式 其中服务注册发现中心 分布式服务中非常重要的组成部分 按需选择合适的注册中心 也变的尤为重要 一 Eureka Eureka是SpringCloud全家桶中非常重要的一个组件 主要是实现服务的注册和发
  • STL项目练习 - 实现一个通用的容器

    STL项目练习 实现一个通用的容器 能够支持插入多种不同的普通类型 包含 int char float double 等 和自定义结构体和自定义类的对象 并能根据每种不同类型的比较规则从容器中取得最大或最小的那个值或对象 分 析 通用的容器
  • 文档看得太迷糊?使用Unity开发增强现实/虚拟现实应用(AR/VR APP) 书籍和文档的阅读心得

    自己上手开发了两三个AR APP之后 用Unity进行AR VR APP开发算是入了门 反思一下自己使用过的资料 技术书籍 一开始是找比较新的技术书籍看 因为直接看文档有些难度 对于有Unity基础 想上手开发AR APP的开发者 我强烈推
  • Android 开发 之 JNI入门 - NDK从入门到精通

    NDK项目源码地址 第一个JNI示例程序下载 GitHub https github com han1202012 NDKHelloworld git Java传递参数给C语言实例程序 GitHub https github com han
  • Java教程:Rabbitmq监听器,用于监听topic类型消息队列,并进行业务处理

    本章介绍如何使用Rabbitmq监听器 用于监听topic类型消息队列 并进行业务处理 源码 import cn hutool json JSONUtil import com alibaba fastjson JSONObject imp
  • maven checkstyle NewlineAtEndOfFile 的处理

    环境 mvn3 x jdk1 7 git 1 9 checkstyle6 2 错误 checkstyle 检查编码规范失败 原因 NewlineAtEndOfFile 解决办法 处于代码规范考虑 该文件末尾需一个换行 这个办法很容易想到 但
  • 华为手机微信分身无法连接服务器,华为手机应用分身怎么使用?教你开启和关闭方法...

    原标题 华为手机应用分身怎么使用 教你开启和关闭方法 相信很多人都会希望工作和生活分开来 不想让工作打扰到生活 就拿手机的软件来说 比如微信 里面有我们很多亲朋好友 对很多人来说微信是比较私人的一个通讯工具 里面加的都是自己比较亲近的人 所
  • flask+nginx+uwsgi部署服务器(详细保姆级教程)

    从零开始部署flask项目 概要 准备工作 服务器 Xshell Xftp 7 部署flask 方案选择 python3安装 安装uwsgi 安装nginx nginx和uwsgi的配置 配置nginx 配置uwsgi 部署成功 概要 本次