本文最后更新于 179 天前,其中的信息可能已经有所发展或是发生改变。
有需要在服务器上搭建一个Flask服务,于是采用Flask + Gunicorn + Nginx
方案,特此记录。
首先需要有一个conda环境(或者使用python-virtualenv)和nginx,本文使用的是miniconda3。
还没有安装Conda的请自行百度。
然后安装 nginx
$ sudo apt-get install nginx
在 /var/www
目录下建立一个 flask_server
的文件夹(你的项目目录),然后用 chmod
改一下权限
$ sudo mkdir /var/www/flask_server
$ sudo chmod 777 /var/www/flask_server
接下来创建一个conda虚拟环境flask_server
$ conda create -n flask_server python=3.9
安装完后激活环境
$ conda activate flask_server
这里顺便提一嘴,创建完的环境的python可执行文件在miniconda安装目录下的env/flask_server/bin
目录里面,等会要用到这个。
Gunicorn 绿色独角兽 是一个Python WSGI UNIX的HTTP服务器。接下来使用pip来安装
$ pip install gunicorn
接下来定位到/var/www/flask_server
目录下面,开始编写flask服务的程序文件main_server.py
# main_server.py
from flask import Flask
def create_app():
# 这个工厂方法可以从你的原有的 `__init__.py` 或者其它地方引入。
app = Flask(__name__)
return app
app = create_app()
if __name__ == '__main__':
app.run()
保存之后就可以开始运行gunicorn啦
// gunicorn -w 4 -b 127.0.0.1:8080 [Python程序文件名(不带.py)]:[Flask服务变量名]
(flask_server) $ gunicorn -w 4 -b 127.0.0.1:8080 main_server:app
接下来开始改nginx的配置文件,直接在/etc/nginx/conf.d/
目录下创建新的配置文件。
$ sudo vim /etc/nginx/conf.d/flask_server.conf
输入以下内容
server {
listen 80; #监听端口
server_name dbapi.chzt2.cn; #绑定域名
root /var/www/flask_server/; #网站根目录,建议使用绝对路径
# rewrite ^(.*)$ https://$host$1 permanent; #用于将http页面重定向到https页面
location / {
proxy_pass http://127.0.0.1:8080; # 这里是指向 gunicorn host 的服务地址
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#添加错误页面,利于搜索引擎收录以及良好的用户体验
error_page 404 /404.html;
location /404.html {
root /usr/local/nginx/html/;
}
error_page 500 502 503 504 /50x.html;
location =/50x.html {
root /usr/local/nginx/html/;
}
}
然后重启nginx就搞定了。
systemctl restart nginx.service