Ubuntu 10.04 LTS server でpython環境をbuildoutで構築する

目次

手順

% sudo apt-get install zsh aptitude
% sudo aptitude update
% sudo aptitude install gcc zlib1g-dev libc6-dev libjpeg-dev -y
  • 2012/01/22 追記
    • PILでjpegサポートさせるために、libjpeg-devを追加
Read and Post Comments

githubとblogofileで独自ドメイン無料Blog環境構築

結論

いきなり結論。

既存ブログサービスの問題に対する考察 で考えた理想のBlog環境は 以下のものを組み合わせることにより、ほぼ満足いく環境ができた。

  1. GitHub Pages によるHTML公開+独自ドメイン設定
  2. Blogofile による記事HTML+デザインの一括generate
  3. Bootstrap from twitter によるデザイン設定の簡略化
  4. DISQUS やその他ブログパーツによるブログのソーシャル化

今見ているこのBlogのソースコードは全て

https://github.com/tanarky/tanarky.github.com

に上げている。

以下、詳細。

Github PagesによるHTML公開+独自ドメイン設定

GitHubでは、コードだけではなく、HTMLなどのドキュメントも GitHubのサーバを用いて公開することができる。

静的なファイルであれば、HTMLやCSS/Javascriptなど公開可能。 画像ファイルも公開可能だが、無料ユーザの場合、容量制限が300Mなので、 画像ファイル置き場としてはあまり望ましくない。 PHPファイルなどサーバサイドでの動的処理は動かない。

この手段は、一部のオープンソースプロジェクトでよく利用されている。

設定な方法詳細は、 GitHub Pages を参照すれば詳しく書いてあるが ユーザごとのページ設定手順をざっと説明すると、以下の通り。

  1. GitHubのユーザ名(アカウント)を tanarky とする
  2. tanarky.github.com というリポジトリを作成する
  3. リポジトリ直下にindex.htmlという名前のHTMLファイルをコミットし、pushする
  4. http://tanarky.github.com/ で公開したHTMLが見えるようになる

と、いたって簡単。

tanarky.github.com というドメイン名が気に入らなければ、 独自ドメイン設定も可能

valuedomainなどで取得済みのドメイン名が example.com だった場合、

github.example.com というサブドメインで公開したければ、

cname github pages.github.com.

サブドメインではなく、 example.com で公開したければ、

a @ 207.97.227.245

と、どちらかお好みのDNS設定をする。

次に、tanarky.github.comというリポジトリの直下に、 CNAME というファイル名で、 中身に公開したい独自ドメイン名を書く。

example.com で公開したければ、

example.com

と1行書いて保存すればOK。

これをgit pushして、DNSの設定が反映されれば設定完了。

GitHubを用いることで、無料のHTMLサーバと、 gitによるコード管理とバックアップ環境が、同時に無料で手に入ってしまった。

Blogofileを使った記事+デザイン構築

Blogofile とは、markdown形式やrestructuredText形式のファイルから、 静的HTMLをgenerateして、ブログページを構築してくれるPythonで書かれたツールのこと。

1コマンドでカテゴリ分類やRSSなども一括でgenerateしてくれる。

インストール方法、の前に、まずはPython環境を整える必要があるので、 Ubuntu11.10のPython開発環境を整備 を一読することをおすすめします。

綺麗なPython環境ができたところで、インストール。

% pip install blogofile
% cd ~/github/tanarky.github.com
% mkdir _blogofile
% cd _blogofile
% blogofile init simple_blog
% blogofile build

これで完了。 ポイントとしては、ディレクトリ名を "_blogofile" と "_" から始まる名前にしておくこと。

GitHub Page経由では、"_" から始まるファイル名やディレクトリ名は見えなくなるという仕様を利用するため。

github経由でソースが見れるんだから意味ないじゃん、という言い分もあるが、 GitHub Page経由では公開する必要がないファイルなので、 公開したいファイルやディレクトリと明示的に区別するために、"_" から始まる名前にしておく。

buildが終わったら、blogofileには、 Webサーバが同梱されている ので、

% blogofile serve 10080
Blogofile server started on 127.0.0.1:10080 ...

などとWebサーバを起動させれば、http://localhost:10080/でサイトを確認することができる。

投稿は、_blogofile/_post/ 以下に、markdown形式やrst形式などでファイルを置いておけば、 build実行時に勝手にブログ記事にしてくれる。

自分はrst形式に慣れているので、rst形式で記事を書いている。

Bootstrap from twitterを使ったデザイン

デザインを1から作るのは大変なので、使ったことがある jQuery UI を使おうか、と思ったが、 このブログでは、勉強がてら、 Bootstrap from twitter を使ってみた。

アイコンなどの画像は一切ついていないが、 レイアウトなど、非常に直感的にデザインをいじることができるので満足している。

DISQUSなどブログパーツを用いたソーシャル対応など

動的な処理は一切動かないので、各種ブログパーツに委ねないと、なんとも寂しいブログになるので、 好みのものを配置する。

個人的に、あまりブログパーツを置き過ぎると表示が重くなるのと、 見た目もごちゃごちゃするので、おいたのは以下のものだけ。

DISQUS は、Javascriptで動く、コメントやトラックバック機能を実現できるモジュールで、 このブログの一番下にも貼ってあるブログパーツ。

ログインしないとコメントさせない設定、など非常に機能が豊富で、 何より静的なHTMLの中でこういう機能が実現できるのが嬉しい。

諦めた機能

静的なHTMLのブログ、ということでいくつか諦めた機能は以下。

  • Smartphone用にページ表示を最適化して見せること
  • 時限式の記事反映(明日の12時に自動で反映されるように設定する、など)
  • 画像アップロード機能(画像はFlickrなどにまとめて置くようにする)

まとめ

長々と書いたが、上記のような構成のブログ環境は、アメリカなど海外ではやや浸透しつつある構成っぽい。 ぐぐると英語のページが色々ひっかかったので。

ただ、上記の設定内容を1つのページにまとめて書かれたものはなかったので、頑張って書いてみた次第。

GitHubにpushしなくても、上述の通り、Blogofileにはwebサーバも同梱されているので、 プライベートなブログとしてこっそり書くこともできるし、 個人ブログという用途だけではなく、プロジェクトページや企業ページでも使えると思うので、 興味を持った人は是非お試しください。

Blogofileの動作変更、SEO対策、記事を書く上でのgit branchの使い方、など 細かい設定点は他にも色々あるので、今後記事にしていく予定。

Read and Post Comments

既存ブログサービスの問題に対する考察

背景

2009/08 - 2010/07まで、ブログを1年間毎日更新する、という目標を掲げて、 365記事以上書き、アクセスを増やした中で一番感じたことは、

ブログを更新することは面倒である

ということだった。

自分で書きためたネタを、時間がたって忘れたときに自分で検索して思い出したり、 書くことで頭が整理された、などの多大なメリットがあったにも関わらず、 最終的には、 面倒 がメリットをうわまって更新を続けられなくなってしまった。

考察

この 面倒 の原因をざっと分けると、

  1. ネタの問題、記事のクオリティの問題
  2. 環境やツールの問題

上記の2点。

1に関しては慣れの問題である程度解消したりもしたが、 2に関してはブログを書き続けても解消されるどころか、問題がどんどん深刻化した。

深刻化した問題とは、

  1. ブログ記事を書くためのツール問題
  2. ブログのデザインを設定するツール問題
  3. ブログを公開する環境の問題

の3つ。

以下でそれぞれ考察してみる。

ブログ記事を書くためのツール問題

まずは、ブログツールにログインして、ブラウザ上で編集する、という行為が面倒だった。

当然ログインが必要だし、ブラウザ上で編集するためいちいち煩わしい。 小さいテキストエリアでちまちま編集しなきゃいけないし、 各画面間の遷移も積み重なってくるとイライラする。

加えて、たとえWYSIWYGという補助ツールがあっても、 文書をちょっと装飾するためにHTMLを書くのはちょっと苦行すぎる。 HTMLで記事を書くと、全体デザインを変えたときに記事とのミスマッチが生じて、 結局気になって、記事のHTMLまで編集する羽目になる。

一番問題なのは、記事のバージョン管理ができないこと。 前回との差分をdiff形式で見れないなんて効率が悪すぎる。

ブログのデザインを設定するツール問題

記事ツールの問題と同様、たいていのブログサービスでは、 テンプレート中にCSSを埋め込む形式なので管理が煩雑。 Javascriptも同様の形で埋めこむので、デザインテンプレートを直接編集するのは至難の業。

で、必死こいて編集したテンプレートファイルはバージョン管理できないので、 以前の状態に戻すには自分でバックアップを取っておくしかない。

ブログを公開する環境の問題

じゃあ、自分でブログサービス作ればいいじゃん、となるが、 ブログに対してそんな熱意はない。

ブログを書く本来の目的は、ブログを書いて知識をためることであって、 ブログ自体を作ることじゃないので、本末転倒はしたくない。

レンタルサーバに、WordPressやらMTやらを入れて、 最低限のカスタマイズをして運用する、という方法も、レンタルサーバ代がかかるし、 両方共Webツールなので、問題の解消にならない。

Bloggerなどは、記事の公開などのAPIが用意されているので、 ローカルで編集後にAPI経由で記事Uploadすることも可能だが、 プレビューするには、ツールにログインしてといった通常の手段を用いるしかなかった。

まとめ

以上の考察を踏まえると、 自分が必要とするのは、以下のようなブログサービス

  1. Webツールベースではなく、emacsなどで編集したファイルをuploadする形式であること
  2. HTMLで記事は書かない。wikiやrestructuredText形式など、 後からでもHTMLに変換可能な形式で書けること
  3. svnやgitを用いて記事やデザインをバージョン管理できること
  4. 本番反映前に事前にページを確認できる環境があること
  5. 無料であること(無料のサービス、またはそれらを組み合わせて環境構築できること)
  6. 環境を構築するための開発は必要最低限であること
Read and Post Comments

« Previous Page -- Next Page »


© 2011 tanarky