LoginSignup
5
9

More than 5 years have passed since last update.

Djangoでのlocalhostではないhello world

Last updated at Posted at 2017-03-20

はじめに

作業時にはGoogle Cloud Platformにインストールしています。
DjangoのHello Worldではまずlocalhostで行うことが多いと思いますが、デプロイの一連の流れを記載する意味で書いています。
前提として、mod_wsgiでhello worldを描画するを行なっているものとします。(mod_wsgiが必要なので)

環境
OS: Debian 9.0 stretch
Python: 3.6.3

Djangoのインストール

早速インストールしていきます。
Python周りは既にインストールされているものとします。
まず、pipをアップグレードして、Djangoをインストールします。

pip install --upgrade pip
pip install django

...本当にインストールされたのでしょうか。
以下を順に打ち込んでみます。

python
>>> import django
>>> django.get_version()
'2.1.5'

このようにバージョンを確認することができれば、インストールは成功しています。
その後はquit()と打ち込んでpythonモードを終了しましょう。

Djangoプロジェクトの作成

ホームディレクトリに移動してDjango Projectを作成します。(別にホームディレクトリではなくてもよいのですが)

cd ~
django-admin startproject myproject

これでHOMEディレクトリ直下にDjangoプロジェクトが作成されています。

apache2の設定ファイルを変更する

ドキュメントルートへのアクセスに対してDjango内のwsgi.pyで応答させるよう、apache2の設定ファイル(sites-available/000-default.conf)を変更します。

cd /etc/apache2/sites-available
sudo vim 000-default.conf

DocumentRootをコメントアウト(このように→# DocumentRoot /var/www/html)してください。
mod_wsgiでhello worldを描画するWSGIScriptAliasを設定していた場合は、これも消してください。
その後、以下を追加します。USERNAME部分を変更するのを忘れずに
ちなみにvimでは:%s/USERNAME/YOURNAME/gで置換できます。

WSGIScriptAlias / /home/USERNAME/myproject/myproject/wsgi.py
WSGIPythonPath /home/USERNAME/myproject

<Directory /home/USERNAME/myproject/myproject>
    <Files wsgi.py>
    Order deny,allow
    AllowOverride None
    require all granted
    </Files>
</Directory>

django設定ファイルの settings.py を変更する

ファイル名の通り、Djangoに関する設定を変更します。
ここではvimでファイルを編集します。

cd ~/myproject/myproject
vim settings.py

まず、アクセスできるHostを設定する必要がありますので、ALLOWED_HOSTS = []を変更します。

ALLOWED_HOSTS = ["*"]

次に言語と時刻設定を変更します。

LANGUAGE_CODE = 'ja'

TIME_ZONE = 'Asia/Tokyo'

Django Applicationを作成する

ここまでで、Djangoプロジェクトを作成しました。次にDjangoアプリケーションを作成します。
例によってmanage.pyを使用します。

cd ~/myproject
python manage.py startapp myapp

すると以下のような階層構造が出来上がっているはずです。

myproject
  |
  ├── myapp
  │     ├── __init__.py
  │     ├── admin.py
  │     ├── apps.py
  │     ├── migrations
  │     │   └── __init__.py
  │     ├── models.py
  │     ├── tests.py
  │     └── views.py
  ├── db.sqlite3
  ├── manage.py
  └── myproject
      ├── __init__.py
      ├── settings.py
      ├── urls.py
      └── wsgi.py

次にmyappアプリケーションを認識させるため、settings.pyの編集を行います。

cd ~/myproject/myproject
vim settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp'
]

このようにmyappを追加することで、作成したアプリケーションが認識されます。

views.pyを編集する

画面の描画部を作成します。
myappフォルダ内のviews.pyの編集です。

cd ~/myproject/myapp
vim views.py
from django.shortcuts import render
from django.http import HttpResponse

def home(request):
    return HttpResponse("Hello, Django World")

urls.pyを編集する

クライアント側のリクエストurlに対してどのviewを返すのか、そのロジックを作成します。

cd ~/myproject/myproject
vim urls.py
from django.contrib import admin
from django.urls import path
from myapp.views import home

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', home),
]

最後にapache2を再起動してください。

sudo service apache2 restart

これで Hello Django World が描画されるはずです。
次はデータベースをPostgreSQLに変更する予定です。

5
9
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
5
9