CentOS 7 環境における Apache 2.4 経由の Django プロジェクト導入ガイド

本手順では、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

タグ: Django Apache_2.4 CentOS_7 WSGI Mod_WSGI

7月18日 20:53 投稿