最近做了个小项目,然后把flask部署到阿里云服务器上
在本地运行flask程序时,只需在浏览器输入
127.0.0.1:5000/
一开始以为在服务器上也一样,运行flask程序,然后直接在浏览器输入IP就行
可惜不是这样,网上也有很多教程,这里写一下一个小白的学习过程
使用 flask+gunicorn+nginx 将web部署到服务器
将flask部署到服务器需要两样东西
1. web服务器
用于响应http请求,例如nginx, apache
使用web服务器做一个本地代理,当有http请求时,通过代理转到本地的5000端口
2. wsgi容器
保证web服务器(nignx)和web框架(flask)之间的相关通信,例如uwsgi, gunicorn
1.在服务器上安装python环境及flask和gunicorn
pip install flask
pip install gunicorn
2.在一个文件夹内写了个入门程序 app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World"
3.测试下gunicorn
在该文件夹内
gunicorn -w 4 -b 127.0.0.1:5000 app:app
如果没有报错,说明运行正常 (然后可以ctrl c)
其中
1.阿里云使用centos, 直接下载
sudo yum install nginx
2.修改配置文件
vim /etc/nginx/conf.d/default.conf
最简单的配置文件
server {
listen 80;
server_name #IP地址;
location / {
proxy_pass http://127.0.0.1:5000
}
}
3.重启
service nginx restart
nginx -s reload
1.打开iptables
安装
yum install iptables-services
然后直接修改配置文件
vim /etc/sysconfig/iptables
加入一句话
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
可以使用iptables -L -n查看端口情况
重启iptables
systemctl restart iptables
然后可以再 iptable -L -n 查看下
2.打开firewall
直接
firewall-cmd --add-port=80/tcp --permanent
其中,–permanent为永久,如果没有的话,重启后开放的端口就失效了
重启
systemctl restart firewalld
可以查看情况,是否出现port 80
firewall-cmd --list-all
3.控制台
在云服务器管理控制台添加安全规则
好难找。。。
然后就可以了
只需在程序文件夹内
gunicorn -w 4 -b 127.0.0.1:5000 app:app
然后在浏览器输入 http://ip:80 就行了