使用宝塔面板搭建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. 输入命令:

    python 复制代码
    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!!!

相关推荐
高梦轩1 小时前
MySQL高可用
android·运维·数据库
孟章豪4 小时前
《SQL拼接 vs 参数化,为什么公司禁止拼接SQL?(附真实案例)》
服务器·数据库·sql
hsjcjh5 小时前
Nodemailer使用教程:在Node.js中发送电子邮件
linux·运维·node.js
没有梦想的咸鱼185-1037-16636 小时前
北斗高精度数据解算:破解城市峡谷/长基线/无网区难题,从毫米级定位到自动化交付——(GAMIT/GLOBK底层核心解算技术方法)
运维·arcgis·数据分析·自动化
不怕犯错,就怕不做6 小时前
linux 如何查看自己的帐号密码及samba的帐号和密码
linux·运维·服务器
实在智能RPA6 小时前
Agent 在物流行业能实现哪些自动化?——深度拆解 AI Agent 驱动的智慧物流新范式
运维·人工智能·ai·自动化
张3236 小时前
Linux 启动过程
linux·运维
李彦亮老师(本人)7 小时前
Rocky Linux 9.x 新特性详解
linux·运维·服务器·centos·rocky linux
NiKick7 小时前
在Linux系统上使用nmcli命令配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)
linux·服务器·网络