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

推薦する

異なるページ間のJavaScriptデータ転送(URLパラメータ取得)

Web ページでは、あるページに情報を入力すると、別のページにジャンプし、入力した情報が別のページ...

MySQL における 8 つの一般的な SQL 使用例

序文MySQL は、2016 年もデータベースの人気において力強い成長傾向を維持し続けました。 My...

Windows 10 での mysql5.5 データベース コマンドラインの中国語文字化け問題を解決する

システムをリセットした後、かなり前にインストールした MySQL データベースのコンソール クエリで...

MySQL 8.0.17 インストール グラフィック チュートリアル

この記事では、参考までにMySQL 8.0.17のインストールグラフィックチュートリアルを紹介します...

MySQLの制限を使用して大規模なページングの問題を解決する方法

序文日常の開発では、MySQL を使用してページングを実装する場合、常に MySQL 制限構文を使用...

表のセル間の境界線/区切り線を非表示にする方法

上の境界線のみを表示する <table frame=above>下の境界線のみを表示する...

Navicat 経由で MySQL にリモート接続する方法

Navicat を使用して IP 経由で直接接続すると、次のようなさまざまなエラーが報告されます: ...

MySQL 5.5.56 インストール不要版の設定方法

MySQL 5.5.56無料インストール版の設定方法をテキストコードで詳しく説明します。具体的な内容...

将来最も成功する企業はテクノロジー企業でしょうか、それともデザイン企業でしょうか?

ムーアの法則はもはや適用されない2004年にフレックストロニクスがフロッグデザインを買収したのを皮切...

Nodejsはgitee実装コードに自動的に同期するドキュメント同期ツールを作成します

本来の意図このツールを作った理由は、コンピューターを使用しているときにいつでも毎日の仕事や生活を記録...

Vue.js スロットにおけるスコープ付きスロットの使用法の詳細な説明

目次スロットなしVue2.x スロットスロット付き名前付きスロットスロット属性なしスロットの簡単なサ...

HTMLタグオーバーフロー処理アプリケーション

CSSを使用してスクロールバーを変更する1.コンテンツがオーバーフローした場合のオーバーフロー設定水...

英語のシングルクォーテーション「''」を含むSQLの記述の失敗について徹底解説

問題が発生しました。情報の編集をテストする際、編集した内容に一重引用符 (') が含まれてい...

MySQL 数十億のデータのインポート、エクスポート、移行に関するメモ

最近はMySQLのメモをたくさん取っていますが、それは主に会社のOracleが比較的安定していてメン...

ランダムロールコールテーブルを実装するためのネイティブJavaScript

この記事では、JavaScriptのランダムロールコールテーブルの具体的なコードを参考までに紹介しま...