今回は、Blogの構成についてまとめる。
運営方法については別記事にしないと分量が半端ないことになりそうだ。
Blogのコンセプト
構成の前に、当Blogのコンセプトをまとめる。
ここが、構成に大きく関わって来る為、避けて通れないのだ。
- Serverlessであること
- Python製であること
- Markdown形式で記述できること
この3つがコンセプトとなる。
下に行くほど重要度は下がる。
コンテンツの内容については割愛する。
Severlessであること
これは金銭的な理由だ。
たかだか個人のBlogに、月何千円ものWebServerとDBServerを用意する必要があるのか。
まぁある人にはあるんだろうけど、設定はいいけど管理面倒だし。
厳密には完全なServerlessではないけど運営するのにお金が掛からないようにするためだ。
そこで、今回はコンテンツファイル(Markdownとか)からhtmlを生成し、それをAWS S3に公開することで
Blogを開設することにした。
Python製であること
これは好みの問題だ。
元々Ruby製のjekyllを使っていたんだけど、どうせ普段はJavaとPythonを書いてるんだし
A
Python製の静的サイトジェネレーターはないかと探した。
結果、あった。
割とすぐにみつかった。(インターネットすごい)
Python製で名前も可愛らしい、Pelicanを採用した。
この辺りは完全な好みだし、別にjekyllでもgolang製のHugoとかでも好きなのを使えばいいと思う。
僕はただPythonが使いたかっただけ。
Markdow形式で記述できること
これも好みの問題だ。
いや、htmlタグの直書きとかだるいやん。
Markdownなら慣れてる(commitメッセージとか,Redmineのチケットとか)から。
学習コストも少なくて済むし。
メンテナンスもしやすそうだし(多分)。
Blogの構成
ようやくBlogの構成についてだ。
当Blogの構成は、以下のようになっている。
local:MacBookPro
ファイル管理:Github
公開用ファイル置き場:AWS S3
Build&Deploy:circleCI
ようするに、localからGithubにmarkdownファイルをpushすると、
circleCIが起動し、htmlファイルを生成->AWS S3にDeployする。
という仕組みで構成されている。
local側の設定
普通にpelicanをquickstartして、諸々の設定をしただけ。
もちろん、gitの設定なんかは済んでいる前提。
Github側の設定
Github側も特に設定する必要はない。
強いていうなら、.gitignoreに '/output' を追記しておくくらい。
AWS側の設定
ここも、特別なことはしていない。
S3のバケット名と後々の独自ドメイン名を同じにしておくくらい。
circleCI側の設定
'.circleci/config.yml' にいろいろ追記していく。
pipで読み込ませるpythonモジュールの一覧ファイルを作ったり。
あと、pip インストールするときは 'sudo' 必須。
ちょっと全体的に長くなるので、分けます。