Django で作成したサイトの公開方法
一通り Djang のフレームワークを利用して、Web アプリ・Web サービスを開発する基本的な手順を紹介してきましたので、実際に Django で作成したサイトをインターネットで公開する方法を紹介してみようかと思います。
Django で作成したサイトを公開する場合、いろいろな方法があります。自分でサーバーを準備して OS のインストールから、Web サーバー周りの設定をやるとなると、ちょっと複雑です。そこで、今回は簡単にインターネットに公開する方法として、Django をはじめとする、Python を利用した Web ホスティングのサービスを提供しているプロバイダーの一つの「Pythonanywhere」のサービスを利用して、Django のテンプレートのプロジェクトの公開を一通りやってみる事にしました。
Pythonanyware
Pythonanywareは名前からもお分かりかと思いますが、Python に特化したサービスを提供しているプロバイダです。サイトは英語のサイトになっています。制限などはありますが、まずは無料で Django の Web アプリを公開することができます。
「Beginner(ビギナー)」プランは無料から利用できます。ドメインの変更はできないので、「[username].pythonanywhere.com」にこと英なのとの、アプリは一つだけで利用できる CPU やネットワークのアクセスなどに制限があります。
まずは、サービスを作成して公開するという目的ならば十分です。有料プランも5ドルからあるので、利用の目的に応じてプランを選択すれば比較的低価格でのサイトの運営も十分に可能です。
最大の魅力は「簡単に公開(デプロイ)できる」のが魅力です。
アカウントの作成は簡単で「Plans and pricing」のページから「Create a Begineer account」のボタンをクリックします。その後は、ユーザー名や E-Mail アドレスを入力して登録するだけです。
公開コンテンツの作成
当たり前ですが、公開用のコンテンツが必要です。 通常は、Django のプロジェクトを作成して、公開したいアプリを開発します。これは、これまで紹介してきたように、開発用の PC で開発用のサーバーを使って作る事になります。
今回は、「公開」が目的になりますので、コンテンツは、Django のテンプレートというか、Django でプロジェクト・アプリを作成した際に表示されるプロジェクトをそのまま公開することにします。
手順は以前の記事で紹介していますので今回は簡単に項目だけを紹介していきます。
* プロジェクト用のフォルダの作成と仮装環境の作成
* 仮装環境に Django をインストール
* Django のプロジェクトとアプリの作成
これだけです。必要に応じて、アプリの機能などを入れても手順は基本的に同じです。
公開するプロジェクトが確定したら、プロジェクトを GitHub にプッシュします。
理由は、Pythonanywhere に公開するプロジェクトをアップロードする方法として、GigHub から設計データをダウンロード(クローン)して利用する仕組みになっているためです。この方式なので公開するプロジェクトを更新した場合でも簡単に Pythonanywhere と同期を取ることができます。
なので、手順としては
* GigHub にアカウントがない場合は作成する
* GigHub にプロジェクトのリポジトリーを作る
* GigHub に公開データをプッシュする
という作業が必要になります。Git の使い方に慣れていない方もいらっしゃるかと思いますが、Git・GitHub に関するやり方の情報はインターネットに沢山ありますのでそちらをご覧ください。
Pythonanywhere 側の設定
ここからが実際の公開作業になります。 Pythonanywhere にログインしてください。ダッシュボード(Dashboard)に行くと、「Consoles(コンソール)」というブロックがあるので、クリックしてください。そうすると、Pythondanywhere のサーバーにアクセスできます。Linux や Mac のターミナル(シェル)や Windows のコマンドライン(PowerShell)に相当する機能が使えます。
ここから、先ほど、GigHub にプッシュした公開する Django のプロジェクトをクローンします。
$ git clone h t t p s://github.com/[git_user_name]/[repository_name].git
これで、Django のプロジェクトの内容が Pythonanywhere に複製されます。
仮装環境を作成します。開発時とは少しやり方が違います。
$ mkvirtualenv --python=/usr/bin/python3.x [仮装環境の名前]
コマンドを実行すると、仮装環境が Pythonanywhere のホームフォルダの下に、「.virtualenvs」の下に作成されて、仮装環境が有効化されます。 仮装環境が有効化されているのでそのまま、Django をインストールします。
$ pip3 install django
これで、Django の設定と、公開用のデータの準備は完了です。
プロジェックとフォルダで
$ python3 manage.py migrate
を実行してデータベース関連の設定を有効にします
次は、メニュー(ページの右上の2列目)で「Web」を選択して Web サーバー側の設定を行います。少しわかりにくいのですが、既にデータを保存していますが、「新規作成」を選んでください。プロジェクト名とパスを指定ください。
Python のフレームワークの選択
Pythonanywhere は Django 以外の Python ベースのホスティングも可能です。従って、Flask などのサイトの公開も可能です。今回は、Django のフレームワークを利用した Web アプリや Web サービスを前提にしていますので、「Django」を選択ます。
Virtualenv の選択
先ほど作成して、Django のインストールの際に利用した仮装環境を指定します。 仮装環境は、ホームフォルダの下の「.virtualenvs」の下に作成されているので、作成した仮装環境の名前を含むパスで指定します。
Django のプロジェクトフォルダの指定
「Code」のセクションでは、Django のプロジェクトフォルダ(manage.py)があるフォルダを指定してください。Working ディレクトリは、Pythonanywhere のホームフォルダのままで OK です。
WSGI のファイルを確認します。以下のような内容になっているはずです
# This file contains the WSGI configuration required to serve up your
# web application at http://[username].pythonanywhere.com/
# It works by setting the variable 'application' to a WSGI handler of some
# description.
#
# The below has been auto-generated for your Django project
import os
import sys
# add your project directory to the sys.path
project_home = '/home/[username]/sample'
if project_home not in sys.path:
sys.path.insert(0, project_home)
# set environment variable to tell django where your settings.py is
os.environ['DJANGO_SETTINGS_MODULE'] = 'sample.settings'
# serve django via WSGI
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
今回は、データベースの設定は行っていませんが、必要に応じてデータベースの設定を行います。メニューの「Database」から行えます。
以上で公開作業は完了です。実際にサイトとして公開するには他にも細かい設定は必要ですが、これで当面の設定は完了です。
無料アカウントの制限
Pythonanywhere を使うと簡単に Django の Web アプリや Web サービスを公開できます。 コンテンツの準備が出来ていれば、簡単な Web アプリならば 1 時間もかからずに公開は可能です。
ところで、気になる無料アカウントの制限ですが、「CPU 時間の制限」と「ファイル容量の制限」があります。CPU 時間は利用する CPU の時間(実際に作業をしている時間ではなく、実際に CPU がデータを処理した時間)が 100 秒を超えると遅くなると書いてあります。100 秒を超過した状態も一定時間を経過するとリセットされます。ファイルの容量は512 MB が上限です。
また、サイトの公開期限があって、無料アカウントの場合、公開した日から 3 ヶ月間になっています。3 ヶ月ごとにログインして更新すれば継続して公開できます。
また、カスタムドメインも使用できません。
まずは、無料で試してみて、本格的に運用する場合は有料プランにアップグレードするのが良い利用法かと思います。
まとめ
今回は、一番シンプルな方法で Django のプロジェクトをインターネットに公開する方法を紹介しました。Django のフレームワークで作成したプロジェクト(Web アプリ・Web サービス)を公開する方法はいろいろありますが、Pythonanywhere を利用すると開発環境と同じような感じでインターネットに公開することも可能です。
本格的なデプロイについては今後さらに詳しい記事を書くことも予定していますが、サービスを選べば比較的簡単に安価で Web サイトを運営することも可能です。