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

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

May 21, 2023 pm 10:13 PM
centos nginx flask

環境準備

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Tomcat サーバーへの外部ネットワーク アクセスを許可する方法 Tomcat サーバーへの外部ネットワーク アクセスを許可する方法 Apr 21, 2024 am 07:22 AM

Tomcat サーバーが外部ネットワークにアクセスできるようにするには、以下を行う必要があります。 外部接続を許可するように Tomcat 構成ファイルを変更します。 Tomcat サーバー ポートへのアクセスを許可するファイアウォール ルールを追加します。 Tomcat サーバーのパブリック IP を指すドメイン名を指す DNS レコードを作成します。オプション: リバース プロキシを使用して、セキュリティとパフォーマンスを向上させます。オプション: セキュリティを強化するために HTTPS を設定します。

SCP 使用法のヒント - ファイルを再帰的に除外する SCP 使用法のヒント - ファイルを再帰的に除外する Apr 22, 2024 am 09:04 AM

scp コマンドを使用すると、ネットワーク ホスト間でファイルを安全にコピーできます。データ転送と認証には ssh を使用します。一般的な構文は次のとおりです: scpfile1user@host:/path/to/dest/scp -r/path/to/source/user@host:/path/to/dest/scp ファイルを除外する scp コマンドを使用する場合はできないと思いますファイルをフィルタリングまたは除外します。ただし、ファイルを除外し、ssh を使用して安全にコピーするという良い回避策があります。このページでは、scp を使用してディレクトリを再帰的にコピーするときにファイルをフィルタリングまたは除外する方法について説明します。 rsync コマンドを使用してファイルを除外する方法 構文は次のとおりです。 rsyncav-essh-

nginx へようこそ!それを解決するにはどうすればよいですか? nginx へようこそ!それを解決するにはどうすればよいですか? Apr 17, 2024 am 05:12 AM

「nginx へようこそ!」エラーを解決するには、仮想ホスト構成を確認し、仮想ホストを有効にし、Nginx をリロードする必要があります。仮想ホスト構成ファイルが見つからない場合は、デフォルト ページを作成して Nginx をリロードすると、エラー メッセージが表示されます。が消え、ウェブサイトは通常のショーになります。

Nodejsプロジェクトをサーバーにデプロイする方法 Nodejsプロジェクトをサーバーにデプロイする方法 Apr 21, 2024 am 04:40 AM

Node.js プロジェクトのサーバー デプロイメント手順: デプロイメント環境を準備します。サーバー アクセスの取得、Node.js のインストール、Git リポジトリのセットアップ。アプリケーションをビルドする: npm run build を使用して、デプロイ可能なコードと依存関係を生成します。コードをサーバーにアップロードします: Git またはファイル転送プロトコル経由。依存関係をインストールする: サーバーに SSH で接続し、npm install を使用してアプリケーションの依存関係をインストールします。アプリケーションを開始します。node Index.js などのコマンドを使用してアプリケーションを開始するか、pm2 などのプロセス マネージャーを使用します。リバース プロキシの構成 (オプション): Nginx や Apache などのリバース プロキシを使用して、トラフィックをアプリケーションにルーティングします。

HTMLファイルからURLを生成する方法 HTMLファイルからURLを生成する方法 Apr 21, 2024 pm 12:57 PM

HTML ファイルを URL に変換するには Web サーバーが必要です。これには次の手順が含まれます。 Web サーバーを取得します。 Webサーバーをセットアップします。 HTMLファイルをアップロードします。ドメイン名を作成します。リクエストをルーティングします。

外部からnodejsにアクセスできますか? 外部からnodejsにアクセスできますか? Apr 21, 2024 am 04:43 AM

はい、Node.js には外部からアクセスできます。次の方法を使用できます。 Cloud Functions を使用して関数をデプロイし、一般にアクセスできるようにします。 Express フレームワークを使用してルートを作成し、エンドポイントを定義します。 Nginx を使用して、Node.js アプリケーションへのリバース プロキシ リクエストを実行します。 Docker コンテナを使用して Node.js アプリケーションを実行し、ポート マッピングを通じて公開します。

PHP を使用して Web サイトを展開および維持する方法 PHP を使用して Web サイトを展開および維持する方法 May 03, 2024 am 08:54 AM

PHP Web サイトを正常に展開して維持するには、次の手順を実行する必要があります。 Web サーバー (Apache や Nginx など) を選択する PHP をインストールする データベースを作成して PHP に接続する コードをサーバーにアップロードする ドメイン名と DNS を設定する Web サイトのメンテナンスを監視する手順には、PHP および Web サーバーの更新、Web サイトのバックアップ、エラー ログの監視、コンテンツの更新が含まれます。

Fail2Ban を使用してサーバーをブルート フォース攻撃から保護する方法 Fail2Ban を使用してサーバーをブルート フォース攻撃から保護する方法 Apr 27, 2024 am 08:34 AM

Linux 管理者にとっての重要なタスクは、サーバーを違法な攻撃やアクセスから保護することです。デフォルトでは、Linux システムには、iptables、Uncomplicated Firewall (UFW)、ConfigServerSecurityFirewall (CSF) などの適切に構成されたファイアウォールが付属しており、さまざまな攻撃を防ぐことができます。インターネットに接続されているマシンはすべて、悪意のある攻撃のターゲットになる可能性があります。サーバーへの不正アクセスを軽減するために使用できる Fail2Ban と呼ばれるツールがあります。 Fail2Ban とは何ですか? Fail2Ban[1] は、ブルート フォース攻撃からサーバーを保護する侵入防止ソフトウェアです。 Python プログラミング言語で書かれています

See all articles