阿里云部署:Flask+ Nginx + Gunicorn
最近开始学习
FLASK,虽然有ubuntu虚拟机,但是外出实习笔记本不方便携带,手上正好有一台阿里云服务器配有Centos环境,所以想在阿里云上部署然后方便学习。
先看看成功后的图:实现利用公网ip进行访问

项目布局
仅用于进行测试,不是全部项目
项目布局以Flask官方文档推荐的为主

Flask环境安装
推荐使用虚拟环境进行安装
-
创建项目文件夹并创建虚拟环境
mkdir flask-tutorial cd flask-tutorial python3 -m venv venv -
激活虚拟环境
. venv/bin/activate -
安装Flask
pip install Flask
gunicorn安装
-
gunicorn安装pip install gunicorn -
创建一个简单的测试文件
test.py来看看gunicorn是否安装成功# test.py from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "<h1>Hello World</h1>"尝试运行:
gunicorn -w 4 -b 127.0.0.1:5000 test:app若没有报错即为成功安装,根据提示
ctrl + c退出- -w 4 :表示 4 个进程
- -b 127.0.0.1:5000 :表示flask使用5000端口
test:app:test为程序名,app为flask的实例对象
nginx环境安装
-
安装
sudo yum install nginx -
配置文件
vim /etc/nginx/conf.d/default.conf配置文件如下:
server { listen 80; server_name 你的服务器的ip地址; location / { proxy_pass http://127.0.0.1:5000; } } -
重启
systemctl restart nginx.service nginx -s reload
配置web访问端口
-
设置
iptables-
安装
yum install iptables-services -
修改配置文件
vim /etc/sysconfig/iptables -
加入以下配置项
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -
重启服务
systemctl restart iptables
-
-
配置防火墙
firewall-
启动
systemctl start firewalld -
配置
firewall-cmd --add-port=80/tcp --permanent -
重启
systemctl restart firewalld -
查看是否配置成功
firewall-cmd --list-all
-
-
在阿里云控制台里配置安全组


运行test.py
gunicorn -w 4 -b 127.0.0.1:5000 test:app
通过http://你的服务器ip地址:80就可以访问了,能看到 hello world 就成功了
🛑但是,到目前为止,我们所运行的只是一个单一的小程序而不是工程项目,而本文的重点是工程项目的配置
工程项目
-
创建
flaskr目录,并创建__init__.pymkdir flaskr cd flaskr# __init__.py import os from flask import Flask def create_app(test_config = None): # Create and configure the app app = Flask(__name__, instance_relative_config = True) app.config.from_mapping( SECRET_KEY = 'dev', DATABASE = os.path.join(app.instance_path, 'flaskr.sqlite'), ) if test_config is None: app.config.from_pyfile('config.py', silent=True) else: app.config.from_mapping(test_config) try: os.makedirs(app.instance_path) except OSError: pass @app.route('/') def hello(): return 'Hello World' @app.route('/success') def success(): return 'Gqq, you have successed to deploy the environment.' from . import db db.init_app(app) return app -
如果按照上面的经验访问应该是
gunicorn -w 4 -b 127.0.0.1:5000 flaskr.__init__:create_app,然而这出错了,所以不能对gunicore进行简单的参数设置
-
创建
server.py用来配置from flaskr.__init__ import create_app if __name__ == '__main__': create_app = create_app() create_app.run() else: gunicorn_app = create_app() -
执行命令
gunicorn -w 4 -b 127.0.0.1:5000 server:gunicorn_app此时,便可以成功运行啦。
建议把上述命令放大
bash.sh中,之后只需执行. bash.sh就可以不用记住那么长的命令
一个不错软件
为了方便远程连接服务器,在本地下载
MobaXterm非常好用便捷,比Xshell好用多了

本文参考:
Write by
Gqq

浙公网安备 33010602011771号