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

推薦する

Tomcat の一般的な例外と解決コードの例

弊社のプロジェクトは Java で開発され、ミドルウェアは Tomcat でした。運用中に、Tomc...

Nginx ログのカスタマイズとログ バッファの有効化の詳細な説明

序文ウェブサイトのアクセス元をカウントしたい場合は、PHP を使用して情報を取得してデータベースに記...

docker を使用してコード サーバーをデプロイする方法

画像をプルする # docker pull codercom/code-server # Docke...

フォームファイル選択ボックスのスタイルをカスタマイズする例

コードをコピーコードは次のとおりです。 <!DOCTYPE html> <html...

Linux仮想マシンをWiFiに接続する方法

生活の中で、インターネットはどこにでもあります。インターネットを通じてゲームをしたり、テレビ番組を見...

アコーディオン効果を実現するJavaScript

この記事では、アコーディオン効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...

MySQL 5.7.24 のインストールと設定のグラフィックチュートリアル

この記事では、MySQL 5.7.24のインストールと設定のチュートリアルを参考までに紹介します。具...

GolangでMySQLデータベースのバックアップを実装する方法

背景Navicat は、最高の MySQL 視覚化ツールです。ただし、ビューのインポートとエクスポー...

MySQLパーティションテーブルは月別に分類されています

目次テーブルを作成するデータベース ファイルを表示します。入れるクエリ消去補足:Mysqlは月テーブ...

Dockerを使用してプライベートGitLabを構築する2つの方法

最初の方法: docker インストール1. オープンソース版のイメージを取得する2. 対応するデー...

React ページ ターナーの実装 (フロント エンドとバックエンドを含む)

目次フロントエンド上記のアイデアに従って、ページめくり機能を設計して記述します。バックエンド(Jav...

サーバー上で selenium+chromedriver を実行するための詳細なチュートリアル

1. はじめにSelenium を使用して Web サイトからデータをスクレイピングしたいのですが、...

マウスが画像のハイパーリンク上を通過するときに画像のサイズ(幅、高さ)を変更する CSS

マウスが画像の上を通過したときに画像のハイパーリンクを変更する方法:コードをコピーコードは次のとおり...

HTML Web ページにおける URL の表現

HTML では、一般的な URL はさまざまな方法で表現されます。相対 URL:コードをコピーコード...