本项目分为以下三层架构,Web 框架为 Flask,WSGI 层选用 uWSGI ,Web 服务器采用 Nginx。
项目地址
GitHub - wish007/shadowsocks-flask
创建虚拟环境
安装虚拟环境库 virtualenv
|
|
创建名为 flask 的虚拟环境
注意:
下面创建虚拟环境命令的命令可能会报错,因为命令执行文件可能不在当前目录
|
|
正确的做法:
- 使用命令查找
virtualenv安装目录
|
|
- 创建名为
flask的虚拟环境命令
|
|
激活虚拟环境
|
|
退出虚拟环境(直接在虚拟环境状态)
|
|
安装Flask的Python库依赖
在服务器创建Flask项目目录,将本地项目文件放在此目录下
|
|
在虚拟环境中安装所有依赖
|
|
如果没有requirements.txt文件,先在本地开发环境执行以下命令生成
|
|
测试虚拟环境
|
|
以下有正确返回说明Flask运行正常
|
|
安装uWSGI
安装 uWSGI
|
|
配置 uWSGI
在 Flask 项目目录下新建 uWSGI 配置文件 uwsgi_config.ini 并输入
|
|
启动 uWSGI
|
|
出现下面输出说明配置正确
关闭 uWSGI
|
|
安装Nginx
安装 Nginx
|
|
配置 Nginx
配置文件目录:/etc/nginx/conf.d 目录下的 default.conf
|
|
开启 Nginx
|
|
关闭 Nginx
|
|
安装supervisor
安装完 uWSGI、Nginx 后,Nginx可以直接设置开机启动,但 uWSGI 还不能直接开机启动,这里我用 Supervisor 来启动并守护 uWSGI 运行,在全局 Python 环境安装 Supervisor:
|
|
配置 supervisor
配置文件目录:/etc/supervisord.conf
|
|
启动 supervisor
|
|
启动 supervisor 后,可以手动关闭
uwsgi进程,pstree后发现uwsgi进程的确被关闭,稍等片刻再查看进程发现uwsgi进程会再次出现,说明守护进程功能正常。
关闭 supervisor
|
|
设置 supervisor 开机启动
|
|
查看开机启动项
12 > chkconfig>