写在前面
如果想看真教程的话请移驾教程传送门,详细到令人发指。
写好了一个半吊子flask项目,又恰逢双十一忍不住买了服务器,所以就有了这篇文章。第一次部署,查了一堆资料耗时二天终于部署成功。当部署成功以后回过头来看看部署时遇到的坎坷,觉得自己像个智障。另外,因为是自己记录过程,所以我已经熟记于心的一些东西就全部省掉了。如果没能帮到您,深表歉意。
部署实施第一步
万事开头难这个是真的,因为只是配置uwsgi就用去了大半时间。起初为了速度,就随便找了篇站内的教程复制、粘贴、修改,结果就是知其然不知其所以然,路路不通。百感交集之际无奈去啃了一丢丢官方文档,然后豁然开朗,虽然了解不深但是足以解我燃眉之急。那么uwsgi到底要怎么配置呢?(配置uwsgi时项目代码已经在服务器,并且位于虚拟开发环境下)
- 安装
- source activate # 开启虚拟开发环境模式
- pip install uwsgi # 安装uwsgi
配置
uwsgi配置文件支持很多格式,我采用.ini格式,命名为uconfig.ini具体内容如下:启动uwsgi
命令输入uwsgi uconfig.ini
外部访问测试
此时在外部访问 公网IP:5000就可以访问了
[uwsgi]
# 外部访问地址,可以指定多种协议,现在用http便于调试,之后用socket
http = 0.0.0.0:5000
# 指向项目目录
chdir = /home/pythonproject/my_flask/py3env/myblog/
# flask启动程序文件
wsgi-file = manage.py
# flask在manage.py文件中的app名
callable = app
# 处理器数
processes = 4
# 线程数
threads = 2
#状态检测地址
stats = 127.0.0.1:9191
部署实施第二步
安装 Supervisor:sudo apt-get install supervisor
Supervisor可以同时启动多个应用,最重要的是,当某个应用Crash的时候,他可以自动重启该应用,保证可用性。
Supervisor 的全局的配置文件位置在:/etc/supervisor/supervisor.conf
正常情况下我们并不需要去对其作出任何的改动,只需要添加一个新的 *.conf 文件放在/etc/supervisor/conf.d/
下
[program:myblog]
# 启动命令入口
command=/home/pythonproject/my_flask/py3env/bin/uwsgi /home/pythonproject/my_flask/py3env/myblog/uconfig.ini
# 命令程序所在目录
directory=/home/pythonproject/my_flask/py3env/myblog
#运行命令的用户名
user=root
autostart=true
autorestart=true
#日志地址
stdout_logfile=/home/pythonproject/my_flask/py3env/myblog/uwsgi_supervisor.log
启动服务:sudo service supervisor start
终止服务:sudo service supervisor stop
重启服务:sudo service supervisor restart
这个工具还不慎了解,因为部署时一次配置通过了,就懒得去看官方文档了,之后再说。
部署实施最后一步
安装 Nginx:sudo apt-get install nginx
Nginx是轻量级、性能强、占用资源少,能很好的处理高并发的反向代理软件。Ubuntu 上配置 Nginx 也是很简单,不要去改动默认的 nginx.conf 只需要将/ext/nginx/sites-available/default
文件替换掉就可以了。
新建一个 default 文件:
server {
listen 5000;
server_name 公网IP;
location / {
uwsgi_pass 127.0.0.1:8001;
include uwsgi_params;
uwsgi_param UWSGI_PYHOME /home/pythonproject/my_flask/py3env/Scr ipts; # 指向虚拟环境目
uwsgi_param UWSGI_CHDIR /home/pythonproject/my_flask/py3env/myb log; # 指向网站根目录
uwsgi_param UWSGI_SCRIPT manage:app; # 指定启动程序
}
启动服务:
sudo service supervisor start
sudo service nginx start