0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DjangoのstaticファイルをAmazon Linux2+Apache環境下で正しく表示させる方法

Posted at

はじめに

Djangoプロジェクトのstaticファイル(cssや画像)をEC2(Amazon Linux2)+Apache環境で正しく表示させる設定方法を備忘も兼ねて書き残しておきます。

環境

  • Amazon Linux 2(64bit)
  • Apache2.4.43
  • MySQL8.0.21
  • Python3.7.8
  • Django3.1

設定内容

Django開発用サーバとApache等のWebサーバではstaticファイルを表示させる方法が異なります。まずはsettings.pyの中身を以下のように書き換えます。

settings.py
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static') # 本番用
# STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")] # 開発用

その後以下のコマンドを実行して、各アプリケーション下にあるstaticファイルをプロジェクト直下のstaticフォルダに集約します。

$ python3 manage.py collectstatic

次にApacheの設定ファイルを/etc/httpd/conf.d/配下に作成します。
ここでは"myproject.conf"という名前で作成しています。

以下のコマンドを実行して設定ファイルを編集しましょう。

sudo vi /etc/httpd/conf.d/myproject.conf
myproject.conf

LoadModule wsgi_module /usr/local/lib64/python3.7/site-packages/mod_wsgi/server/mod_wsgi-py37.cpython-37m-x86_64-linux-gnu.so

ServerName <EC2のパブリックIPアドレスを記載>

WSGIScriptAlias / /home/ec2-user/myproject/myproject/wsgi.py
WSGIPythonPath /home/ec2-user/myproject:/usr/bin/python3

<Directory /home/ec2-user/myproject/myproject>
  <Files wsgi.py>
     Require all granted
  </Files>
</Directory>

Alias /static/ /home/ec2-user/myproject/static/
<Directory /home/ec2-user/myproject/static>
  Require all granted
</Directory>

1〜12行目まではApacheとmod_wsgiを関連付けるための記述です。
14行目以降がstaticフォルダを許可するための記述です。
※パスやファイル名は適宜環境に合わせて書き換えてください。

最後にApacheのリスタートします。

sudo service httpd restart

これで正しくstaticファイルが表示されるようになるはずです。

参考

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?