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,内容如下:
【注意】:http = :5000只是为了该阶段测试用,后面如果使用到nginx代理,则需要改为socket = 127.0.0.1:5000。
另外callable = app中的app要和flask的demo中的application变量名一致。
测试:应用config.ini启动uwsgi:
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
浏览器测试 访问:
好了,到此环境我们已经搭建好了,接下来我们要搭建一个web blog系统:
1.下载源码:
目录如下:
接着我们创建一个虚拟环境:
再看目录多了一个 venv目录,其实就是一个可以独立运行的环境而已!
2。安装框架
接下来我们来安装框架依赖的库:
大概有30多个库,一直让它安装完成。
3.设置系统账号
4.数据迁移
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 uwsgi nginx搭建环境和web框架的使用。