使用nginx、gunicorn部署flask应用

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错误,查找相关资料,得到以下的解决方案。

  1. 打开终端输入如下命令
    sudo vim /etc/nginx/nginx.conf
  2. 修改文件第一行
    user root;
    再次访问发现错误解决了。

以上就是使用nginx+gunicorn 部署应用的具体流程了,如有纰漏,欢迎指正。

我的博客地址

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值