«前の日記(2010-09-20 (月)) 最新 次の日記(2010-09-22 (水))» 編集
にっき
Google
2003|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|10|12|
2015|01|12|
2016|01|12|
2017|01|

2010-09-21 (火) [長年日記]

_ Debian + Passenger + Rack + tDiary

Debian lenny上で、Passengerを使ってtDiaryを動かしてみるテスト。tDiaryは3.0.1を使う。

以下、DocumentRootは /var/www、tDiaryは /home/tdiary にインストールされているものとする。

PassengerとRackのインストール

ここはDebianらしくaptでインストールする。

まず、apt-lineに以下を追加。

deb http://www.backports.org/debian lenny-backports main contrib non-free

次にapt-getでインストール。

# apt-get update
# apt-get -t lenny-backports install librack-ruby
# apt-get -t lenny-backports install libapache2-mod-passenger

tDiaryをRackで動かす

http://github.com/hsbt/tdiary/tree/master/core/ から、以下のファイルをコピー。

  • config.ru
  • tdiary_app.rb
  • tdiary/dispatcher.rb
  • tdiary/response_helper.rb

これらのファイルは /home/tdiary 以下に配置する。

次に、tdiary_app.rbに以下のパッチを適用する。

--- tdiary_app.rb.orig  2010-09-21 03:28:03.000000000 +0900
+++ tdiary_app.rb       2010-09-21 02:06:44.000000000 +0900
@@ -13,6 +13,14 @@

        alias :env_table_orig :env_table
        alias :env_table :env_table_rack
+
+       module QueryExtension
+               def script_name
+                       r = env_table['SCRIPT_NAME'] + env_table['PATH_INFO']
+                       r << 'index.rb' if r[-1] == ?/
+                       r
+               end
+       end
 end

 module Rack

この時点で、rackup config.ru でそれなりに動くはず。

Passengerの設定

以下のディレクトリを作成。

$ mkdir /home/tdiary/public
$ mkdir /home/tdiary/tmp

静的ファイルはpublicにリンクを張る。

$ cd /home/tdiary/public
$ ln -s ../index.rdf .
$ ln -s ../no_comments.rdf .
$ ln -s ../sitemap.xml .
……等々、必要なだけ作成する。

次に /etc/apache2/sites-available/hoge に以下の設定を追加。

PassengerUserSwitching off     # お好みで
PassengerDefaultUser www-data  # お好みで
RackBaseURI /diary

最後にPaasenger用のリンクを作成。

$ ln -s /home/tdiary/public /var/www/diary

Passengerを動かしてみる

# /etc/init.d/apache2 restart

で、http://hoge.example.com/diary/ にアクセスすれば日記が表示されるはず。この日記も9/21現在Passengerで動いている。

まだ時々エラーで落ちることがあるけど、追いきれないので今日はここまで。

既知の問題としては以下のような感じ。

  • /diary/aaa などの存在しないファイルへのリクエストでも日記が表示される。
  • /diary → /diary/ のリダイレクトが行われない。
  • google_sitemaps.rbなどのENVを直接参照しているプラグインが動かない。

オマケ:.htpasswd対応

このままでもBasic認証には対応しているが、config.ruに平文パスワードを書かなければならないので、.htpasswdに対応させる。

--- config.ru.orig      2010-09-21 03:28:28.000000000 +0900
+++ config.ru   2010-09-21 02:21:52.000000000 +0900
@@ -1,3 +1,4 @@
+require 'webrick'
 require 'tdiary_app'

 use Rack::ShowExceptions
@@ -17,8 +18,10 @@
 end

 map "/update.rb" do
+       htpd = WEBrick::HTTPAuth::Htpasswd.new( '.htpasswd' )
        use Rack::Auth::Basic do |user, pass|
-               user == 'user' && pass == 'pass'
+               hp = htpd.get_passwd(nil, user, false)
+               hp == pass.crypt( hp[0,2] ) if hp
        end

        run Rack::TDiaryApp.new(:update)

_ NTTドコモ、バッファロー製モバイルWi-Fiルーター「BF-01B」を25日発売

モバイルルータはわりとどうでもいいのだが、公衆無線LAN1年間無料が地味に嬉しい。でも自分が対象なのかがわからない。

本日のツッコミ(全2件) [ツッコミを入れる]
_ しばた (2010-09-21 (火) 13:25)

現在は http://github.com/tdiary/tdiary-core/tree/testable で作業しているので、そちらで試して頂ければと思います。<br><br>あと、近々 master に取り込むつもりですので、動作させておかしい部分は報告か、github にアカウントがあるならば contributor に追加しますのでよろしくお願いします。

_ えろぺお (2010-09-21 (火) 18:52)

なるほど。さっそくtestableで試してみたいと思います!


«前の日記(2010-09-20 (月)) 最新 次の日記(2010-09-22 (水))» 編集