Flask-项目部署
WEB工作原理
- 客户端 <=> WEB服务器(nginx)<=> WSGI(uWSGI)<=> Python(Flask)<=> 数据库(MySQL)
nginx服务器
- 讲Linux时已安装
- 虚拟主机配置
- 在
nginx
主配置文件nginx.conf
最后一个大括号前添加include vhost /*.config;
- 在
conf
目录创建vhost
文件夹 - 在
vhost
文件夹中创建一个新的虚拟主机配置文件www.blog.com.conf - 里面写上
server
,即代表一个虚拟主机(一个网站)1
2
3
4
5
6
7
8
9server {
listen 80;
server_name www.blog.com blog.com;
location / {
root html/blog;
index index.html;
}
}
- 在
uWSGI
- **说明:**实现了
WSGI
协议的应用程序,使用非常方便 - 安装:
pip install uwsgi
- 配置:
1
2
3
4
5
6
7
8http # 采用http协议启动
socket # 采用socket协议启动
wsgi-file # 将数据交给那个模块处理
callable # 具体可调用的对象
chdir # uwsgi启动后的当前目录
daemonize # 后台,需要指定一个日志文件
processes # 指定程序运行的进程数
threads # 指定程序运行的线程数 - 简单启动示例(http协议)
1
uwsgi --http 127.0.0.1:5000 --wsgi-file blog.py --callable app
socket
方式启动:nginx
转发请求,以socket
协议转发到127.0.0.1:5000
1
2
3
4location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:5000;
}uwsgi
以socket
协议启动,监听127.0.0.1:5000
- 示例:
uwsgi --socket 127.0.0.1:5000 --wsgi-file blog.py --callable app
- 将启动配置写入文件
uwsgi.ini
1
2
3
4
5
6[uwsgi]
socket = 127.0.0.1:5000
wsgi-file = blog.py
callable = app
# 后台启动,需要指定日志文件,日志文件需要有操作权限
daemonize = /var/log/uwsgi.log
静态文件处理
- **说明:**上面所有的请求都转发是没有必要的,譬如:静态文件直接返回即可
- 准备:
- 创建static目录
- 拷贝几个用于测试的静态文件,如:图片、js、css等
- 设置转发规则:
1
2
3
4location /static {
root html/blog;
# alias html/blog/static;
}