ホームページ >運用・保守 >Nginx >Nginx を使用して centos に Flask アプリケーションをデプロイする方法

Nginx を使用して centos に Flask アプリケーションをデプロイする方法

WBOY
WBOY転載
2023-05-21 22:13:041193ブラウズ

環境準備

Python パッケージインストールツール pip: sudo apt-get install pip
virtualenv: システム環境との競合を避けるため、アプリケーション環境が競合しているため、仮想環境を使用してアプリケーションの依存関係をインストールします。virtualenv は、Python アプリケーションごとに独立した開発環境を作成できます。インストール方法: sudo pip install virtualenv

仮想環境使用法

flask プロジェクト アドレス:/usr/local/flasky、プロジェクト アドレスでコマンドを実行するだけです:

virtualenv venv

「venv」を使用するのが一般的な規則です。以下の図の赤枠で示すように、仮想環境フォルダー venv が作成されます。

Nginx を使用して centos に Flask アプリケーションをデプロイする方法

次に、アクティブ化します。コマンド

source venv/bin/activate

Nginx を使用して centos に Flask アプリケーションをデプロイする方法

仮想環境をアクティブ化すると、コマンド ライン ヘッダーに (venv) ロゴが表示されます。仮想環境のみが必要な後は、 , Python をインストールするすべての操作は、パッケージと参照を仮想環境にインストールし、グローバルな状況には影響しません。Python 環境

#仮想環境を終了する手順は、次のように直接入力します:

#deactivate

仮想環境を終了します

flask アプリケーション環境の構成

flask アプリケーションを開発する場合、大量のテンプレートが必要になります「Dog Book」では、開発環境の Flask 依存関係などを直接追加する、より便利な方法を紹介しています。txt ファイルとしてエクスポートし、centos 仮想環境で対応する手順を使用して、このtxtファイルに従ってインストールしてください。

pip freeze >requerements.txt

このコマンドは、requirements.txt という名前のテキスト ファイルをエクスポートします。内容は次の図に示すとおりです。

Nginx を使用して centos に Flask アプリケーションをデプロイする方法次に、centos で次のコマンドを使用します

pip install -r requerments.txt

これにより、開発環境と一致するコピーが仮想環境にインストールされます。

仮想環境では必ずバッチ インストール手順を使用してください。そうしないと、グローバルにインストールされ、非常に大きな影響を及ぼします。


uwsgi のインストール

flask の実際の運用環境には選択肢があまりありませんが、より成熟したものは [gunicorn] と [uwsgi] です。 Dong Weiming 氏が推奨する本。これら 2 つのデプロイメントについては、「Python Web 開発実践戦闘」で説明されています。

以下の内容は Baidu Encyclopedia からのものです:

uwsgi は、wsgi プロトコル、uwsgi、http およびその他のプロトコルを実装する Web サーバーです。 nginx の httpuwsgimodule の機能は、uwsgi サーバーとのやり取りです。 wsgi は Web サーバーのゲートウェイ インターフェイスです。これは、Web サーバー (nginx、uwsgi など) と Web アプリケーション (Flask フレームワークで作成されたプログラムなど) の間の通信の仕様です。

インストール手順は次のとおりです。仮想環境に入り、アクティブ化していることを確認してください:


pip install uwsgi

を使用する必要はありません。 virtualvenv には権限要件がないため、sudo を使用します。

プロジェクト ファイルのアップロード

ブロガーが使用している Linux 接続ツールは xshell です。前回の記事で、Linux ホストにファイルをアップロードする方法について説明しました。ここでは行いません。詳細な説明、一般的なプロジェクト構造と起動ファイルを表示します。 manage.py

Nginx を使用して centos に Flask アプリケーションをデプロイする方法 ツリー コマンドは、ファイル構造を次の形式で表示できます。ツリー図を作成し、パラメータ設定ツリーの深さを指定できます。ここではブロガーが 2 層の

インストール コマンドを示しています:


sudo apt-get installtree

manage.py コードは次のとおりです

#coding=utf-8
#!/usr/local/flasky/venv python
'''
created on 2017/11/9
@author: savitar丶
project:
'''
import os
from app import create_app
from flask_script import manager, shell
app = create_app(os.getenv('flask_config') or 'default')
manager = manager(app)

def make_shell_context():
 return dict(app=app)
manager.add_command("shell", shell(make_context=make_shell_context))
@manager.command
def deploy():
 """run deployment tasks."""
 pass
if __name__ == '__main__':
 manager.run()
 #app.run()

フラスコ プロジェクトを実行するコマンド ライン

python manage.py runserver

上記のコマンドは一般的に開発環境でデバッグする際に使用するか、コメント化した「manager.run()」を削除して「app.run()」を使用します。後者はpycharm内のプロジェクトを直接実行できます。詳細は説明しません。ここで

uwsgiの設定

flaskのルートディレクトリ直下に新しいファイル「config.ini」を作成し、設定起動メソッドを使用します。ファイルの内容は次のとおりです。

[uwsgi]

# uwsgi 启动时所使用的地址与端口

socket = 127.0.0.1:5000

#虚拟环境目录 
home = /usr/local/flasky/venv

#指向网站根目录
chdir = /usr/local/flasky

#python启动程序文件
wsgi-file = manage.py

#python程序内用于启动的application变量名
callable = app

#处理器数
processes = 4

#线程数
threads = 2

#状态监测地址
stats = 127.0.0.1:9191

#设置uwsgi包解析的内部缓存区大小。默认4k

buffer-size = 32768

構成ファイルを実行するには、コマンド ラインに次のコマンドを入力します。

uwsgi config.ini

または、構成ファイルを書かずに (推奨されません)、

uwsgi –socket 127.0.0.1:5000 –wsgi-file manage.py –callable app –process 4 –threads 2 を直接入力します。

callable=app here このアプリは、manage.py プログラム ファイル内の変数です。この変数の型は、flask のアプリケーション クラスです。

这里是因为博主已经配置好了项目自启动,已经有一个配置文件在运行了,大家按照正常流程配置就好。ctrl+c关闭程序,在实际项目中我们的服务器上可能会有多个项目在运行,我们需要应用随同服务器启动并作为后台服务运行才是实际项目需要,所以我们需要安装另一个工具来引导执行uwsgi

安装supervisor

supervisor可以同时启动多个应用,最重要的是当某个应用down掉的时候,他可以自动重启该应用,保证可用性。

sudo apt-get install supervisor

supervisor的全局配置文件在

Nginx を使用して centos に Flask アプリケーションをデプロイする方法 

打开该默认配置文件,最下面一行我们看到,该默认配置文件会从 /etc/supervisord/目录下面加载所有的配置文件

Nginx を使用して centos に Flask アプリケーションをデプロイする方法

我们不需要修改默认的配置文件,只需要在/etc/supervisord/目录下新建一个配置文件(命名为flask_supervisor.conf)
Nginx を使用して centos に Flask アプリケーションをデプロイする方法 

该文件内容如下:

[program:flasky]
# 启动命令入口
command=/usr/local/flasky/venv/bin/uwsgi /usr/local/flasky/config.ini

# 命令程序所在目录
directory=/usr/local/flasky
#运行命令的用户名
user=root

autostart=true
autorestart=true
#日志地址
stdout_logfile=/usr/local/flasky/logs/uwsgi_super.log

这里command这一行代码看起来很长,其实就是之前我们的 “uwsgi config.ini”指令,这里使用的是绝对路径,保证命令和文件的准确性,大家也可以copy这一行代码出去执行,结果是ok的。autostart和autorestart参数保证了我们的应用可以一直保持启动的状态,即使是down掉了也能重启服务。

启动服务

sudo service supervisor start

终止服务

sudo service supervisor stop

安装nginx

nginx是轻量级,性能强,占用资源少,能很好的处理高并发的反向代理软件。

正向代理和反向代理

正向代理,作为一个媒介将互联网上获取的资源返回给相关联的客户端。代理和客户端在一个局域网,对于服务是透明的。反向代理,根据客户端的请求,从后端的服务器上获取资源,然后再讲这些资源返回给客户端。代理和服务器再一个局域网,对客户端是透明的。nginx是反向代理的最佳选择。

反向代理的作用

提高动态语言的io处理能力
加密和ssl加速
安全。
负载均衡
缓存静态内容
支持压缩。

nginx安装指令:

sudo apt-get install nginx

配置nginx

我们找到nginx的配置文件,不要修改默认的nginx.conf(路径 /etc/nginx/nginx.conf)文件,只需要在同样的文件夹下面新建一个文件夹(conf.d)然后在conf.d下面新建配置文件(flask_ng.conf)即可,如下图

Nginx を使用して centos に Flask アプリケーションをデプロイする方法 

flask_ng.conf文件内容如下

server {
  listen 80;
  server_name www.cloud-test.com; #公网地址

  location / {
  include  uwsgi_params;
  uwsgi_pass 127.0.0.1:5000; # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理
  uwsgi_param uwsgi_pyhome /usr/local/flasky/venv; # 指向虚拟环境目录
  uwsgi_param uwsgi_chdir /usr/local/flasky; # 指向网站根目录
  uwsgi_param uwsgi_script manage:app; # 指定启动程序
  }
 }

启动nginx

sudo service nginx restart

然后浏览器直接访问服务器http://www.cloud-test.com地址,结果如下

Nginx を使用して centos に Flask アプリケーションをデプロイする方法 

小case,解决办法,直接修改本机hosts,绑定就好了,如下图所示

Nginx を使用して centos に Flask アプリケーションをデプロイする方法 

然后再去访问

Nginx を使用して centos に Flask アプリケーションをデプロイする方法 

然后也可以找自己的同事一起访问,看看并发请求,网站的运行情况,想来能解决在开发环境使用了host 0.0.0.0 也只能处理一个用户的请求的问题

查看应用的运行情况

supervisorctl 是 supervisord 的命令行客户端工具,使用的配置和 supervisord 一样,这里就不再说了。下面,主要介绍 supervisorctl 操作的常用命令:
输入命令 supervisorctl 进入 supervisorctl 的 shell 交互界面(还是纯命令行),可以看到应用的运行情况
就可以在下面输入命令了。:

help # 查看帮助
status # 查看程序状态
stop program_name # 关闭 指定的程序
start program_name # 启动 指定的程序
restart program_name # 重启 指定的程序
tail -f program_name # 查看 该程序的日志
update # 重启配置文件修改过的程序(修改了配置,通过这个命令加载新的配置)

シェル コマンドを使用して直接操作することもできます:

supervisorctl status
supervisorctl update

Nginx を使用して centos に Flask アプリケーションをデプロイする方法

以上がNginx を使用して centos に Flask アプリケーションをデプロイする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。