LoginSignup
12
11

Djangoのstaticファイルが404から復活した話

Last updated at Posted at 2019-07-01

あらすじ

djangoのstaticファイルがrunserverだとアクセスできたのにapacheだとアクセスできませんでした。解決方法が分かったので、頭の整理を兼ねて書き起こしました。Bitnami前提のため、直接Apacheを入れている人は読みかえてください。

流れ

  1. Windows PC を用意。 64bit。
  2. BITNAMI DJANGO STACK を利用して、mysqlとapacheをインストールする。
  3. Create A New Django Projectを参考にdjangoでプロジェクトを作成
  4. Deploy A Django Projectを参考にデプロイ設定
  5. サイトにアクセス
  6. 画像やCSSを読み込めまない!
  7. settings.pyとhttpd-app.confに追記して collectstatic した。
  8. サイトにアクセス
  9. 無事に読み込み成功!

読み込まなかったファイル

画像の例
<img  width="30" src="{% static '[app-name]/bitmap.png' %}" height="30" class="d-inline-block align-top" alt="">
CSSの例
<link rel="stylesheet" href="{% static '[app-name]/css/style.css' %}">

ディレクトリ構成

`:directory-tree
[project-directory]/
┣ [project-name]/
┃ ┣ settings.py
┃ ┗ ...
┣ static/
┃ ┗ ...
┣ [app-name]/
┃ ┣ static/
┃ ┃ ┗ [app-name]/
┃ ┃ ┣ css/
┃ ┃ ┃ ┗ ...
┃ ┃ ┣ js/
┃ ┃ ┃ ┗ ...
┃ ┃ ┣ img/
┃ ┃ ┃ ┗ ...
┃ ┃ ┗ ...
┃ ┗ ...
┗ deploy/ # deploy用のディレクトリ

    ┃
    ┣ [app-name]/
    ┃    ┗ ...
    ┗ ...

`

staticのアクセス許可を設定

`py:[projectname]\settings.py
STATIC_URL = '/static/' # 配信用のURL

STATIC_ROOT = os.path.join(BASE_DIR, 'deploy') # 配信用のURL

STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'), # プロジェクト直下のstaticディレクトリを指定

)
`

conf\httpd-app.conf:追記
# collectstaticでコピーしたstaticディレクトリのパスを登録

Alias /static/ [deploy用のディレクトリ]

# staticへのアクセスを許可

<Directory [deploy用のディレクトリ]>
    Require all granted
</Directory>

[deploy用のディレクトリ]はWindows10では

"%userprofile%/Bitnami Django Stack projects/[project-dirctory]/deploy/"

Staticファイルのコレクション

設定追記が出来たらpython manage.py collectstaticで一か所にまとめます。

Note : adminサイトなどを用意している場合、
そのstaticも一緒にまとまるので予想外のファイル数に驚かないように!

apacheを再起動してブラウザでアクセス

参考にしたサイト

Excelsior!

12
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11