使用宝塔面板搭建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!!!

相关推荐
gywl13 分钟前
openEuler VM虚拟机操作(期末考试)
linux·服务器·网络·windows·http·centos
青木沐13 分钟前
Jenkins介绍
运维·jenkins
WTT00111 小时前
2024楚慧杯WP
大数据·运维·网络·安全·web安全·ctf
苹果醋31 小时前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
了一li1 小时前
Qt中的QProcess与Boost.Interprocess:实现多进程编程
服务器·数据库·qt
日记跟新中2 小时前
Ubuntu20.04 修改root密码
linux·运维·服务器
唐小旭2 小时前
服务器建立-错误:pyenv环境建立后python版本不对
运维·服务器·python
明 庭2 小时前
Ubuntu下通过Docker部署NGINX服务器
服务器·ubuntu·docker
BUG 4042 小时前
Linux——Shell
linux·运维·服务器