Gunicorn+Nginx が Linux 上に Flask プロジェクトをデプロイ

1.Flaskプロジェクトフォルダーを作成します

mkdir Flaskproject
cd Flaskproject

2. Flask ソースコードと仮想環境を構成する

app.py の例:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello_world():
    return "Hello World!"

if __name__ == '__main__':
    app.run(debug=True)
pip install virtualenv  # 如果已安装则跳过
python -m venv flaskenv  # 新建flask虚拟环境
source flaskenv/bin/activate  # 激活flask虚拟环境(退出虚拟环境:deactivate)
pip install -r requirements.txt  # 安装依赖库
# pip install -r requirements.txt --no-dependencies 包版本冲突时可忽略版本要求,解决冲突
# 生成依赖库文件用 pip freeze > requirements.txt

3. ガニコーンをインストールする

pip install gunicorn

4. ガニコーンサービスを開始する

nohup gunicorn -w 4 -b 0.0.0.0:5000 app:app &     #不带日志
nohup gunicorn -w 4 -b 0.0.0.0:5000 app:app > gunicorn.log 2>&1 &     #带日志

その中で、-w はプロセスの最大数を設定し、-b は IP とポートをバインドします。最初のアプリは app.py のファイル名で、2 番目のアプリは Flask アプリケーションのインスタンス名であり、次に従って変更できます。あなた自身のプロジェクト。
gunicorn 構成ファイルをカスタマイズする必要がある場合は、対応するパスに conf ファイルを作成し、構成後に起動コマンドに -c gunicorn.conf を追加します。(gunicorn の設定チュートリアルについては、Gunicorn 設定の詳細な説明を参照してください。 )
次に、http://xxxx:5000 にログインして、Flask プロジェクトにアクセスします。

アクセスにポート 80 を使用する場合は、Ngix を通じて指定したポートをポート 80 に指定できます。

5.Nginxをインストールする

sudo apt-get install nginx

6. Nginx 設定ファイル (/etc/nginx/nginx.conf) を変更します。

 次の 2 行を見つけて、2 行目をコメントアウトします。(ファイルの保存には sudo または root 権限が必要な場合があります)

    include /etc/nginx/conf.d/*.conf;
    #include /etc/nginx/sites-enabled/*; 

 http 設定にサーバー設定を追加します。http{} に追加することに注意してください。{}

http {
    ##############################
    server {
        listen 80;
        server_name localhost;  # 外界实际访问的地址

        location / {
            proxy_pass http://localhost:5000;  # 转发的本机端口地址
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    ##############################
}

 ssl 証明書があり、http を https に自動的にリダイレクトする場合は、次の構成を使用します。

http {
    ##############################
    server {
        listen 80;
        server_name localhost;  # 外界实际访问的地址
        return 301 https://$host$request_uri;  # http重定向https
    }

    server {
        listen 443 ssl;
        server_name localhost;
        ssl_certificate xxx.com.pem;   # 改为自己的ssl证书的目录
        ssl_certificate_key xxx.com.key;  # 改为自己的ssl证书秘钥的目录
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
        ssl_prefer_server_ciphers on;

        location / {
            proxy_pass http://localhost:5000;  # 转发的本机端口地址
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    ##############################
}

7. Nginx 構成が正しいかどうかをテストする

$ sudo nginx -tc /etc/nginx/nginx.conf
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

 8. Nginxサービスを再起動します

sudo service nginx restart
# 或者 sudo nginx -s reload

この時点では、ポート番号を指定せずに、http://xxxx にログインしてページに直接アクセスできます。

興味があれば、私の Flask プロジェクトもご覧ください。興味深く便利なガジェットをいくつか書きました。

ドゥードゥー男性http://www.doodoo.site/

おすすめ

転載: blog.csdn.net/qq_40039731/article/details/123059571