【Python Flask程序部署到腾讯云服务器(Ubuntu 18.04)作为微信小程序后台】系列文章
最近因为课程学习需要尝试把Python Flask程序部署到腾讯云的服务器上作为微信小程序的后台服务器。折腾了好几天,重装了几次系统,从 Windows Server 到 CentOS 再到 Ubuntu 。最后在DigitalOcean的Community才找到了合适的教程,本文章用来记录从开始到部署成功作为小程序后台的过程,希望能给其他刚开始尝试的小白提供一些帮助。
在腾讯云-实例-控制台将云服务器重装系统为 Ubuntu Server 18.04.1 LTS 64位,登录服务器。
在上面的界面输入执行以下命令:
sudo apt update
sudo apt install python3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools
输入 y ,回车。一大串滚动过后回到命令行,表示安装成功。(60.5MB文件大小并不一定,与你当前已经安装的程序有关系)
sudo apt install python3-venv
与我们在开发flask程序时在本地安装的虚拟环境类似。
mkdir ~/myproject
cd ~/myproject
python3.6 -m venv myprojectenv
source myprojectenv/bin/activate
你会发现命令行最前面增加了(myprojectenv)
,表示我们已经进入了刚刚创建的虚拟环境。
pip install wheel
pip install uwsgi flask
由于我是macOS的系统,所以用FileZilla远程连接服务器通过SFPT(sshFTP)上传文件。
由于腾讯云在没有安全规则的情况下是默认关闭所有端口访问的,所以我们需要新建安全规则放通我们使用SFTP需要的22号端口。
在服务器的控制台中选择 “安全组” :
“新建”-“放通22,80,443,3389端口和ICMP协议”-“确定”:
“修改规则”:
“关联实例”:
“新增关联”-“选择实例”-“确认”:
进入站点管理器:
建立新站点:
协议选择SFTP
,主机填写服务器的公网IP
,登录类型选择正常
,用户名为ubuntu
,然后输入之前设置的账户密码即可。
连接成功后就能够看到我们刚刚创建的目录:
刚刚说得有点远,言归正传,我们要将一开始在本地写好的flask测试程序上传到云服务器。
将测试的flask程序的py文件放到myproject文件夹下:
使用以下命令可以在云服务器中看到我们刚刚上传的文件和虚拟环境的文件夹:
ls -a
sudo ufw allow 5000
python myproject.py
结果如下:
然后你可以使用本地浏览器访问http://your_server_ip:5000
,结果如下:
如果无法进入:5000
端口页面,有可能的原因是腾讯云服务器安全规则没有放通,在腾讯云的控制台选择服务器绑定的安全组添加规则即可:
前面的0.0.0.0/0
和::/0
表示准许所有ipv4和ipv6地址访问,后面放通的协议端口填写TCP:5000
,然后点击完成,添加好之后就可以访问得到上面的结果了。
测试完成后,在运行界面按下control+C
即可关闭服务器,回到命令行界面:
在本地创建wsgi.py
文件,在文件中粘贴以下内容,其中第一行的myproject
是之前flask测试程序的文件名,app
是之前flask测试程序中定义的Flask程序变量名:
from myproject import app
if __name__ == "__main__":
app.run()
在本地创建好此py文件后,使用FileZilla将其发送到/myproject
文件夹下,可以在服务器中看到:
运行命令:
uwsgi --socket 0.0.0.0:5000 --protocol=http -w wsgi:app
结果如下:
访问ip:5000
,可以进入以下界面,表明uWSGI服务没有问题:
每一次访问都会在服务器端显示访问结果,200
表示访问成功:
测试完成后,在运行界面按下control+C
即可关闭服务器,回到命令行界面。
我们现在已经在虚拟环境中完成了flask程序在云服务器中的部署,使用deactivate
命令关闭虚拟环境,继续配置增强服务器性能。
【Python Flask程序部署到腾讯云服务器(Ubuntu 18.04)作为微信小程序后台】系列文章
本文参考文章:How To Serve Flask Applications with uWSGI and Nginx on Ubuntu 18.04