Flask:10-项目部署(02):让更多的朋友访问你的装逼利器
项目部署
WEB工作原理
- 客户端(chrom) <=> WEB服务器(nginx) <=> WSGI(uWSGI) <=> Python(Flask) <=> 数据库(MySQL)
- Flask框架自带一个测试服务器,开发时直接运行即可;但是在生成环境中,必须进行完整部署。
nginx服务器
-
安装:
sudo apt-get install nginx
-
添加虚拟主机:
- 在
/etc/nginx/sites-available
目录下创建虚拟主机配置文件www.blog.com
server { listen 80; server_name www.blog.com blog.com; location / { root /var/www/blog; index idnex.html; } }
- 创建软链接
sudo ln -s /etc/nginx/sites-available/www.blog.com /etc/nginx/sites-enabled
- 重启nginx服务(若重启失败,可以关闭然后再打开)
- 创建目录:
/var/www/blog
,然后在目录下创建index.html
文件 - 添加本地域名解析,修改配置文件
/etc/hosts
,在末尾添加如下内容:
127.0.0.1 www.blog.com 127.0.0.1 blog.com
- 在
移植博客项目
- 将书写好的项目拷贝到
/var/www/blog
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 blog.py --callable app
-
以socket形式启动
- nginx转发请求
server { listen 80; server_name www.blog.com blog.com; location / { #root /var/www/blog; #index idnex.html; # 包含请求参数 include uwsgi_params; # 以socket形式转发请求数据 uwsgi_pass 127.0.0.1:5000; } }
提醒:一定不要忘记重启nginx。
- 启动uwsgi
uwsgi --socket 127.0.0.1:5000 --wsgi-file blog.py --callable app
- 将启动参数写入配置文件
uwsgi.ini
[uwsgi] socket = 127.0.0.1:5000 wsgi-file = blog.py callable = appp # 后台运行 daemonize = /var/log/uwsgi.log
启动:uwsgi uwsgi.ini
静态资源处理
-
说明:静态资源nginx可以自行处理,没有必要转发到python中。因此需要添加路由转发规则。
-
静态资源路由规则:
location /static { root /var/www/blog; # 等价于 alias /var/www/blog/static; }
-
测试准备:在blog目录下创建static目录,并拷贝一张图片
-
在浏览器地址栏输入:www.blog.com/static/gyy.jpg