1.配置gunicorn
1.1安装gunicorn
在虚拟环境中安装安装gunicorn。打开终端输入如下命令
pip3 install gunicorn
1.2使用gunicorn运行项目
首先,在项目的根目录中新建wsgi.py文件输入如下内容:
from app import create_app
app = create_app('production')
打开终端输入运行如下命令:
gunicorn -w 4 -b 0.0.0.0:5000 wsgi:app
上面命令中,wsgi为你所创建的入口文件,不一定需要是wsgi.py你也可以使用其他的名称,对应的上述命令就需要更改,app所对应的是你的项目代码文件根目录的名称。
之后我们访问你的云服务器的公网IP:5000就也可以看到你的应用首页了。
如果你在这里使用了.env
文件去配置一些项目的敏感信息,那么可能会出现一些问题,解决方案。
2.使用nginx提供反向代理
2.1安装nginx
在终端中输入如下命令,安装nginx服务器
sudo apt-get install nginx
安装完成之后,在浏览器中输入你的云服务器公网IP地址就可以看到如下页面,说明安装成功了。
2.2配置nginx
修改ngxin默认的配置文件。
sudo vim /etc/nginx/sites-available/default
添加如下内容:
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
# root /var/www/html;
# Add index.php to the list if you are using PHP
# index index.html index.htm index.nginx-debian.html;
server_name 2dogz.cn; # 如果没有域名直接填写本机的公网IP地址
access_log /var/log/nginx/access.log; # 权限日志记录文件
error_log /var/log/nginx/error.log; # 错误日志记录文件
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
# try_files $uri $uri/ =404;
proxy_pass http://127.0.0.1:8000; # 转发的本地端口连接,后文会讲述
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /static { # 静态文件缓存
alias /home/ubuntu/blog/flask-blog-owner/app/static/; # 项目的静态文件目录
expires 30d; # 缓存有效期
}
}
在对应的位置添加对应的文本内容就行了,根据实际情况进行修改。
上述文本中不需要加入http块,因为在/etc/nginx/sites-availabel/文件夹下的文件会自动添加到/etc/nginx/nginx.conf的http块当中去。
2.3测试配置文件是否正确
sudo nginx -t
终端输出如下图所示的结果,说明配置文件没有出错。如若不是,根据实际情况进行错误排查。
重启nginx。
sudo service nginx restart
3.使用nginx+gunicorn运行应用
在完成上述配置之后,我们就可以通过nginx+gunicorn运行我们自己的应用了。
进入项目根目录,并激活虚拟环境。
gunicorn -w 4 wsgi:app
4.踩的坑
我完成上述步骤之后,访问我服务器的公网地址,可以正常打开网站,但是发现背景图以及一些其他的静态文件没有正确显示,按F12查看,发现出现了403Forbidden错误,查找相关资料,得到以下的解决方案。
- 打开终端输入如下命令
sudo vim /etc/nginx/nginx.conf
- 修改文件第一行
user root;
以上就是使用nginx+gunicorn 部署应用的具体流程了,如有纰漏,欢迎指正。