ホーム >  Python >  VagrantのDjangoで作るWebアプリケーション(その1 プロジェクト生成)

投稿日:   |  最終更新日:

VagrantのDjangoで作るWebアプリケーション(その1 プロジェクト生成)

Python

Vagrantを使い、WebフレームワークであるDjangoを環境を作ります。今回は、実際にWebアプリケーションのプロジェクトを作ります。

Djangoのプロジェクトとアプリケーション

Djangoは、大きく分けて2つの単位に別れます。

  • サービス全体を示す「プロジェクト」単位
  • サービスの1機能を示す「アプリケーション」単位

プロジェクトとアプリケーションの範囲は厳密に定義されているわけではありません。しかし、モデル自体はアプリケーションごとに定義します。また、データベースはプロジェクト全体で共有することになります。

準備

Vagrantでゲスト環境(仮想環境)を作ります。ゲスト環境の中にDjangoを構築します。その前に、以下の作業を終わらせましょう。

①Virtualboxをインストールします。Virtualboxのインストールまでで結構です。

VirtualBoxをインストールする for Ubuntu

②Vagrantをインストールします。centos7環境を作りますので、Vagrantのインストールのみ済ませてください。

Vagrantをインストールしてテスト環境を作る for Ubuntu

③Vagrantにcentos7環境を作ります。

VagrantでCentOS7 + Python + Django環境を作る(その1 仮想環境作成)

④VagrantにPython3をインストールし、「pyenv + virtalenv」を作ります。

VagrantでCentOS7 + Python + Django環境を作る(その2 Pythonとpyenv + virtalenv)

⑤VagrantにMariaDBをインストールして、DBを構築します。

VagrantでCentOS7 + Python + Django環境を作る(その3 MariaDB)

⑥VagrantにWebアプリケーションサーバーのnginxをインストールします。

VagrantでCentOS7 + Python + Django環境を作る(その4 nginx)

⑦VagrantにDjangoをインストールします。

VagrantでCentOS7 + Python + Django環境を作る(その5 Django + uWSGI)

ホスト環境

OS Ubuntu 16.04.1 LTS 64bit
Virtualbox 5.1
Vagrant 1.9.5

ゲスト環境

OS CentOS 7.1.1503
Python 3.6.1
pip 9.0.1
Web フレームワーク Django 1.11.2
データベース MariaDB 5.5.52-1.el7.x86_64
Webサーバ nginx 1.13.2

Vagrantへログイン

①【ホスト環境】端末を開き、前回構築したVagrantのディレクトリまで移動します。

cd vagrant/django_apps/

②【ホスト環境】仮想マシンを起動します。

vagrant up

③【ホスト環境】ログインします。

vagrant ssh

firewall停止

①デフォルトで用意されているindex.htmlにHTTPアクセスできるか確認するため、firewalldを停止状態にします。

sudo systemctl stop firewalld
sudo systemctl disable firawalld

pyvenvで作成した仮想環境にログイン

前回、pyenvで仮想環境「venv_app1」を作成しました。ここにログインします。

①【ホスト環境】Vagrantの中の「venv_app1」ディレクトリまで移動します。

cd /vagrant/django_apps/venv_app1/

②【ゲスト環境】「venv_app1」を有効化します。

source ./bin/activate

以下のようなプロンプトが表示されれば有効化成功です。

(venv_app1) [vagrant@localhost venv_app1]$ 

Djangoプロジェクトを生成

プロジェクト名を「pj1」、アプリケーション名を「app1」という名前で構築します。

①以下のディレクトリに移動します。

cd /vagrant/django_apps/

②Djangoプロジェクトを作成します。

django-admin startproject pj1

以下のようにpj1ディレクトリが生成されます。

ls -la
合計 16
drwxrwxr-x 1 vagrant vagrant 4096  6月 30 07:39 .
drwxrwxr-x 1 vagrant vagrant 4096  6月 27 05:10 ..
drwxrwxr-x 1 vagrant vagrant 4096  6月 30 07:39 pj1
drwxrwxr-x 1 vagrant vagrant 4096  6月 28 06:18 venv_app1

下記のようなディレクトリが作成されます。

  • pj1/
  • manage.py
  • pj1/
  • __init__.py
  • settings.py
  • urls.py
  • wsgi.py

ここまでの概要は以下の通りです。

  • pj1/pj1ディレクトリ配下のファイル群が、全アプリケーションに共通する設定ファイル
  • pj1ディレクトリ配下に自動で作成されるmanage.pyは、様々な便利な機能を備えるプログラム。
外側のpj1/ このプロジェクトのただの入れ物です。 ディレクトリ名(pj1)は、Djangoに関係しませんので、好きな名前に変更できます。
manage.py Django プロジェクトに対する様々な操作を行うためのコマンドラインユーティリティです。
内側のpj1/ このプロジェクトの本当のPythonパッケージです。この名前(pj1)が、Pythonパッケージの名前であり、 importの際に使用する名前です(例: import pj1.urls) 。
pj1/__init__.py このディレクトリが Python パッケージであることを Python に知らせるための空のファイルです。
pj1/settings.py Djangoプロジェクトの設定ファイルです。
pj1/urls.py Django サイトにおける「目次」に相当します。
pj1/wsgi.py プロジェクトをサーブするためのWSGI互換Webサーバーとのエントリーポイントです。

簡易Webサーバ起動

①Djangoの開発用簡易Webサーバを立ち上げます。

python pj1/manage.py runserver 0.0.0.0:8000

マイグレーション関連でエラーを吐きますが、現状は無視でOKです。

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

October 10, 2016 - 16:28:45
Django version 1.10.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

簡易サーバを立ち上げれば、「ngix」などのWebサーバを用意せずとも、開発中のアプリケーションをWebブラウザで確認することが可能です。

②ホスト環境のブラウザから、以下のURLを入力します。ここではVagrantfileのp「rivate_network」の業で指定したのIPアドレスを利用します。

http://192.168.33.15:8000

あれ?「DisallowedHost at / …」という警告が出てしまいました。

③「Ctrl+C」で簡易サーバを一度停止します。

④プロジェクトディレクトリ内のsettings.py(pj1/pj1/settings.py)を編集します。以下のように「ALLOWED_HOSTS」の記述を書き換えます。

ALLOWED_HOSTS = [ '192.168.33.15' ]

※「192.168.33.15」は、vagrantに設定したipアドレスです。

⑤もう一度簡易サーバを起動します。

python pj1/manage.py runserver 0.0.0.0:8000

また、ホスト環境のブラウザから、以下のURLを入力します。

http://192.168.33.15:8000

成功すると、Webブラウザで以下の画面を確認することができます。

次回

次回は、ゲスト環境(仮想環境)にPythonをインストールします。

VagrantでDjangoで作るWebアプリケーションを作る(その2 プロジェクトの初期設定)

トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター、フロントエンドエンジニア 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 20

最近の投稿
人気記事
カテゴリー
広告