学了一段时间 flask,可是一直没有做过部署, 于是想着怎么部署呢, 想想,先吧服务给搞通吧,于是呢 就先想着去吧服务给搞起来,这里选择的是 Flask+uwsgi+Nginx+Ubuntu, Python 选择的是 2.7.2 这个是 Ubuntu 系统自带的学起来感觉还是简单的 不用去软连,目前自己的 flask 是 python3 写的 ,慢慢去过渡,先吧这个给搞通了,那么在优化也是很顺手的。其实对于很多的原理自己也是一知半解,先吧这个给搭起来,慢慢去了解里面的逻辑什么的。
Nginx 是高效的 web 服务器和反向代理服务器,可以用作负载均衡(当有 n 个用户访问服务器时,可以实现分流,分担服务器的压力),与 Apache 相比,Nginx 支持高并发,可以支持百万级的 TCP 连接,十万级别的并发连接,部署简单,内存消耗少,成本低,但 Nginx 的模块没有 Apache 丰富。Nginx 支持 uWSGI 的 uwsgi 协议,因此我们可以将 Nginx 与 uWSGI 结合起来,Nginx 通过
将动态内容交给 uWSGI 处理。
- uwsgi_pass
官方文档在这
最好的 Nginx 教程在这
uwsgi
- sudo apt-get install python-pip
使用 下面命令去安装 flask
- pip install flask
安装后呢,我们可以去测试下,
import flask
没有报错证明我们的 flask 是安装成功的。那么接下来我们要做的就是安装 ngnix 和 uwsgi。
- sudo apt-get install nginx
安装好以后,我们可以先启动下, nginx start 直接命令行启动,简单粗暴
这样我们的 nginx 就启动成功了,接下来,我们就是利用 pip 去安装 uwsgi
我们安装好后,那么接下来就开始开干吧,
首先我在 hellowflak 下创建一个 app 的 python 的包,
- #app/__init__.py
- fromflaskimport Flask
- app = Flask(__name__)
- fromappimportview
接下来我们去创建 view.py
- fromappimport app
- @app.route('/')
- def index():
- return 'hellow'
那么我们去在 app 同级目录创建 hello.py
- fromappimport app
- if __name__=="__main__":
- app.run()
,那么我们可以在本地利用 Python 去调试我们的程序,
那么我们可以在浏览器去看看,输入地址,可以得到这个,这么来看我们 flask 程序是没有问题的。
那么我们接下来要做的就是让 nginx 去承担 web 服务。
我这里做的是简单粗暴直接删除 nginx 的配置文件
- $ sudo rm / etc / nginx / sites - enabled /
- default
接下来,我在 hellowflask 下创建的一个配置文件
- server {
- listen 8081;
- server_name 127.0.0.1;
- charset utf - 8;
- client_max_body_size 75M;
- location / {
- try_files $uri@app;
- }
- location@app {
- include uwsgi_params;
- uwsgi_pass 127.0.0.1 : 9000;
- }
- }
稍作解释:server_name 可以是域名,也可以写 ip 地址,uwsgi_pass 是表明 Nginx 与 uwsgi 的交流方式。我这里选择的是制定的端口号。
那么我们接下来去软连我们的这个配置到 nginx 中去。
- sudo ln -s /home/liwanlei/Desktop/hellowflask/helloflask_nginx.conf /etc/nginx/conf.d/
- 这样我们再去启动我们的nginx,
- sudo /etc/init.d/nginx restart
这里的不是 welcome 了,而是 502 错误呢,因为我们现在的 uwsgi 文件还没有配置,也没有去启动 uwsgi,那么我们接下来就是要去出来这个 uwsgi,下面的例子是我的配置。
- [uwsgi]
- base = /home/liwanlei/Desktop/hellowflask
- app = hello
- #module = %(app)pidfile = /var/run/uwsgi.pid
- master = true
- wsgi-file = /home/liwanlei/Desktop/hellowflask/hello.py
- pythonpath = /usr/bin/python
- chdir = /home/liwanlei/Desktop/hellowflask
- socket = 127.0.0.1:9000
- callable = app
- logto = %n.log
- plugins = python
- processes = 8
- master = true
这时候我们的 uwsgi 已经配置号,那么我们去启动,
- sudo /usr/bin/uwsgi --ini/home/liwanlei/Desktop/hellowflask/helloflask_uwsgi.ini
我们去重新启动我们的 nginx,
- sudo nginx reload
- 平滑重启可以用用,重新加载配置文件,用新的工作进程代替旧的工作进程。
- sudo nginx -s reload
- 启动后,我这里修改了地址,这里就可以直接访问了,那么我们的部署这样就算可以了,简单的。
完工之后,感觉还是很简单的 有问题那么就去看 log,只要 log 配置得当,那么排除错误是很快的。
有疑问可以加我 qq:952943386 或者我的 qq 群 194704520
希望大家一起冲菜鸟飞到更高
来源: http://www.cnblogs.com/leiziv5/p/7137277.html