目录
零.前言
前段时间,利用Flask 做了一个个人网站 ,后面想要部署,觉得使用宝塔面板部署相对简单,于是便去网上搜索各种教程,发现网上对于Flask部署的教程少之又少加之宝塔面板的更新,早已不适用。
作者苦苦摸索20余小时,终于摸索出一套比较完整且适用的方法!
PS:本教程主打的一对一喂饭 ,因此对于小白相对友好,如嫌啰嗦 建议粗略阅读。
本次使用的服务器系统 以及项目版本为:
Python版本:3.11.4
宝塔面板版本:免费版8.0.5
Linux系统:Ubuntu22
服务器:华为云的耀L服务器
一.准备工作
在准备工作 中,所有的操作均在"自己电脑"上完成!!!
在准备工作 中,所有的操作均在"自己电脑"上完成!!!
在准备工作 中,所有的操作均在"自己电脑"上完成!!!
重要的事情说三遍!
1.1创建requirements.txt文件
我们需要创建"requirements.txt "文件用来获取Flask项目 开发所用到的Python库 (包)。
具体步骤如下:
-
进入项目所在目录,随后在目录中输入cmd 再按回车,便可进入该目录的命令控制行 ,或者在Pycharm中的终端都可以
-
输入命令:
pythonpip freeze > requirements.txt
这样一个requirements.txt 文件即可生成在当前目录下啦~
以我项目为例,requirements.txt文件内部长这个样子:
1.2将项目打包为压缩文件
将项目内的所有文件 打包成一个压缩文件 ,建议直接对项目根文件夹 打包,例如我的项目文件夹名字为:"pythonproject",那么我可以直接对这个文件夹压缩
1.3租一台服务器
租一台服务器,系统为需要为Linux,Centos建议 版本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!!!