时间稍久。
最近喜欢上了仓央嘉措的一句诗 “世间安得双全法,不负如来不负卿”
下面步入正题

一、 安装virtualenv

pip install virtualenv

二、创建虚拟环境

mkdir project_dir
cd project_dir
virtualenv venv #venv虚拟环境文件夹名称 
source venv/bin/activate #进入虚拟环境
pip install uwsgi #安装uwsgi
#deactivate 可以退出虚拟环境

三、创建项目启动文件

项目目录

web_root/
└── project_dir  
│   ├── logs #日志目录
│   └── venv #虚拟目录
│   └── web  #Flask 程序目录
│   │   └──  __init__.py #这是程序包文件。这个目录下还有其它的文件此处略过
│   ├── app.py   
│   ├── requirements.txt #依赖包 pip install -r requirements.txt

app.py启动文件内容

#!/usr/bin/env python
# app入口文件例子
from web import app

if __name__ == "__main__":
    app.run()

四、创建uwsgi配置文件

config.ini 配置内容如下

[uwsgi]
# uwsgi 运行的用户
uid = www
# uwsgi 启动时所使用的地址与端口
http = 0.0.0.0:19949 #浏览器直接访问
#socket = 127.0.0.1:19949 #nginx等反向代理用此方式
# 指向网站目录
chdir = /web_root/project_dir/ 
# python 启动程序文件
wsgi-file = app.py 
# python 程序内用以启动的 application 变量名
callable = app 
# 处理器数
processes = 1
# 线程数
threads = 2
#状态检测地址
stats = 127.0.0.1:19922

五、启动uwsgi

uwsgi config.ini
[uWSGI] getting INI configuration from config.ini
*** Starting uWSGI 2.0.17.1 (64bit) on [Wed Oct 10 16:38:32 2018] ***
...
...
uWSGI http bound on 0.0.0.0:5000 fd 4
uwsgi socket 0 bound to TCP address 127.0.0.1:35012 (port auto-assigned) fd 3
# 启动成功

五、安装supervisor

yum install supervisor
#如果提示没有这个包 就安装一下epel源
yum install epel-release
#换成阿里源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#清除缓存
yum clean all
#重建缓存
yum makecache
#再次安装supervisor
yum install supervisor

六、创建supervisor配置文件

supervisor 安装成功后默认的配置文件为 /etc/supervisord.conf 这里不用管,
进入到 /etc/supervisord.d/ 目录下执行 vim uwsgi_flask_project.ini
配置内容如下

[program:uwsgi_project]
# 启动命令入口
command=/web_root/project_dir/venv/bin/uwsgi /web_root/project_dir/config.ini

# 命令程序所在目录
directory=/web_root/project_dir/
#运行命令的用户名
user=root
autostart=true
autorestart=true
#日志地址
stdout_logfile=/web_root/project_dir/logs/uwsgi_supervisor.log

七、supervisor相关命令

service supervisord start #启动
service supervisord restart #重启
service supervisord stop #关闭

八、后记,优化

  • 开机自启动命令 systemctl enable supervisord
  • nginx 反向代理
  • 静态文件交给nginx分离出来并加cdn
  • 用redis,或mencache做缓存

PS:本文资料收集与互联网,经过修改并整理。系统为centos7.2

标签: none

添加新评论