1. Virtualenv
使用pip安装virtualenv:

# python2
pip install virtualenv
# python3
pip3 install virtualenv

mkdir ~/python
cd ~/python

创建虚拟环境的目录:

virtualenv venv
venv的目录是用来存放本地python的镜像,以及后面通过pip安装的包将安装到myenv目录里,而不是系统的目录里。
在安装之前,需要先激活刚刚建立的虚拟环境:
source venv/bin/activate

vagrant@vagrant:/htdocs/python$ source venv/bin/activate
(venv) vagrant@vagrant:/htdocs/python$

在虚拟环境中安装flask

(venv) www@ubuntu:~/myflask$ pip install flask

2. 编写Flask的hello.py

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello, World!"

if __name__ == '__main__':
    app.run(
      host='0.0.0.0',
      port= 5000,
      debug=True
    )

保存为:hello.py

3. uwsgi
在虚拟环境中安装uwsgi
注意:这里需要先安装两个依赖,我已经提前装好了,不再重复。安装指令:apt-get install build-essential python-dev
pip install uwsgi
编写uwsgi的配置文件,命名为uwsgi.ini,内容如下:

flask可以用nginx么_flask可以用nginx么

【注意】:http = :5000只是为了该阶段测试用,后面如果使用到nginx代理,则需要改为socket = 127.0.0.1:5000。
另外callable = app中的app要和flask的demo中的application变量名一致。

测试:应用config.ini启动uwsgi:

flask可以用nginx么_flask可以用nginx么_02

4. Nginx

上面已经介绍到使用uwsgi接管flask应用,现在我们需要使用nginx来代理,因此我们需要对uwsgi的配置做一些小修改,
先crtl+C关闭uwsgi服务。

server {
    listen 80;
    server_name lch.python.com;
    root "/htdocs/python/";

    location / {
        try_files $uri @em;
    }

    error_log  /var/log/nginx/lch.python.com-error.log error;

    location @em {
        proxy_connect_timeout 159s;
        proxy_send_timeout   600;
        proxy_read_timeout   600;
        proxy_buffer_size    64k;
        proxy_buffers     16 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
        proxy_pass_header Set-Cookie;
        proxy_redirect     off;
        proxy_hide_header  Vary;
        proxy_set_header   Accept-Encoding '';
        proxy_ignore_headers Cache-Control Expires;
        proxy_set_header   Referer $http_referer;
        proxy_set_header   Host   $host;
        proxy_set_header   Cookie $http_cookie;
        proxy_set_header   X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        include      uwsgi_params;
        uwsgi_pass   127.0.0.1:5000;                                    # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理
        uwsgi_param UWSGI_PYHOME /htdocs/python/venv;   # 指向虚拟环境目录
        uwsgi_param UWSGI_CHDIR  /htdocs/python/;           # 指向网站根目录
        uwsgi_param UWSGI_SCRIPT hello:app;                     # 指定启动程序
    }
}

重启nginx:
sudo service nginx start

在windows的host文件中绑定:
192.168.33.10  lch.python.com

在ubuntu虚拟机中绑定:
127.0.0.1  lch.python.com

浏览器测试 访问:

flask可以用nginx么_flask可以用nginx么_03

 

 

 

好了,到此环境我们已经搭建好了,接下来我们要搭建一个web blog系统:

1.下载源码:

flask可以用nginx么_flask_04

目录如下:

flask可以用nginx么_flask_05

接着我们创建一个虚拟环境:

flask可以用nginx么_python flask nginx _06

再看目录多了一个 venv目录,其实就是一个可以独立运行的环境而已!

2。安装框架

接下来我们来安装框架依赖的库:

flask可以用nginx么_flask可以用nginx么_07

大概有30多个库,一直让它安装完成。

3.设置系统账号

flask可以用nginx么_nginx_08

4.数据迁移

flask可以用nginx么_python flask nginx _09

flask可以用nginx么_flask_10

 

flask可以用nginx么_flask_11

5.修改nginx配置:

server {
    listen 80;
    server_name lch.python.com;
    root "/htdocs/python/flask_script/";

    location / {
        try_files $uri @em;
    }

    error_log  /var/log/nginx/lch.python.com-error.log error;

    location @em {
        proxy_connect_timeout 159s;
        proxy_send_timeout   600;
        proxy_read_timeout   600;
        proxy_buffer_size    64k;
        proxy_buffers     16 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
        proxy_pass_header Set-Cookie;
        proxy_redirect     off;
        proxy_hide_header  Vary;
        proxy_set_header   Accept-Encoding '';
        proxy_ignore_headers Cache-Control Expires;
        proxy_set_header   Referer $http_referer;
        proxy_set_header   Host   $host;
        proxy_set_header   Cookie $http_cookie;
        proxy_set_header   X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        include      uwsgi_params;
        uwsgi_pass   127.0.0.1:5000;  # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理
        uwsgi_param UWSGI_PYHOME /htdocs/python/flask_script/venv; # 指向虚拟环境目录
        uwsgi_param UWSGI_CHDIR  /htdocs/python/flask_script; # 指向网站根目录
        uwsgi_param UWSGI_SCRIPT manager:app; # 指定启动程序
    }
}

重启nginx.

6.修改

uwsgi.ini的内容如下:

[uwsgi]
master = true
#wsgi-file = /htdocs/python/hello.py
wsgi-file = /htdocs/python/flask_script/manager.py
callable = app
socket=0.0.0.0:5000
processes = 4
threads = 2
buffer-size = 32768
plugins=python
touch-reload=/htdocs/python/app

然后重启uwsgi服务。

最后让我再次打开浏览器,访问:http://lch.python.com/ ,可以看到我们搭建的web blog系统可以正常运行了。

flask可以用nginx么_flask可以用nginx么_12

好了,以上 就介绍了flask uwsgi nginx搭建环境和web框架的使用。