CentOS7+Apache+Flask導入メモ

まっさらなCentOS7.5にインストールするまでの手順メモです。

スポンサーリンク

インストール

Python3インストール

yum install -y https://centos7.iuscommunity.org/ius-release.rpm
yum -y install python36

Python.hが必要なるのでpython36-develが必要

yum -y install python36-devel

Apacheインストール

yum -y install httpd

wsgiインストール

モジュールをコンパイルするのでにgccが必要
yum -y install gcc
仮想環境を使用しないならば以下は不要
python3.6 -m venv venv
source venv/bin/activate
pip install –upgrade pip
wsgiをインストールする
pip install mod_wsgi-httpd
pip install mod_wsgi

設定ファイル

Flaskで作成したアプリを動かすための設定です。次のような条件としますので、適宜自分の環境に読み替えてください。

ホスト名: app.netwiz.jp
アプリ設置パス: /myapp/app.py

mod_wsgiを読み込ませる設定

以下のファイルを作成する。

/etc/httpd/conf.modules.d/00-wsgi.conf

ファイルには次のようなフォーマットで記述する。

LoadModule wsgi_module <mod_wsgiへのパス>

mod_wsgiへのパスが不明の場合は次のようなコマンドで探せばよい。

find / -type f -name ‘mod_wsgi-py*’

因みにぼくの環境ではvenvを使わない場合、以下のような設定をした。

LoadModule wsgi_module /usr/local/lib64/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so

venvを使った場合は、venvのルートディレクトリ以下に次のようなパスでmod_wsgiが生成されている。

lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so

wsgi設定ファイル

以下のファイルを作成する。ファイル名をドメイン名にしておくと分かりやすいかと思います。

/mayapp/app.netwiz.jp.wsgi

以下のように記述します。
import sys
import logging
sys.path.insert(0, ‘/myapp‘)
from app import app as application

Apache設定ファイル

以下のファイルを作成する。ファイル名をドメイン名にしておくと分かりやすいかと思います。

/etc/httpd/conf.d/app.netwiz.jp.conf

以下のように記述します。

WSGISocketPrefix /var/run/wsgi

<VirtualHost *:80>
ServerName app.netwiz.jp:80
WSGIDaemonProcess snapmsg user=apache group=apache threads=5 python-home=/myapp
WSGIScriptAlias / /myapp/app.netwiz.jp.wsgi
WSGIScriptReloading On

<Directory “/myapp“>
WSGIProcessGroup myapp
WSGIApplicationGroup %{GLOBAL}
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

スポンサーリンク