WEB工作原理
- 客户端(chrome) <=> 服务器(nginx) <=> WSGI(uWSGI) <=> Python(Flask) <=> 数据库(MySQL)
- Flask框架自带测试服务器,所以开发时单独就可运行,但是生产环境中,必要要进行完整部署。
nginx服务器
- 安装:sudo apt-get install nginx
- 说明:简单使用nginx
- 添加虚拟主机:
-
在/etc/nginx/sites-available下创建虚拟主机配置文件www.blog.com,内容如下:
server { listen 80; server_name www.blog.com blog.com; location / { root /var/www/blog; index index.html; } }
-
创建软链接:
ln -s /etc/nginx/sites-available/www.blog.com /etc/nginx/sites-enabled/www.blog.com -
重启nginx服务
-
创建目录:/var/www/blog
-
在/var/www/blog下创建文件index.html
-
添加本地域名解析(劫持),修改配置文件:/etc/hosts,在末尾添加:
127.0.0.1 www.blog.com
127.0.0.1 blog.com
-
Flask项目
- 说明:将flask项目拷贝到/var/www/blog目录下
uWSGI
-
说明:uWSGI是实现了WSGI协议的应用程序。
-
安装:pip3 install uwsgi
-
配置:
http # 以http协议启动 socket # 以socket方式启动 chdir # uwsgi启动的项目的根目录 wsgi-file # 数据交给哪个模块处理 callable # 具体可调用的对象 daemonize # 后台运行(需要指定一个日志文件) processes # 指定使用的进程数 threads # 指定使用的线程数
-
启动演示(以http协议启动)
uwsgi --http 127.0.0.1:5000 --wsgi-file manage.py --callable app -
socket方式启动
-
需要nginx转发请求
server { listen 80; server_name www.blog.com blog.co location / { # 包含请求参数 include uwsgi_params; # 以socket方式转发请求 uwsgi_pass 127.0.0.1:5000; } }
一定不要忘记重新启动nginx。
-
静态资源处理
-
说明:静态文件的请求没有必要转发,因为nginx自己就可以处理。所以我们想要重写转发规则。
-
静态资源的路由转发规则:
location /static { root /var/www/blog; # 或 alias /var/www/blog/static; }
-
测试准备
- 在项目目录下创建static文件夹
- 拷贝一张图片gyy.jpeg到static目录
-
测试:看到图片表示OK