一、引言
今天入手了一台阿里云服务器,是centeros 7.5版本。本文解决的是 Flask 的部署问题。假设你的Flask的应用已经完成,现在只是部署的问题,本文以部署我的二次开发微信订阅号的项目(项目代码参考:)
我采用的部署方案是:
- Web 服务器采用 uwsgi host Flask;
- 用 supervisor 引用 uwsgi 作常规启动服务;
- 基于 Nginx 作反向代理;
首先, 阿里云服务器可以通过 SSH 指令在本机的终端进行远程连接
ssh root@云服务器地址
输入密码后可连接至云服务器。
二、安装python3、安装并配置虚拟环境
参考博客:
三、在虚拟环境下安装flask以及项目的其他依赖
1、我是用清单文件一次性安装Flask和他的相关依赖的,这样会更快。我的引用清单(requirements.txt)内容如下:
certifi==2018.11.29chardet==3.0.4Click==7.0Flask==1.0.2Flask-Script==2.0.6idna==2.8itsdangerous==1.1.0Jinja2==2.10MarkupSafe==1.1.0requests==2.21.0SQLAlchemy==1.2.17urllib3==1.24.1Werkzeug==0.14.1
2、安装清单文件中依赖的命令如下:
(wechatEnv) [root@wanglili my_flask]# pip3 install -r requirements.txt
注意:一定要在运行这个安装之前启用了python 虚拟环境,否则会直接安装到全局去的!
3、上传 Flask的项目文件,整个项目文件结构如下:
/root/my_flask ├── app │ ├── __init__.py │ ├── templates │ │ └── index.html │ └── views │ └── wx_demo.py ├── logs ├── manager.py ├── settings.py └── requirements.txt
四、安装并配置uWSGI
到此,项目的准备工作已经做完了,我们接下来要安装uWSGI,使用配置文件的方式启动项目,步骤如下:
(wechatEnv) [root@wanglili my_flask]# pip3 install -i https://pypi.douban.com/simple uwsgi # 安装uwsgi
(wechatEnv) [root@wanglili my_flask]# touch uwsgi.ini # 创建配置文件,写入如下内容
[uwsgi]# uwsgi 启动时所使用的地址与端口http-socket = 0.0.0.0:5000# 指向网站目录chdir = /root/my_flask# python 启动程序文件wsgi-file = manager.py# python 程序内用以启动的 application 变量名callable = my_app# 处理器数processes = 4# 线程数threads = 2# 状态检测地址stats = 0.0.0.0:8000
安装完成后,使用命令启动,验证配置是否正确:
(wechatEnv) [root@wanglili my_flask]# uwsgi uwsgi.ini
五、安装Nginx
1、安装nginx,
2、nginx的配置
server { listen 80; # 配置成自己服务器的url地址 server_name 39.xx.xx.130; ...... location / { # 配置nginx的反向代理功能,自己服务器的5000端口,因为接下来的项目使用flask,且将其运行在自己的服务器的5000端口 proxy_pass http://39.xx.xx.130:5000; # root html; # index index.html index.htm; } ...... }
六、安装supervisor并配置
[root@wanglili my_flask]# easy_install supervisor # 注意此时要退出虚拟环境执行
(wechatEnv) [root@wanglili my_flask]# echo_supervisord_conf > /etc/supervisor.conf # 使用命令生成supervisor的配置文件
(wechatEnv) [root@wanglili my_flask]# vi /etc/supervisor.conf # 编辑,在最后写入如下内容
[program:my_flask] # 启动命令入口command=/root/Envs/wechatEnv/bin/uwsgi /root/my_flask/uwsgi.ini # 命令程序所在目录directory=/root/my_flask # 运行命令的用户user=root autostart=trueautorestart=true # 日志地址stdout_logfile=/root/my_flask/logs/uwsgi_supervisor.log
(wechatEnv) [root@wanglili my_flask]# supervisord -c /etc/supervisor.conf # 启动supervisord服务端,指定配置文件启动
(wechatEnv) [root@wanglili my_flask]# supervisorctl -c /etc/supervisor.conf # 进入supervisor的交互模式,可以启动或者关闭服务supervisor> start my_flask