uWSGI+Nginx部署Flask项目
2017-05-14 18:12
537 查看
前言
内部需要每天出一版数据,而每天都需要我手动打包压缩,然后上传到公司内部的文件共享服务器上,然后我再把共享文件的地址分发出去,贼TM的烦,而且作为一个IT人员感觉这种做法也贼TM的傻逼,所以就花了几天时间学习了一下flask,并完成了一个非常非常简单的系统,用来分发数据,下面主要写一下flask项目的部署问题。
环境
服务器环境:CentosPython:2.7
具体安装过程
FlaskFlask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。
先安装virtualenv,这个软件可以将Python环境虚拟出来,在多个工程中使用不同的Python环境,可以很好的隔离各种环境问题
pip install virtualenv
安装完成之后,在所需要部署的工程的根目录下(即manage.py所在目录),执行
virtualenv venv,即可在当前目录下发现一个venv/目录
使用
source venv/bin/activate命令来启用虚拟环境,启用后你当前的路径名的前面会有一个(venv)
然后我们就可以在这里安装本项目相关的Python模块了
安装Flask
pip install flask
然后就是
pip install -r flaskrelated.txt,通过这个清单文件来统一安装所需的依赖
uWSGI
uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。
执行
pip install uwsgi进行安装
在待部署的工程的根目录下新建一个uwsgi的配置文件uwsgiconfig.ini(uwsgi支持多种配置文件格式,xml,ini,json等)
配置文件的内容如下:
[uwsgi] # uwsgi 启动时所使用的地址与端口 socket = 127.0.0.1:8001 # 指向网站目录 chdir = /data/python_web_project/sfa_data_distribution/ # python 启动程序文件 wsgi-file = manage.py # python 程序内用以启动的 application 变量名 callable = app # 处理器数 processes = 4 # 线程数 threads = 2 #状态检测地址 stats = 127.0.0.1:9191 # 当目标文件夹中有文件内容发生变动,自动重启uwsgi touch-reload = /data/python_web_project/sfa_data_distribution/app/
chdir是指向你的工程的根目录的,被网上一个教程坑了(也可能是我自己眼瞎,尴尬尴尬),把这里填写成工程文件所在的目录了(即:/data/python_web_project/),然后执行uwsgi的时候一直报”打开manage.py文件失败”的错。最骚的是touch-reload这个配置,配置这个选项后,当这个选项指向的目录文件有变动时,就会自动重启uwsgi以更新你的flask项目,类似热更。
最后执行
uwsgi uwsgiconfig.ini来启动uwsgi
Nginx
Nginx (“engine x”) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。
由于我是在centos下部署,所以安装Nginx就直接执行
yum install nginx就可以了
配置Nginx,在centos下使用yum安装的,直接到
/etc/nginx/目录下,然后有一个 nginx.conf文件,这个就是当前的配 置文件,修改部分如下:
server { listen 80 default_server; listen [::]:80 default_server; server_name 192.168.14.62; #此处是你的公网IP,我这里是内部局域网的IP地址 root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8001; #这里要和你的uwsgiconfig.ini配置文件中的socket字段配置一致 uwsgi_param UWSGI_PYHOME /data/python_web_project/sfa_data_distribution/venv; #工程的虚拟环境目录 uwsgi_param UWSGI_CHDIR /data/python_web_project/sfa_data_distribution; #工程的根目录 uwsgi_param UWSGI_SCRIPT manage:app; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
需要我们配置的几个地方,我已经注释出来了,大家可以根据自己的需要,进行修改配置。
最后启动nginx就可以啦:
nginx
在浏览器里访问以下远程主机试试:
相关文章推荐
- Flask学习11:阿里云新手Flask + nginx + uwsgi + ubuntu的完整项目部署教程
- Python-在CentOS7上使用nginx+uwsgi部署Flask框架开发的Web项目
- flask项目部署:nginx +uwsgi
- Flask+uwsgi+nginx项目部署
- Flask项目部署文档(ubantu+nginx+uwsgi+supervisor)
- 配置阿里云CentOS7.2+nginx+uwsgi 部署flask项目
- 在MAC使用Nginx+uWSGI部署Flask项目
- Flask+uWSGI+Nginx部署过程
- Flask + Nginx + uwsgi 部署过程
- flask + nginx + uwsgi的部署小记
- Nginx+uwsgi+flask部署
- 利用gunicorn、supervisor、nginx 等部署flask项目
- django1.8+uwsgi+nginx+supervisord部署项目笔记
- Flask+uWSGI+Nginx部署过程
- 基于nginx和uWSGI在Ubuntu系统上部署Django项目
- 使用uWSGI+nginx部署Django项目
- flask实例项目发布到centos-nginx+uWSGI+flask
- python的django项目uwsgi+nginx的部署
- nginx1.4.7+uwsgi+django1.9.2项目部署,liunx系统为ubuntu14.0.4。
- Nginx+uwsgi+Flask部署