使用宝塔面板搭建Flask项目保姆级喂饭教程

目录

零.前言

一.准备工作

1.1创建requirements.txt文件

1.2将项目打包为压缩文件

1.3租一台服务器

1.4部署宝塔面板

二.宝塔面板(服务器)上的操作

2.1将本地Flask项目上传到服务器

2.2添加Python项目

2.3配置Python项目

2.4配置Nginx

2.5宝塔面板放行端口

2.6在服务器管理后台开放端口

2.7启动服务器

三.结语

零.前言

前段时间,利用Flask做了一个个人网站,后面想要部署,觉得使用宝塔面板部署相对简单,于是便去网上搜索各种教程,发现网上对于Flask部署的教程少之又少加之宝塔面板的更新,早已不适用

作者苦苦摸索20余小时,终于摸索出一套比较完整且适用的方法!

PS:本教程主打的一对一喂饭,因此对于小白相对友好,如嫌啰嗦建议粗略阅读

本次使用的服务器系统以及项目版本为:

Python版本:3.11.4

宝塔面板版本:免费版8.0.5

Linux系统:Ubuntu22

服务器:华为云的耀L服务器

一.准备工作

准备工作中,所有的操作均在“自己电脑”上完成!!!

准备工作中,所有的操作均在“自己电脑”上完成!!!

准备工作中,所有的操作均在“自己电脑”上完成!!!

重要的事情说三遍

1.1创建requirements.txt文件

我们需要创建“requirements.txt”文件用来获取Flask项目开发所用到的Python库()。

具体步骤如下:

  1. 进入项目所在目录,随后在目录中输入cmd再按回车,便可进入该目录的命令控制行,或者在Pycharm中的终端都可以
  2. 输入命令:
    pip freeze > requirements.txt

    这样一个requirements.txt文件即可生成在当前目录下啦~

 以我项目为例,requirements.txt文件内部长这个样子:

1.2将项目打包为压缩文件

将项目内的所有文件打包成一个压缩文件,建议直接对项目根文件夹打包,例如我的项目文件夹名字为:“pythonproject”,那么我可以直接对这个文件夹压缩

1.3租一台服务器

租一台服务器,系统为需要为LinuxCentos建议版本7.X往上,Ubuntu系统都可。

国内服务器厂家很多,有:“华为云”、“京东云”、“腾讯云”、“阿里云”等等,在这里作者使用的是华为云的,且安装系统直接有自带宝塔面板的Ubuntu系统,省去不少事,至于其他厂家都大差不大。

1.4部署宝塔面板

再组好服务器之后,我们首先要找到:“服务器外网IP”、“服务器内网IP”这两个十分重要。

随后我们需要在服务器上部署宝塔面板,版本8.X往上即可,如果不知道部署什么版本的宝塔,那直接就最新版

至于怎么部署宝塔面板,本文章就不赘述了,CSDN上已有不少博主发布过非常详细的教程

登录宝塔面板后,是这个样子:

二.宝塔面板(服务器)上的操作

2.1将本地Flask项目上传到服务器

  • 在宝塔面板右侧导航栏找到”文件“,点击进入“文件”页面。
  • 在“文件”页面中依次点击:“www”->“wwwroot”,进入“/www/wwwroot”目录下。
  • 将本地压缩好的Flask项目文件上传到该目录下(可以左键拖动到宝塔页面上传,也可以点击“上传”按钮上传)
  • 右键上传好的项目文件,点击解压,将项目解压到该目录下。

 最后,以作者的项目为例,解压好的界面长这个样子:

2.2添加Python项目

  • 在宝塔面板右侧导航栏找到“网站”,点击进入“网站”页面。
  • 在“网站”页面中,选择“Python项目”,点击“添加Python项目

 

点击之后,是这个样子的:

而填好的是这个样子,读者可以对照填写,后面还会详细解释

下面详细解释各个参数:

  • 项目路径:填写Flask项目的根路径
  • 项目名称:自己随便取,不建议使用中文,这个名字只是用来展示在宝塔面板中
  • 运行文件:填写Flask项目中,app.run()启动代码所在的py文件路径
  • 项目端口:随便填写,范围在(0-65535)之间,注意填写没有被其它应用程序占用的端口,同时避开常见端口,例如“3306”就是数据库服务器的默认端口,如果实在想不到填什么,可以跟作者一样填写端口号为“8000”
  • Python版本:Python版本只能选择,不能任意指定输入,如果没有与开发环境相对应的Python版本,直接选择最新版本或者比开发环境大一点的版本。
  • 框架:选择“flask
  • 运行方式:选择“uwsgi
  • 网络协议:选择“wsgi
  • 进程数、线程数:默认即可,默认为4和2
  • 启动用户:选择“www
  • 通信方式:选择“http”
  • 安装依赖包:在第一步准备工作中,我们已经制作了requirements.txt文件,所以当你选择项目根目录后,宝塔会自动检测并识别,不需要人为填写

2.3配置Python项目

  • 点击刚刚添加的Python项目的“设置”,进入“设置”界面。
  • 在“设置”界面中,点击左侧的配置文件。

 我们需要修改“sever_name”、“root”两项:

  • sever_name:填写服务器的公网ip
  • root:填写项目的根路径

 我们再点击右侧的“运行配置”:

随后,我们需要在文件中添加“三行配置参数“:

buffer-size=65536
callable=app
virtualenv=/www/server/pyporject_evn/pythonProject_venv

参数说明

  • buffer-size:网页请求最大MB大小,建议填大一点
  • callable:填写app.run()启动代码所在的py文件名称
  • virtualenv:填写虚拟环境路径,在新版本的宝塔面板中,面板会自动为我们创建一个虚拟环境,目录在:“/www/server/pyporject_env/项目名_venv

 随后,我们再点击右侧的“域名管理”,添加一个域名,格式为:“服务器公网IP:刚才设置的端口号

最后,我们点击右侧的“外网映射”,将外网映射打开即可。

2.4配置Nginx

  • 在宝塔面板右侧导航栏找到“软件商店”,点击进入“软件商店”。
  • 在软件商店中搜索“Nginx”,下载并安装,安装全部默认设置即可。

 安装完成后,是这个样子:

我们点击“Nginx”的“设置”,进入“Nginx的设置界面”。

在“Nginx设置界面”的右侧,找到“配置修改”,进入“配置修改”界面,并往下翻动,找到“server”项

  • 将原先的“index index.html index.htm index.php;”这行注释掉,如果没有该行则跳过
  • 将原先的“root /www/server/phpmyadmin;”这行注释掉,如果没有该行则跳过
  • 添加新的“root 你的项目根路径

继续向下翻动,添加两个“location”项,添加在“server”项中即可

添加内容为:

        location /
        {
            include uwsgi_params;
            uwsgi_pass 服务器内网IP:你的端口号;
            uwsgi_param UWSGI_CHDIR 项目根路径;
        }
        
        location /static/
        {
          alias 项目根路径/static;
        }

其中,第二个“location /static/”是为了保证Nginx反代可以正确识别静态资源文件(在Flask项目中,静态资源文件如图片等,都存放在这个目录下)

添加好后,以作者项目为例子,如下图所示:

最后,千万别忘记点击“保存”哦!

2.5宝塔面板放行端口

终于来到最后一步啦!

在这一步,我们需要在宝塔面板中放行我们之前自己设置的端口,例如作者设置的端口就是“8000

  • 在宝塔面板右侧导航栏找到“安全”,点击进入“安全”界面。
  • 在“安全”界面中,找到“添加端口规则”。

 

在“添加端口规则”弹窗处,添加端口号其它参数都不用管默认即可

在这里,作者项目使用的端口是8000,因此在这里就输入8000

2.6在服务器管理后台开放端口

仅仅在宝塔面板放行端口是不够的,因为现在的云服务器厂商都提供一种名为“安全组”的策略,我们还需要在服务器管理后台的“安全组”处开放我们所使用的端口

不同的服务器厂商开放方法不同,不过大差不差,可以百度搜索,或者查看厂商文档即可,很简单

在这里,作者还是给出“华为云”开放安全组端口的步骤:

1.在华为云控制台,点击“安全组

2.找到服务器所使用的安全组,一般来说服务器使用的安全组默认是第一个,即名字为一堆乱码的,不是“default”!

3.点击“入方向规则”,找到“添加规则”按钮,点击进入“添加规则”界面

4.优先级输入“100”,再输入我们的端口号其它参数默认即可

到这里,所有的步骤已经完成啦!!

2.7启动服务器

最后,不要忘记在我们宝塔面板的“网站”处,找到“Python项目”点击启动服务器哦!

给大家上一张,作者个人网站的截图!

祝大家都能部署成功!

三.结语

本篇文章无恰饭!!

无广告!!

使用华为云是真的方便,所以才会着重介绍一下!!

我是真的一粒米也没有收!!!

如果有华为云的工作人员可以看到的话,要是能帮我申请一台免费的云服务器几个月就好啦哈哈哈哈!!(QAQ)

最后,祝大家生活愉快!!

少一点BUG!!!

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

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

相关文章

首个AI高考评测结果出炉,GPT-4o排名第二

近日,上海人工智能实验室利用其自主研发的“司南”评测体系OpenCompass,对国内外多个知名大模型进行了一场特殊的“高考”。这些来自阿里巴巴、智谱AI、Mistral等机构,以及OpenAI的GPT-4o等“考生”,接受了新课标I卷“语数外”的全…

百万级 QPS 接入层网关架构方案演进

文章目录 前言1、单机架构2、DNS 轮询3、Nginx 单机4、Nginx 主备 Keepalived5、LVS 主备 Keepalived Nginx 集群6、LVS 主备 Keepalived Nginx 集群 DNS 轮询 前言 随着PC、移动互联网的快速发展,越来越多的人通过手机、电脑、平板等设备访问各种各样APP、网…

找不到com.fasterxml.jackson.core.exc.StreamWriteException的类文件

1. 前言: 使用springboot搭建的项目, 需要使用 jackson 更改json文件的内容; maven管理jar包, 导入jar包版本信息如下: <!-- 读写json文件所需依赖 --> <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databin…

C++语法06 格式化输出及保留小数点后指定位数

格式化输出 格式化输出所用的函数为 printf&#xff0c;它可以输出任意位数的小数。 使用格式&#xff1a;printf(“%.nf”,a)。这句话的作用是将变量a保留n位小数输出。 注意事项&#xff1a; 1、这里的n&#xff0c;需要具体化为一个数字&#xff0c;保留几位小数&#x…

【ARMv8/v9 GIC 系列 3 -- GIC 的 类型寄存器 GICD_TYPER】

文章目录 GIC 类型寄存器 GICD_TYPERESPI_Range, 位[31:27]RSS, 位[26]No1N, 位[25]A3V, 位[24]IDBits, 位[23:19]DVIS, 位[18]LPIs, 位[17]MBIS, 位[16]NUM_LPIs, 位[15:11]SecurityExtn, 位[10]NMI, 位[9]ESPI, 位[8]CPUNumber, 位[7:5]ITLinesNumber, 位[4:0]GIC 类型寄存器…

朗科HD10M2Pr震撼上市,自带风扇极速降温,匹敌私有云

近日,存储领域的领军企业朗科旗下全资子公司朗科创新宣布,其最新款磁吸硬盘盒HD10M2Pr正式上市。这款产品凭借超薄设计、极速降温、高速传输等多项优势,迅速成为了行业内的讨论焦点。 随着移动设备使用的普及和短视频内容的日益丰富,对于存储空间不断增长的需求逐渐成为日常生活…

导入导出带下拉框模版(EasyExcel)

前言 项目进行到新的一个迭代了&#xff0c;赶了1周需求&#xff0c;接口终于处理完了。分享记录下迭代中处理导入、导出、下载模版功能的细节吧。 一、场景 EasyExcel&#xff08;阿里&#xff09;实现Excel数据处理三层表头&#xff0c;第二、三层表头动态数据根据第二、三层…

RabbitMQ(六)仲裁队列、流式队列、异地容灾(联邦队列Federation Queue)

文章目录 仲裁队列1、创建交换机2、创建仲裁队列3、验证主节点宕机不影响消息发送和接收 流式队列&#xff08;不推荐&#xff0c;Kafka主场&#xff09;概念 异地容灾一、Federation插件概述 二、Federation交换机1、总体说明2、准备工作3、启用联邦插件4、添加上游连接端点5、…

NetSuite Inventory Transfer Export Saved Search

用户之前有提出一个实际的需求&#xff0c;大致意思是想要导出Inventory Transfer的相关明细行信息&#xff0c;且要包含From Location&#xff0c;To Location&#xff0c;Quantity等信息。 我们知道From Location和To Location在IT Form中应该是在Main的部分&#xff0c;在D…

java学习--集合(大写一.1)

看尚硅谷视频做的笔记 1.集合框架概述 1.1生活中的容器 首先知道集合是来解决什么问题的&#xff1f; 1.1.1内存层面需要针对于多个数据进行存储&#xff0c;此时&#xff0c;可以考虑的容器有&#xff1a;数组、集合类 对于内存层面的来说&#xff0c;断电后数据就不复存…

后端学习笔记:Python基础

后端学习笔记&#xff1a;Python基础 数据类型&#xff1a; Python中主要有以下几种常用的基本数据类型&#xff1a; String 字符串类型&#xff0c;用单引号或者双引号引用Number 数字类型&#xff0c;包括浮点数&#xff0c;整数&#xff0c;长整数和复数List 列表项&…

界面构件开发之RC文件

代码; #include <gtk-2.0/gtk/gtk.h> #include <gtk-2.0/gdk/gdkkeysyms.h> #include <glib-2.0/glib.h> #include <stdio.h>int main(int argc, char *argv[]) {gtk_init(&argc, &argv);gtk_rc_parse("./mainrc");GtkWidget *winN…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 连续字母长度(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

某棋牌渗透测试

前言 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 一、信息收集 这里通过fofa进行收集&#xff0c;语法为&#xff1a;body某棋牌 && titlexxx 图1-1 fofa资产收集 …

Human4DiT:使用 4D Diffusion Transformer 生成自由视角人物视频。

Human4DiT&#xff0c;使用 4D Diffusion Transformer 生成自由视角人物视频。又一个根据一张图&#xff0c;生成人物动画视频的项目&#xff0c;效果如下视频所示。 给定参考图像、SMPL序列和摄像机参数&#xff0c;Human4DiT能够生成自由视图动态人体视频。 相关链接 项目地…

神经网络模型---LeNet-5

一、LeNet-5 1.定义LeNet-5模型 model models.Sequential([1.1添加一个二维卷积层&#xff0c;有6个过滤器&#xff0c;每个过滤器的尺寸是5x5。输入图像尺寸是28x28像素&#xff0c;具有1个颜色通道,激活函数是relu layers.Conv2D(6, (5, 5), activationrelu, input_shape…

【Codesys】-计算开机通电运行时间,累计正常使用时间,故障停机时间

应客户要求&#xff0c;在程序添加了这个用来计算开机运行时间&#xff0c;原理就是取当前时间减去一开始记录的时间&#xff0c;没什么特别要求&#xff0c;记录一下使用的变量类型和数据写法&#xff0c;防止忘记了。 下文只写了一个开机通电运行时间的写法&#xff0c;累计…

ROS操作过程中的报错

文章目录 错误&#xff1a;E: Unable to locate package ros-noetic-desktop-full报错问题报错原因解决方法 错误2&#xff1a;ERROR: cannot download default source list from:报错问题错误原因解决办法 错误&#xff1a;E: Unable to locate package ros-noetic-desktop-fu…

养殖自动化温控系统:现代养殖场的智能守护神

现代农业养殖业中&#xff0c;养殖自动化温控系统已经成为提高生产效率和保障动物福利的关键技术之一。本篇文章将深入介绍养殖自动化温控系统的原理、组成、优势及其在不同类型养殖场中的应用实例&#xff0c;并展望该技术的未来发展。 一、养殖自动化温控系统概述 养殖自动…

智能制造 v3.13.12 发布,ERP、在线课堂、表白墙更新

智能制造一体化管理系统 [SpringBoot2 - 快速开发平台]&#xff0c;适用于制造业、建筑业、汽车行业、互联网、教育、政府机关等机构的管理。包含文件在线操作、工作日志、多班次考勤、CRM、ERP 进销存、项目管理、EHR、拖拽式生成问卷、日程、笔记、工作计划、行政办公、薪资模…