なんでもITブログ

技術系の情報発信をしていきます

CentOS7 Djangoで静的コンテンツを表示するApacheの設定

PHP(LaravelやCodeigniter,CakePHPなど)とかだと
あらかじめPublic領域が用意されていたり、するみたいですが
DjangoApache側の設定を触って公開領域を作成するみたいです。
これめちゃくちゃはまったので、共有しておきます。

前提条件としてDjangoApacheで動いていることを前提としていますので
動かしていなく動かしてみたい方はこちらの記事を参考にしていただけたらと思いますj
yryuu.hatenablog.com


今回はstaticというフォルダを
/srv/web/myapp/staticにおいて
その下に/srv/web/myapp/static/test.txtというファイルを置き、ブラウザでtxtファイルにアクセスできるところをやっていきます。

まずはファイルを置いておきます

$ mkdir /srv/web/myapp/static
$ touch /srv/web/myapp/static/test.txt
$ vi test.txt
// 以下を入力して保存してください
  静的コンテンツテスト


次にApacheの設定をしていきます
今回はwsgiのconfigファイルを触っていますが、各自設定によって変わってくると思うので
djangoの設定がされている箇所(DocumentRootなど)であればどこでも効くとは思います。

$ vi /etc/httpd/conf.modules.d/10-wsgi-python3.6.conf
// 以下を追加して保存する
    Alias /static/ /srv/web/myapp/static/
    <Directory /srv/web/myapp/static>
        Require all granted
    </Directory>

Aliasは "Alias リクエストのURLパス 実際のディレクトリ"という記載で
このURLが来たらこのディレクトリを見るという命令のことです
Require all grantedは全てのアクセスを許可しますという意味です


最後にApacheを再起動して設定を反映させます

$ systemctl restart httpd.service

これでhttp://サーバのIP/static/test.txtにアクセスして 静的コンテンツテストと表示出来たら完了です。
ぜひ参考にしてみてください