CentOS 在 Pytohn3.4 环境下部署 flask 项目
一、环境
系统:CentOS
Python版本:3.4.9
需要的组件:Python 三方库 uwsgi、nginx
二、安装
首先安装 Python 第三方库 uwsgi,这里我使用了pipenv虚拟环境,关于该虚拟环境的用法可参考我之前的博客。
pip install uwsgi
这里可能会出现报错:
Python.h: No such file or directory
原因是缺乏环境依赖,可以安装 python34-delevl 库解决
yum install python34-devel
安装完成之后,进入flask项目主目录,新建一个配置文件 uwsgiconfig.ini
[uwsgi]
socket = 127.0.0.1:8001 //启动程序的端口,和flask端口不一样,选一个没被占用的端口就可以
chdir = /home/www/flask_object //flask项目所在目录
wsgi-file = manage.py //flask程序的启动文件,python manage.py runserver 来启动项目的
callable = app //程序内启用的application变量名
processes = 4 //处理器个数
threads = 2 //线程个数
stats = 127.0.0.1:9191 //获取uwsgi统计信息的服务地址
接下来配置 nginx 的配置文件,这里建议使用虚拟目录,也就是在 vhost 下新建 conf,我使用的是 lnmp 一键包,所以这里不叙述如何添加虚拟网站。
location / {
include uwsgi_params; //这里是导入的uwsgi配置
uwsgi_pass 127.0.0.1:8001; //需要和uwsgi的配置文件里socket项的地址
//相同,否则无法让uwsgi接收到请求。
uwsgi_param UWSGI_PYHOME /home/www/WebBlogold/venv; //python的位置(虚拟环境下)
uwsgi_param UWSGI_CHDIR /home/www/WebBlogold/flask_object; //项目根目录
uwsgi_param UWSGI_SCRIPT manage:app; //启动项目的主程序(在本地上运行
//这个主程序可以在flask内置的
//服务器上访问你的项目)
}
这里我使用的虚拟环境是 pipenv ,故而 通过 pipenv --venv 可以得到虚拟环境中的解释器位置
>>> pipenv --venv
/root/.local/share/virtualenvs/wechart-iGsH8lUW
至此配置完成。
三、运行
进入 flask 项目目录,即 uwsgiconfigl.ini 所在目录,执行以下命令
uwsgi uwsigconfig.ini
之后显示如下,即正常运行
这里使用了 root 权限,生产环境下绝对不可以用root权限!