Toshiyuki Kawanishi Blog


2011
10 . 3

HerokuでPythonでBlogを動かすのに使ったもの

前回、ブログをHeroku上に移行したと書きました。まだ、移行が完全ではないのですし、Webアプリとしても不完全ですが、なんとか読めるくらいにはなったかなと思います。今回は、そのブログシステムの構成について書きます。

ブログシステムはPythonで自分で作ったものを使っています。ブログシステムといえるほどだいそれたものではなく、よくあるWebアプリのチュートリアル+α程度の簡単なものです。以下の図のようなイメージで動いています。

こんなイメージで動いています

"

構成

構成は以下のような感じになっています。

  • Webサーバ: nginx (Heroku)
  • アプリケーションサーバ: gunicorn + meinheld
  • データベース: MongoDB (MongoHQ)
  • セッション&キャッシュストア: Redis (RADIS TO GO)

HerokuのWebのフロントエンドはnginxで、各アプリにルーティングされてきます。詳しくはHerokuのドキュメントにあります。

アプリケーションサーバ(WSGIサーバ)はgunicornで、ワーカとしてmeinheldを使っています。この上にFlaskで作成したブログアプリが乗っています。

セッションとキャッシュはRedisに格納しています。Redisをキャッシュとして使うにはオブジェクトのシリアライズが必要ですが、シリアライズにはMessagePackのPython Bindingを使ってたりします。

サービス

ブログアプリを動かすために、次のようなサービスを使っています。

  • Heroku
  • MongoHQ
  • RADIS TO GO

アプリはHerokuに乗っています。HerokuのアドオンとしてMongoHQRADIS TO GOを登録しています。どれもFreeプランの範囲内で動いています。

その他

認証はTwitterの認証を使っています。Facebookとか他のOpenIDの認証とかもやろうとおもったのですが、時間がなかったのでとりあえずこの形になっています。

あとTwitter Bootstrapを使ってみたのですが、とりあえずそのまま使ってみたという感じで、今後色々いじってみようかなと思っています。

まとめ

もともとWordPresをレンタルサーバ上にインストールしてブログを書いていたのですが、だんだん煩わしくなってきて、移行しました。また、ブログの記事をemacsでreStructuredTextで書いてgitで管理したりとか、普段使っているツールでブログもかけたらいいなということもありました。

とりあえずざっと作ったので、色々なところが雑多としていますが、すこしずつ整理していきたいなと思います。

それから、HerokuでPythonアプリを動かした時のメモを、今度まとめようかなとか考えています。


2012/02/20 toenobu python
2011/10/04 yujiorama あれを heroku に乗せたい heroku