1.引言
Flask 是一个微框架,它提供了简单而灵活的接口,使得开发者可以快速上手并创建Web应用。适用于中小型Web应用的开发,而MySQL 是一种关系型数据库管理系统(RDBMS),以其稳定性、可靠性和性能著称。用Flask和MySQL进行交互,大大提高了项目的灵活性,提高开发效率。
本文中提出的可能存在的一些问题,都是笔者亲历,也许有所不周,请多海涵,如果对flask框架有研究意向的话,也可以先收藏本文以便后续部署
2. 购买服务器+安装宝塔面板
这部分内容可以参考笔者前一篇教学文章:
全网最菜鸟Linux宝塔面板部署若依前后端分离版教程(最简单版本)_宝塔部署若依项目教程-CSDN博客
3.修改Flask入口文件
常规的Flask项目中的入口文件是app.py
下图红框中的MySQL相关配置设置你自己的数据库名称和密码,这里我用“ruoyi-vue-test”当作测试名称
注意:下图黄色框中的配置,Flask 应用程序默认尝试连接的 /var/run/mysqld/mysqld.sock
如果部署到服务器端务必看好MySQL的相关配置,把这一条改成其配置中的路径,查看MySQL配置如下图2,笔者的MySQL配置是/tmp/mysql.sock则加入
app.config['MYSQL_UNIX_SOCKET'] = '/tmp/mysql.sock' # 使用正确的 Unix socket 路径
4.编写requirements.txt文件
在项目文件夹中编写requirements.txt文件,requirements.txt文件中包含的是你的项目中除了python自带库之外所有引入的第三方库(如flask,flask_cors,flask_mysqldb,dashscope, requests,uuid等)
而在部署flask项目时,创建虚拟环境时,面板会根据你的项目中的requirements.txt文件去安装你所需要的库
下图是笔者这个项目编写的requirement.txt文件,可以直接写第三方库名字,也可以写库名加版本号,没有版本号则默认下载最新的
5.添加数据库
在宝塔面板的数据库里面添加数据库,配置内容与修改的入口文件保持一致
创建完成后导入数据库的sql文件,注意utf8mb4是数据库字符集,转储数据库为sql文件时注意当前数据库的字符集规则。
注:sql文件由数据库连接软件(如Navicat)转储数据和结构生成。
6.上传文件到宝塔面板
Flask应用可以把整个项目一起打包放到宝塔面板上,最好是打成压缩包再上传,然后解压
7.部署Flask
在左侧导航栏中选择网站,然后选择Python项目,如果第一次打开,可能需要你选择下载python解释器,解释器版本根据你自己的项目解释器版本进行选择即可。
安装完python解释器后,填写自己的项目名称,启动端口,项目入口文件,启动命令等信息
1.项目端口
Flask应用默认启动在5000端口,如果你需要启动在其他端口的话,记得在app.py的最后几行的启动端口也一并修改,并放行防火墙
2.项目路径
和你刚刚上传的路径一致,只需要精确到项目文件夹即可
3.启动命令
该命令即是启动项目的入口文件,python3代表使用python3.x解释器启动文件,文件前的路径根据你的实际情况进行修改
python3 /www/wwwroot/test/server/app.py
4.安装依赖包
安装依赖包则是识别requirement.txt中的库并安装到这个项目的虚拟环境中(关于requirements.txt查看本文第4点)
若无异常,则可以在项目日志中查看到如下日志,则为启动成功!
注:如果顺顺利利让你成功,那么恭喜你啦!!如果没有,请看第八点~
8.可能存在的问题
这一部分都是笔者亲历的问题,网上有的缺乏教程,我简单总结一下问题和解决办法:
8.1. bt面板提示的虚拟环境的命令进不去
解决方法:在python项目的页面中进入“命令行环境管理”,然后选择你所需要的环境即可
8.2. 提示flask_mysqldb库缺失
如图报错:
解决方法:
1.直接在项目日志上面的环境管理中直接搜索这个库进行安装(大概率不行)
2.确保你在开发的虚拟环境中,参考8.1把环境应用到命令行
然后在面板终端中依次输入
注:mysqlclient
库的安装失败了,因为构建过程无法找到MySQL或MariaDB的开发库。这是因为mysqlclient
依赖于这些库来编译和链接,而我们可以通过apt-get
安装必要的开发库
sudo -i #切换为root用户
sudo apt-get update
sudo apt-get install python3-dev default-libmysqlclient-dev libssl-dev
然后再进入项目的终端安装flask_mysqldb库
pip install flask_mysqldb
8.3. 数据库查询错误(flask连不上mysql)
如图报错:
解决方法:
其实这个报错就是flask后端和mysql数据库没有连接成功导致的,flask默认连接/var/run/mysqld/mysqld.sock,然而我们的数据库的配置是/tmp/mysql.sock,参考第3点在修改入口文件的时候添加上相关配置
app.config['MYSQL_UNIX_SOCKET'] = '/tmp/mysql.sock' # 使用正确的 Unix socket 路径
9. 结语
本文是笔者成功用宝塔面板部署Flask+MySQL项目之后写的经验小结,如有不对的地方请多指正,因为在碰到这些问题时少有过往经验,没有相关帖子,故总结此篇教程用作分享,希望可以给您带来一些帮助或者遇上bug的启发。如果确实帮助到了您,希望您给我点点赞和星星,不胜感激!!!