これからVPSを使ってサイト構築する予定なので考えてるサイトがちゃんと構築できるのかまずはラズパイで試してみることにしました。
最初はWordPressで出来るかなー?と思っていたんだけど、どうも考えていたものと違ったらしく、仕方ないのでApache2とDjangoを使って挑戦することにします。
これからDjangoについていろいろ調べながら奮闘しますので備忘録として残します。
エラーもそのまま残しますので約にたたない情報も出るでしょうけれどご容赦ください。
最終的にうまく理解できてからしっかり纏めます。
良く解らないままとりあえずサンプルページやら何やら動かしていきますので、もし「それ、間違ってるぞー!」なんてことがあれば是非とも”やんわりと”ご指摘していただきたいです。
Djangoは「ジャンゴ」とは
注意)これはワンピースに出て来る催眠術師の「ジャンゴ」で今回のDjangoとはなんの関係もありません!
実は今、Amazonのプライムビデオでワンピースが無料で見放題なのでハマっています(どーでもいい)↓
本題です。
DjangoはPythonで動的なWebページ(Webアプリ)を作る時に便利なフレームワークの1つで、これを使いこなせるとどんなページでも簡単に自由に作れるという超便利なものなのだそうです。
とはいうものの初心者には難しいらしく、僕も奮闘することになるのかなと思い、ここに日誌的に記録を残すことにしたのです。
Djangoと今Web制作で話題のWordPressに代表されるCMSの違いは、CMSはパソコンのブラウザでブログ記事のように簡単にHPやブログが作成出来る仕組みで、DjangoはPythonコードをゴリゴリ書いていくスタイルということです。むかーしからHTMLをゴリゴリ手打ちで書くのに慣れている僕にはうってつけ!(逆にCMSが使いにくく感じる)けど、正直cssとかよくわからんけどその辺はフリーのテンプレートで対応することにしまっす。
「ホームページ テンプレート 無料」←検索 で結構あります。
で、そのテンプレートを弄って必用な箇所だけDjangoで置き換えればOK!
なはず(じつは未だよくわかっていないが、そういう認識)
以前にBottleという軽量フレームワークを使ってWebページを作ってみたことがあるのでおそらく同じように使えるハズです。
Djangoはwebで出来る事全部入り!
以前使ったBottleはDjangoより軽量のフレームワークで簡単ですが、やはり出来る事も情報も少ないようです。
Djangoは「ユーザー認証」「管理画面」「案内ページ」「RSSフィールド」「投票」
などなど、予め部品が用意されています。↓参考になりそうなブログ発見!
このブログもおそらくDjangoで作られている!はず!
セキュリティー対策バッチリ!
例えばWordPressに代表されるPHPは動的なWebページとして機能しますが、サーバーの設定を誤ると中のphpファイルが丸見えになります。
DjangoはpythonファイルをWebページとは完全に切り離したディレクトリに配置できるのでサーバーの設定ミスでファイルが丸見えになることはありません!(だそうです)
またユーザーの認証システムも同じく安全に切り離して管理できるシステムだそうです(未だよく解っていないけど)。例えば、僕が確認したことのあるものではCMSの1つである「EC-Cube」ではweb公開配下のディレクトリ内、configというディレクトリにデータベースの情報データベース名、パスワード、データベースアドレス等が生データでymlファイルで保存されていました。こういうものは設定をミスるとモロバレになるんです。
こういったこともあるのでweb公開ディレクトリ配下に大事なファイルを置かないというだけでもかなり安心できます。
慣れると開発が早い
納期スピードが求められるIT業界でもてはやされています。
プロトタイプ(仕様の確認)が早く出来るので非常に実用的なのです。
慣れないとダメですけどね。
信頼できる
スピードの求められるIT業界で使われ、またオープンソースなのでどんどん使い易くなっており、大手の会社や政府まで採用事例があります。
なんと!InstagramもDjangoで作られているのだそうです!
情報が多い
フレームワークとして有名なのでBottleよりはるかに多くの情報が得られます。
初心者向けの情報は少ないようにも見えましたが、これからいろいろ探ってみることにします。
インストール
今までpython2系でやってきたけどこれからpython3系を使う予定なのでpipもpip3でdjangoをインストールします。
pipのバージョン確認とdjangoのインストールです。
raspberrypi:~ $ sudo pip3 --version
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.5)
raspberrypi:~ $ sudo pip3 install djangoCollecting django
Downloading https://files.pythonhosted.org/packages/51/1a/e0ac7886c7123a03814178d7517dc822af0fe51a72e1a6bff261/Django-2.1-py3-none-any.whl (7.3MB)
100% |████████████████████████████████| 7.3MB 9.0kB/s
Collecting pytz (from django)
Downloading https://files.pythonhosted.org/packages/30/4e/27c34b62430286c6d59177a0842ed90dc789ce5d1ed740887653b89a/pytz-2018.5-py2.py3-none-any.whl (510kB)
100% |████████████████████████████████| 512kB 116kB/s
Installing collected packages: pytz, django
Successfully installed django-2.1 pytz-2018.5
出来たっぽい。特に何かパッケージを入れることもなく、はやっ!
動作確認
ちゃんと入ってるか確認します。
raspberrypi:~ $ python3
Python 3.5.3 (default, Jan 19 2017, 14:11:04)
[GCC 6.3.0 20170124] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.get_version()
'2.1'
>>> exit()
出来てるっぽいヴァージョンは2.1ですね。
てことで今日はここまで。次回はサーバーの起動です。