使用宝塔面板搭建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,一经查实,立即删除!

相关文章

【html5的video标签在移动端的使用】【微信内部浏览器video自动播放】【vue-video-player】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、使用步骤1. html部分2.js部分 二、使用插件vue-video-player1、下载插件2、使用3、在组件中使用 三、最终的版本(自用版本)四、vide…

linux运维工作常用命令

命令 --help //可以快速查看命令的用法及其各种选项 cat /etc/passwd //查看所有用户 who //查看已登录用户 sudo useradd 用户名 …

首个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 类型寄存器…

GDB调试助手用法详解

什么是GDB GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许&#xff0c;各位比较喜欢那种图形界面方式的&#xff0c;像VC、BCB等IDE的调试&#xff0c;但如果你是在 UNIX平台下做软件&#xff0c;你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能…

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

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

liquibase 错误: 无法打开扩展控制文件 “c:/postgresql/14/share/extension/timescaledb.control“

背景 运行springboot项目时&#xff0c;在一开始运行liquibase部分报错&#xff0c;报错信息如题所示&#xff0c;经查&#xff0c;是因为安装postgresql时没有安装这个名为timescaledb的扩展&#xff0c;所以接下来就是安装timescaledb扩展。 安装timescaledb扩展 我的电脑…

Semaphroe + CountDown

Semaphore 基本使用 synchronized 可以起到锁的作用&#xff0c;但某个时间段内&#xff0c;只能有一个线程允许执行 Semaphore&#xff08;信号量&#xff09;用来限制能同时访问共享资源的线程上限&#xff08;不是资源数&#xff09;&#xff0c;非重入锁 不像之前的reen…

rsync同步目录脚本

假设有两台服务器的示例 IP 地址为&#xff1a; Server A: 192.168.1.100Server B: 192.168.1.200 现在来解释如何使用这个脚本进行服务器之间文件夹内容的同步&#xff0c;保留路径和服务器信息的抽象化。 1. 脚本文件位置和权限 假设脚本文件位于 /root/script.sh&#x…

Hadoop面试题总结

一 、介绍一下hadoop 综述:hadoop是一个适合海量数据的分布式存储和分布式计算的平台 分述:hadoop包含三大组件&#xff0c;分别是HDFS、MapReduce和YARN --HDFS(分布式文件系统) HDFS集群由NameNode,DataNode,SecondaryNameNode构成NameNode&#xff1a;主要负责接受用户请求…

XML 应用程序

XML 应用程序 XML&#xff08;可扩展标记语言&#xff09;是一种用于存储和传输数据的标记语言。它是一种自我描述的语言&#xff0c;允许用户定义自己的标签和文档结构。XML广泛应用于各种应用程序中&#xff0c;包括网站开发、数据交换、文档管理等。本文将探讨XML的一些主要…

导入导出带下拉框模版(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 列表项&…

Python polars学习-06 Lazy / Eager API

背景 polars学习系列文章&#xff0c;第6篇 Lazy / Eager API Lazy&#xff1a; 延迟、惰性 Eager&#xff1a; 即时、实时 该系列文章会分享到github&#xff0c;大家可以去下载jupyter文件&#xff0c;进行参考学习 仓库地址&#xff1a;https://github.com/DataShare-duo/…