文章简介
本文章是记录我将自己的一个小web项目[(html+css+js)+Flask+Mysql]部署到腾讯的云服务器(宝塔腾讯云专属面板)上的过程,希望能帮到大家。
(自己写的圣诞树和一个发送弹幕的功能(需连接mysql))
一.选购一台腾讯云服务器并配置宝塔面板
-
在腾讯云官网https://cloud.tencent.com/的轻量应用服务器处视自己的经济实力购买,我这里买了88块钱一年最便宜的优惠机(学生可以有优惠哦)
-
购买自己的域名(这步可省,可以直接用自己服务器的公网ip)
-
配置自己购买的服务器
我这里给虚拟机上装了腾讯云推荐的宝塔Linux面板,省去了需要自己命令行操作的部分,比较推荐。
-
在腾讯云服务器控制台中如图开放宝塔终端的端口8888,顺便也可以把flask需要的默认5000端口开放(如果在项目内连的其他端口不是5000,那就一样也添加进去就行)
-
打开宝塔面板
在腾讯云的控制台里点进自己的服务器,选择应用管理。点击下方登录,打开腾讯云OrcaTerm
这里用户名改为root方便操作,登录后在面板输入
这里打开外网面板地址,并通过生成的账号密码登录
对宝塔面板进行默认安装即可
二.软件商店中安装Python项目管理器
- 在软件商店中搜索Python项目管理器安装
- 安装自己需要的python版本,耐心等待即可
三.上传自己的项目代码至服务器
- 在自己电脑上准备好项目文件,如果太大建议打包成zip
- 将准备好的zip上传到/www/wwwroot这个地址下,并解压
- 准备requirements.txt文件放入项目目录中(比如我这里就是放在tree里)
这步是为了后面部署flask项目做准备。可以在上传的代码文件内打开终端通过命令生成
pip3 freeze >requirements.txt
如果依赖少,建议自己编辑一下,把项目需要的库和版本写上去就行,比如我这里写的
四.部署mysql
-
点进宝塔面板的数据库
-
添加需要的数据库(数据库名,用户名,密码自行编辑即可)
-
在自己建立的数据库中点击管理进入phpMyAdmin界面
可以自行添加表,或者导入自己的.sql文件 -
修改自己flask项目中的mysql连接部分
将刚刚自己设置的数据库名和账户和密码填入自己编写的数据库部分即可 -
配置数据库的端口
在宝塔面板的安全界面放开如下端口(888,3306,5000)
五.python项目管理器部署项目
- 选择添加项目
- 设置项目参数
- 项目名称:自行填写
- Python版本:选择已安装中自己需要的(建议大于等于自己项目使用的python版本)
- 启动方式:这里选择uwsgi(非常重要,不然会导致pip虚拟环境上的错误)
- 框架:flask
- 项目路径:位于wwwroot刚刚自己解压的项目位置
- 日志路径:填写项目路径后自动生成
- 启动文件:我这里是app.py文件,里面main函数调用了flask的开始命令
- 端口:推荐为5000可以自行填写想映射的端口(前提是在宝塔面板与云服务器面板中开放了此端口)
- 运行用户:root
- 添加项目的映射
映射到自己的域名,我这里没有域名就直接填写直接的公网ip就行了
六.项目网站设置
- 在www/wwwroot/目录下,建立一个以自己服务器公网ip命名的文件夹
- 文件夹中放入app.py(启动py文件),flask项目里的网页(我这里只有一个index),uwsgi.ini
- uwsgi.ini如下编写
[uwsgi]
module = run:app
master = true
processes = 3
threads = 2
# chdir是项目目录,一定要填对!!
chdir = /www/wwwroot/tree
# wsgi-file= 自己项目的启动文件
wsgi-file= /www/wwwroot/tree/app.py
logto = /www/wwwroot/tree/logs/error.log
chmod-socket = 660
vacuum = true
master = true
max-requests = 1000
socket = 127.0.0.1:5000
- 重新启动项目即可在自己的公网ip:端口网页查看到自己的项目
比如我是http://1.15.238.69:5000/
中途遇上的BUG与总结
- 排查自己的步骤中是否所涉及的端口都在服务器和面板中开放
- 如果在创建项目时出现pip需要虚拟环境报错,即把启动方式改为uwsgi(这里我用其他方式就是没法创建,找了很多的资料都没用,只有用uwsgi方式才不会报错)
- 打开自己的网站发现500错误
这种情况一般是服务器连接数据库部分出了问题,自行修改源代码中的数据库部分,并修改后重新启动项目
- 在项目的日志界面里即为flask的log内容,如果出现bug可以在日志里自行寻找调试