CentOS7 デプロイメント Flask (Apache、mod_wsgi、Python36、venv)

CentOS7 デプロイメント Flask (Apache、mod_wsgi、Python36、venv)

1. Apacheをインストールする

# yum インストール -y httpd httpd-devel
# systemctl start httpd.service # 開始 # systemctl stop httpd.service # シャットダウン # systemctl restart httpd.service # 再起動 # systemctl enable httpd.service # 起動時に自動的に開始

ファイアウォールのポート80を開く

# ファイアウォールコマンド --zone=public --add-port=80/tcp --permanent
# ファイアウォールコマンド --reload

Apacheを開くと、外部ネットワークはIP経由でApacheのデフォルトページにアクセスできます。

2. Python36、pip3、virtualenvをインストールする

# yum インストール -y epel-release
# yum インストール -y python36
# python36 -V
Python 3.6.6
# yum インストール -y python36-setuptools
# easy_install-3.6 ピップ
# pip3 -V
/usr/local/lib/python3.6/site-packages/pip-18.1-py3.6.egg/pip (python 3.6) からの pip 18.1
# pip3 仮想環境をインストールする

3. プロジェクトを作成する

Flask プロジェクトを作成する (最も単純なもの、プロジェクト フォルダー、スタートアップ ファイル)

# mkdir /var/www/flask_test # プロジェクトフォルダ# vi /var/www/flask_test/app.py # 起動ファイル

起動ファイルの例:

FlaskからFlaskをインポートし、リクエスト
 
アプリ = Flask(__name__)
 
@app.route('/')
hello_world() を定義します:
  「Hello World」を返す
 
@app.route('/hello')
デフハロー():
  名前 = request.args.get('名前','')
  'Hello ' + 名前 + '!' を返します。
 
__name__ == '__main__' の場合:
  アプリの実行()

プロジェクトフォルダに仮想環境を作成し、Flaskをインストールします。

# cd /var/www/flask_test
# virtualenv py3env # 仮想環境を作成 # source py3env/bin/activate # 仮想環境 (py3env) に入る # pip install flask # flask をインストール
(py3env) # deactivate # 仮想環境を終了する

4. 仮想環境に pip を使用して mod_wsgi をインストールする

# yum install -y python36-devel.x86_64 # 依存関係。インストールされていない場合は、pip によって以下のエラーが報告されます。 。
# source py3env/bin/activate # 仮想環境 (py3env) に入る # pip install mod_wsgi # mod_wsgi をインストールする
(py3env) # mod_wsgi-express install-module # コマンドを実行し、出力をコピーします LoadModule wsgi_module "/usr/lib64/httpd/modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"
WSGIPythonホーム "/var/www/flask_test/py3env"
 
(py3env) # deactivate # 仮想環境を終了する

Apache 設定を変更する

# vi /etc/httpd/conf/httpd.conf

上記で取得した行をコピーし、設定ファイルの末尾に追加します。

次のようにコードをコピーします
ロードモジュール wsgi_module "/usr/lib64/httpd/modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"

5. mod_wsgiを設定する

# vi /var/www/html/flask_test/app.wsgi

次のように記述します (https://dormousehole.readthedocs.io/en/latest/deploying/mod_wsgi.html に従って)

activate_this = '/var/www/flask_test/py3env/bin/activate_this.py'
open(activate_this) を file_ として実行:
  exec(file_.read(), dict(__file__=activate_this))
 
インポートシステム
sys.path.insert(0, '/var/www/flask_test')
アプリからアプリをアプリケーションとしてインポート

Apache の設定

# vi /etc/httpd/conf/httpd.conf

次のように記述します (https://dormousehole.readthedocs.io/en/latest/deploying/mod_wsgi.html#id1 に従って)

<仮想ホスト *:80>
  サーバー名 example.com
  WSGIScriptAlias ​​/ /var/www/flask_test/app.wsgi
  <ディレクトリ /var/www/flask_test>
    すべて許可が必要
  </ディレクトリ>
</仮想ホスト>

OK、Apacheを起動すると、このサーバーのIPを通じてWebページにアクセスできます。

app.pyに書かれた2つのパスをテストする

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Python wsgiref ソースコード分析
  • Python WSGI仕様の紹介
  • WSGI インターフェースと Python での WSGI サービスの操作の簡単な分析
  • Docker は Python Flask+ nginx+uwsgi コンテナを構築します
  • Pythonは、Flask UWSGIがグローバル変数を取得できない問題を解決します
  • Python ウェブフレームワーク Django WSGI 原理分析
  • VPS CENTOS で python、mysql、nginx、uwsgi、django を設定する方法の詳細な説明
  • Python 開発 Nginx+uWSGI+virtualenv マルチプロジェクト デプロイメント チュートリアル
  • ApacheでPython WSGIアプリケーションを実行する方法
  • Python 組み込みライブラリ wsgiref の使用 (WSGI の基礎)

<<:  Vue の一般的な問題と解決策の概要 (推奨)

>>:  MySQLの重複排除方法

推薦する

Dockerコンテナを作成、起動、停止する方法

1. コンテナとは、独立して実行されるアプリケーション、またはアプリケーションのグループとその動作環...

WindowsにJDK8をインストールする方法

1. ダウンロード: http://www.oracle.com/technetwork/java/...

Bootstrap 3.0 学習ノートのページレイアウト

今回はレイアウトを中心に学習しますが、これは基本的なHTMLタグのほとんどにも存在するため、比較的簡...

Vue 2つのフィールドの共同検証によりパスワード変更機能を実現

目次1. はじめに2. ソリューションの実装2.1 実装コード2.2 コードの説明2.3 検証結果1...

ミニプログラムはリストのカウントダウン機能を実装します

この記事の例では、ミニプログラムでリストカウントダウンを実装するための具体的なコードを参考までに共有...

jQueryフレームワークは、要素の表示と非表示の3つのアニメーションメソッドを実装しています。

目次1. デフォルトで表示と非表示を切り替える2. スライドして表示と非表示を切り替える3. フェー...

フレックスレイアウトが子要素によって引き伸ばされたときに、コンテンツをコンテナ内に保持する方法

モバイル デバイスでは、フレックス レイアウトが非常に便利です。デバイスの幅に応じてコンテナーの幅を...

MySQLのexplain型の詳細な説明

導入:多くの場合、さまざまな選択ステートメントを使用して必要なデータを照会した後、多くの人は作業が正...

Vueは買い物数量を変更できるショッピングカートを実装します

この記事では、Vueを使用してショッピングカートの数量を変更する方法を紹介します。具体的な内容は次の...

Nginx サーバーで URL リンクを設定する方法

LNMPのようなアーキテクチャを持つウェブサイトは、一般的にPHPフレームワークに基づいて開発されて...

MySQL の「特殊キーが長すぎます」の解決策

目次解決策1解決策2テーブルを作成するときに、興味深い問題に遭遇しました。「指定されたキーが長すぎま...

JavaScript BOMの構成と一般的なイベントの詳細な説明

目次1. 部品2. BOMの構成2. ウィンドウオブジェクトの共通イベント1. ウィンドウ読み込みイ...

Vue での this.$set の動的データバインディングのケーススタディ

インターネット上の this.$set の説明はわかりにくいと感じます。単一データ、オブジェクト、配...

Docker 構成 Alibaba Cloud イメージアクセラレーション プル実装

今日はdockerを使ってイメージをpullしたのですが、速度が悪くて見れず最後まで待ち続けました。...

Tomcat の文字化けしたコードとポート占有の解決方法について簡単に説明します

Tomcat サーバーは、無料でオープン ソースの Web アプリケーション サーバーです。軽量のア...