本手順では、CentOS 7 オペレーティングシステム上で Python および Django フレームワークを利用した Web アプリケーションを、Apache HTTP サーバーとの連携により公開する設定方法について記述します。対象バージョンは以下の通りです。
- サーバー側 OS: CentOS 7
- Web サーバー:Apache 2.4 系列
- スクリプト言語:Python 2.7 (推奨 2.7.x)
- フレームワーク:Django 1.8 以上
- データベース:MariaDB または MySQL
プロジェクトディレクトリ構造は一般的な Django 規約に従い、ドキュメントルート直下に配置します。
/var/www/html/webapp_project
WSGI 設定ファイルの修正
まず、アプリケーションの起動エントリポイントとなる WSGI スクリプトを変更します。これにより、Apache から呼び出された際のパス処理や環境変数の初期化が行われます。
import os
import sys
from os.path import dirname, abspath
# ルートディレクトリの絶対パス取得
PROJECT_ROOT = dirname(dirname(abspath(__file__)))
sys.path.insert(0, PROJECT_ROOT)
# Django モジュールインポート
from django.core.wsgi import get_wsgi_application
# 設定モジュールの指定
os.environ.setdefault(u"DJANGO_SETTINGS_MODULE", u"webapp.settings")
# アプリケーションインスタンス作成
django_app = get_wsgi_application()
設定ファイルの更新
Django の設定ファイルにおいて、外部からのアクセス許可および静的ファイルの管理経路を定義します。
# ALLOWED_HOSTS 項目
ALLOWED_HOSTS = [u'your-domain.com', ]
# 静的ファイルの探索先設定
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
# 物理パスの絶対指定(相対パスの使用は非推奨)
STATICFILES_DIRS = (
'/var/www/html/webapp_project/static/css',
'/var/www/html/webapp_project/static/js',
'/var/www/html/webapp_project/static/images',
)
静的ファイルの取り込み
変更後の設定を反映させ、Django 内で定義されているアセットファイルを収集ディレクトリへコピーする必要があります。コマンドを実行すると以下のような処理が発生します。
python manage.py collectstatic
この操作により、`static` フォルダ配下にすべての参照元ファイルが格納されます。次に、Apache サーバーの設定ファイルを編集して、Django アプリケーションへのハンドリングと静的ファイル配信を有効にします。
利用可能な Apache モジュールの確認とインストールを行う必要があります。CentOS 環境では YUM パッケージマネージャーを使用します。
yum install mod_wsgi
Apache サーバー構成
メイン設定ファイル `httpd.conf` にて、WSSG モジュールのロードと仮想ホストの構築を行います。以下の設定は、セキュリティポリシーおよびパフォーマンスに基づいた標準的な構成例です。
LoadModule wsgi_module modules/mod_wsgi.so
<VirtualHost *:80>
# アプリケーションのルートディレクトリ
DocumentRoot "/var/www/html/webapp_project"
# WSGI スクリプトへのエイリアス設定
WSGIScriptAlias / "/var/www/html/webapp_project/webapp/wsgi.py"
# 静的ファイル(CSS/JS/Images)のリクエスト処理
Alias /static/ "/var/www/html/webapp_project/static/"
# 静的フォルダへのアクセス権限
<Directory "/var/www/html/webapp_project/static">
Require all granted
</Directory>
# アプリケーションディレクトリのオーバーライド許可
<Directory "/var/www/html/webapp_project">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
設定完了後、Apache サービスを再起動して反映を確認してください。
運用時の注意点
デプロイ前に Django 設定内にあるデバッグモードをオフにするよう留意が必要です。本番環境では詳細なエラーログが画面上に表示されないよう、設定値を調整してください。
DEBUG = False