今回から何回かにわけて、Python製のWebフレームワーク『Django』を使ってWebサービスを作り、実際にVPSにデプロイして全世界に公開するまでの手順を書いていきます。
想定する読者の方
Webサービスをローカルの開発環境で作るだけでなく、実際にVPSにデプロイしてインターネット公開するまでやっていきます。Webはいろいろな技術を組み合わせてものができるので、GitやLinux、Apacheといった用語が出てきます。なので本当に理解しようとするといろいろなことをキャッチアップしないといけません。
プログラミングやWebに関する知識が無いとその分何をやっているのか見えないとは思います。ただ個人的にはまず動くものがあったほうが、どうやってそれが動いているかを理解しやすいと考えているので、まずはコピペの連続でもいいので簡単な完成形を作ることを目的にします。動かないものは動かない理由がたくさん考えられ、さらにそれら原因が複数あることが多いです。しかしまず動くものがあると、それ前提でいじって動かなくなったとしても、そのいじった部分が動かなくなった原因であることは自明です。なので五里霧中というか、闇雲にいろいろ試して時間を浪費するけど結局よくわからない、みたいな負のスパイラルになるべくはまらずに学習できると考えています。
ということで、全然Webやプログラミングの知識が無い方でも、とりあえず説明をなぞったら動くものができた、というレベルを目指します。
そのため本当に初歩的なこととかも書きますが、ご存知の方も多いと思うので適宜読み飛ばしていただければと思います。
マニュフェスト
全体的には下記の図に出てくるような内容を書いていきます。
自分のローカル開発環境でDjango製のWebアプリケーションを開発。それを本番環境であるVPSにデプロイし、インターネット接続を可能にするという流れです。
技術的な内容
-
Django : Python製Webフレームワーク
-
Pinax : 予めいろいろな機能が内包されている、Djangoでできた雛形アプリケーションです。
- ユーザー管理タイプ(登録・ログイン・ログアウト・退会等)
- 決済管理タイプ(Stripeとの連携機能)
- ブログ管理タイプ(記事の投稿・編集・公開等)
... などなど、作りたいサイトに合わせていろんな種類が用意されています。今回はPinax-Account
というオーソドックスなユーザー管理用アプリケーションを利用してWebサービスを作っていきます。
-
VPS(バーチャルプライベートサーバー) : 作ったアプリケーションをホスティングするためのインフラです。イメージ的にはどこかにあるサーバーを借りて、それを自由に使うという感じです。VPS特有の内容でなにかキャッチアップするというよりも、下記のような基本的な内容を舐める形になります。
- Centos7 : Linux系のOSで、Webサーバーによく利用されるものです。
- Apache : 老舗Webサーバーソフトです。
- Git : バージョン管理ソフトです。複数人で開発を効率的に行うためのものですが、今回はローカルのPCとVPSをつなぐために利用します。
DjangoでWebアプリケーションを作りそれを公開する場合、herokuが頻繁に利用されるように感じます。ただ、個人の趣味とは言えWebサービスを開発・公開して運営していくとなるといささかハードルがあるので、より自由度が高く融通が効いて安いVPSを利用していきます。
作るWebサービス
題材として、下記のような仕様のTODOアプリを作成していきます。(かなりありきたりかつつまらなくてすいません。)
- 会員登録すると利用できる
- TODOを作成・削除できる
- TODOを一覧表示できる
- プロジェクトを作って複数のTODOをまとめられる
本来必要な機能は全然足りない状態で進めますが、その辺りは長期的に記事を書いて、その時の題材として使い回せるようにしていきます。
環境構築周りの話を先に終わらせます
個人的にWebフレームワークを学習するときなんかは、環境構築はそうそうに早くコードを書きたくなります。しかしせっかく時間をかけて作っていざサーバーを借りて公開しようとしても、使おうとしていたライブラリの制約があったり、データベースに制限があったりで、大幅に後戻りをするということが起きることがあります。
なのでそういった不確実性が高いものからリスクを潰していくということもあり、まず先にWebアプリケーションが公開できるというところまで持っていって、その後ようやくTODOアプリとして拡張していきます。
- 前提
- Macを利用します。
- 統合開発環境PyCharmを利用します。
- Pythonの簡単な構文はご存知という前提で進めていきます。
初学者の方へ
もしPython(プログラミング言語)、インフラ、OS、みたいな単語がピンとこない、それらがWeb全体の中でどんな役割を担っているのかわからない、という場合は下記の記事を先に読んだほうが全体像を俯瞰しながら進めることができると思います。(わからないまま進めても大丈夫なようにはしようと思います。)
webサービス(webアプリ)を1年独学で個人開発してきた僕の作り方
これからIT業界を目指す人へ 知っておきたいWeb開発の基本
Webの仕組みとプログラミング言語
次回
それでは、Macにいろいろインストールして、Webアプリケーションにローカルでアクセスするまでをやっていきます。