今天入手了一台阿里云服务器,是centeros 7.5版本。本文解决的是 Flask 的部署问题。假设你的Flask的应用已经完成,如今只是部署的问题,本文以部署个人二次开发微信订阅号的项目(项目代码参考:http://www.javashuo.com/article/p-vhfjqrge-eg.html)html
我采用的部署方案是:python
- Web 服务器采用 uwsgi host Flask;nginx
- 用 supervisor 引用 uwsgi 做常规启动服务;flask
- 基于 Nginx 做反向代理;服务器
首先, 阿里云服务器能够经过 SSH 指令在本机的终端进行远程链接微信
ssh root@云服务器地址
输入密码后可链接至云服务器。app
参考博客:http://www.javashuo.com/article/p-aelxpavc-eh.htmlssh
一、我是用清单文件一次性安装Flask和他的相关依赖的,这样会更快。个人引用清单(requirements.txt)内容以下: socket
certifi==2018.11.29 chardet==3.0.4 Click==7.0 Flask==1.0.2 Flask-Script==2.0.6 idna==2.8 itsdangerous==1.1.0 Jinja2==2.10 MarkupSafe==1.1.0 requests==2.21.0 SQLAlchemy==1.2.17 urllib3==1.24.1 Werkzeug==0.14.1
二、安装清单文件中依赖的命令以下:网站
(wechatEnv) [root@wanglili my_flask]# pip3 install -r requirements.txt
注意:必定要在运行这个安装以前启用了python 虚拟环境,不然会直接安装到全局去的!
三、上传 Flask的项目文件,整个项目文件结构以下:
/root/my_flask ├── app │ ├── __init__.py │ ├── templates │ │ └── index.html │ └── views │ └── wx_demo.py ├── logs ├── manager.py ├── settings.py └── requirements.txt
到此,项目的准备工做已经作完了,咱们接下来要安装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,参考博客
二、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; } ...... }
[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=true autorestart=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