LoginSignup
1
1

More than 3 years have passed since last update.

Djangoにstaticファイルだけを配置してWebサーバっぽく使う方法

Posted at

はじめに

Djangoでテスト用にちょっとしたhtmlファイルを置きたかったのだが、そのものずばりな単純なやり方だけを書いてる記事を見つけられず、すごく簡単なことをやりたかっただけなのにかなり時間を食ってしまった。
そのため最短手順をここに書き記しておこうと思う。

作成方法

とりあえずやり方だけ記載。解説は後程。

環境

以下の環境で確認。

H/W AWS EC2(t2.micro)
OS Ubuntu 20.04

以下、インスタンス起動直後のさらっぴんな状態から説明する。

$ pwd
/home/ubuntu

djangoインストール

まずはapt updateしたあとdjangoをインストールする。

$ sudo apt update && sudo apt upgrade -y
$ sudo apt install -y python3-django

プロジェクトの作成

「testprj」という名のプロジェクトを作成する。

$ mkdir testprj
$ cd testprj
$ django-admin startproject testprj .

staticファイルの置き場所設定(settings.py)

さっきの手順でプロジェクトに必要なファイル一式が作成されたのでstaticファイルの配置場所(つまりはLinux上のディレクトリ)をsettings.pyに追記する。ここでは「static_files」ディレクトリとした。

$ cat <<EOF >> testprj/settings.py
> STATICFILES_DIRS = [
>     os.path.join(BASE_DIR, 'static_files'),
> ]
> EOF

BASE_DIRはプロジェクトのベースディレクトリ=/home/ubuntu/testprj/ なので、STATICFILES_FIRSは/home/ubuntu/testprj/static_files/ となる。

htmlファイルの配置

先ほど作成したstatic_filesディレクトリに適当なhtmlファイルを作成する。

$ mkdir static_files
$ echo "This is test html." > static_files/test.html

htmlと謳ってるが中身はタグもないただのテキストである。

HTTPサーバ起動

ここまでで準備完了なのでサーバ起動して動作確認する。

$ python3 manage.py runserver 127.0.0.1:8000

HTTPアクセス

端末をもう一つ立ち上げ、curlで下記URLにアクセスしたらtest.hhtmlが取得できた。

$ curl http://localhost:8000/static/test.html
This is test html.

解説

上記手順の中でsetting.pyに設定を追記したが、改めて中身を確認すると以下のようになっている。

testproj/settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static_files'),
]

STATIC_URLはデフォルトで設定されているもので、今回追加したのはSTATICFILES_DIRSである。
os.path.join()は第一引数と第二引数のパスをつなぎ合わせる関数。
この設定の意味するところは、「STATICFILES_DIRSディレクトリにあるstaticファイルをSTATIC_URLで指定したパス以下で取得する」ということになる。
整理すると以下の関係ということだ。

URL http://127.0.0.1:8000/static/test.html 赤字がSTATIC_URL
ディレクトリ /home/ubuntu/testprj/static_files/test.html 青字がSTATICFILES_DIRS

参考

Managing static files (e.g. images, JavaScript, CSS)

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