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の重複排除方法

ブログ    

推薦する

MySQL 権限昇格のさまざまな形態の概要

目次1. Webshel​​lを書く出力ファイルにシェルを書き込むログファイル書き込みシェル2. U...

Linuxはlsof/extundeleteツールを使用して、誤って削除されたファイルやディレクトリを復元します。

序文Linux には Windows のような目立つごみ箱がないため、簡単に復元することはできません...

Navicat がデータベース データ構造をインポートする際に発生するエラー datetime(0) の SQL レポートの問題を解決します。

エラー発生: MySQL 5.7 から SQL にデータベースをエクスポートし、それを MySQL ...

MySQL 結合テーブルと ID 自動増分の例の分析

結合の書き方左結合を使用する場合、左側のテーブルが必ず駆動テーブルになりますか? 2 つのテーブルの...

Vueは水平の斜めの棒グラフを実装します

この記事では、水平傾斜棒グラフを実装するためのVueの具体的なコードを参考までに共有します。具体的な...

Docker で php-nginx-alpine イメージをゼロから構築する方法

これまでにも Docker 環境でいくつかのプロジェクトを実行したことはありますが、まだイメージをよ...

Vue Element フロントエンドアプリケーション開発 テーブルリスト表示

1. リストクエリインターフェースの効果コード処理ロジックを紹介する前に、まずは感覚的に理解し、レン...

Vue v-model 関連の知識のまとめ

​v-model は、入力とフォーム データ間、または 2 つのコンポーネント間の双方向データ バイ...

VMware15.5でcentos8.1をインストールし、物理メモリが不足する問題に対処する最も完全なチュートリアル

1. 仮想マシンの準備1. 新しい仮想マシンを作成する 2. 仮想マシンのカスタマイズを選択する 3...

Layui は複数条件クエリのサンプルコードを実装します

最近ファイルシステムを作ったのですが、フィールドが多すぎることに気づきましたページングを使用した複数...

Dockerコンテナの紹介

Dockerの概要Docker はオープンソースのソフトウェア展開ソリューションです。 Docker...

アイデアを使用して Springboot 初期化サーバーを構築する際の問題分析

問題の説明最近、Springbootプロジェクトを構築していたところ、会社のネットワークケーブルに接...

HTMLページをクリックしてダウンロードファイルを実装する2つの方法

1. <a>タグを使用して完了します <a href="/user/te...

ドメイン名、ポート、IPに基づいてnginx仮想ホストを構築する

nginxでサポートされている仮想ホストには3つの種類があります1. ドメイン名ベースの仮想ホスティ...

MySQL8 ベースの docker-compose デプロイメント プロジェクトの実装

1. まず、次のパスに従って対応するフォルダを作成します。 ローカルのdockerでmysqlを実行...