Flask+gunicorn+Nginx+云服务器
访问服务器也有子流程
- url先会访问 Nginx 服务器(作用: 负载均衡; 解释: url访问的时候,减轻服务器压力,可以分流给其他多个服务器, 使得多个服务器可以分摊的接收url )
- Nginx 会决定这个url分配给接下来的哪一个服务器
- 接下来的服务器是真正代码运行的载体服务器
2.部署环境
- 部署环境的前提就是-得有地方部署,所以需要一个大的容器;
- 申请购买或者免费试用云服务器;
- 部署环境的话其实就是需要什么就去安装什么
- 数据库是不可避免的,此处以安装MYSQL, redis为例
- 安装 flask 项目需要的运行虚拟环境(一般目前Linux都自带python3, 不需安装)
- 安装Nginx服务器
- 将代码和数据库表都导入服务器中
- 在虚拟环境中安装 gunicorn
安装-配置Nginx
sudo apt-get install nginx
server {
# 监听80端口listen 80 default_server;listen [::]:80 default_server;root /var/www/html;index index.html index.htm index.nginx-debian.html;server_name _;location / {
# 请求转发到gunicorn服务器proxy_pass http://127.0.0.1:5000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
}
提示: 数据库可以备份导入,代码scp上传或者git下来; 具体资源导入不举例
pip install gunicorn
gunicorn -w 2 -b 127.0.0.1:5000 启动文件名(无后缀):对象
启动程序,必须在包含启动文件的当前目录(文件/对象名字不能错)
启动后可能外网不一定能够访问
可能遇到的问题或者需要注意的问题:
1.虚拟环境的创建; 如果是Mac – 需要添加一行信息;但一般服务器是linux
2.curl ip地址:5000 --查看回复的内容 ; (记得重启Nginx)
– 如果是403;需要在nginx.conf文件中查找到user然后的 user root www-data;
– 如果是500;gunicorn启动时 对象或者文件名错误
11. 使用端口是云服务器上的公共ip
12. 最好关闭防火墙,如果不关闭,需要释放端口