今天入手了一臺阿里雲服務器,是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