と、言うわけでオープンソース版のfastladderのインストール。
まだうまく行っていないんだけど、書いておけば誰か教えてくれるかも知れないので。
INSTALL.txtだと、ここでcrawlerも起動しろと書いてあるけど、crawlerは使わないでPlaggerのStore::Fastladderを使う予定なので無視。
本格運用のためには、mongrelの3000直アクセスではなく、apacheのhttps経由にしたい。
apache2系であれば、mod_proxyを使ってmongrelにリクエストが飛ばせるようだ。
しかし、ここで問題が発生。
2番目の問題については、apacheの設定に
しかし、1番目の問題の対応がわからない。調べてみたところ、mongrelの起動時に --prefix をつけると、変えられるらしいことがわかったが、fastladder/script/server は --prefixを解釈してくれない。
ただし、script/serverを実行すると、中ではmongrelを起動しているだけのようなので、直接
んだけど、fastladder がこいつをちゃんと認識してくれない。
と言う所ではまってしまって進みません。railsが全然わからないので、自分でいくつかサンプルでも作ってみないと駄目かな。
ちなみに、/fastladderとかつけなければ動くので、今までのwebサーバと喧嘩しないように、新しいホスト名をdnsでつけてあげて、virtualhostを作ればうまく動きます。
この場合、一つのIPで二つのSSL証明書が使えないので、fastladderの方は「証明書とホスト名が合わないんだけど」的なエラーがブラウザに出ます。
どうせオレオレ証明書だし、気にしなければ良いのですが、やはり気持ち悪い。
まだうまく行っていないんだけど、書いておけば誰か教えてくれるかも知れないので。
- portsから、databases/mysql50-server をインストール。(既に入っていた。今は5.1もあるらしい)
※ 既に入っていたので設定系は割愛。 - portsから、lang/ruby18, devel/ruby-gems, databases/ruby-mysqlをインストール。(既に入っていた)
- portsから、graphics/freeimageをインストール。ただし、現時点のものでは正しくライブラリが入らないので、ここを参考にライブラリを入れなおす。
- fastladderのソースを持ってくる
% svn co http://fastladder.googlecode.com/svn/trunk/fastladder
※ 以降は、fastladder/INSTALL.txtに従ってやるんだけど、DBをSqlite3じゃなくてmysqlを使う場合は手順が微妙に違う。 - まずは、gem関係をインストール。(portsから入れると、railsのバージョンが古いので、INSTALL.txt通りに手でやる必要がある。また、gemsのバージョンが古いとrails2.0.2が入らなかったので、portupgrade ruby18-gemsしておく)
# gem install rails --version 2.0.2 -y # gem install rfeedfinder # gem install feed-normalizer # gem install opml # gem install mongrel
mysqlを使うのでsqlite3-rubyは必要ない。 - config/database.yml を修正
# cp config/database.yml.mysql config/database.yml # vi config/database.yml
production: の所を適宜修正production: adapter: mysql encoding: utf8 database: fastladder_production username: root password: mysqlのrootのパスワード socket: /tmp/mysql.sock ←FreeBSDのportsからmysqlを入れるとここ
- databaseを作る
# mysqladmin -p create fastladder_production # RAILS_ENV=production rake db:migrate ←cshだとこの書き方できない
# script/server -d -e productionでサーバが起動するので、http://localhost:3000/ とかでアクセスできる。初回はアカウントの作成画面なので、作っておく。
INSTALL.txtだと、ここでcrawlerも起動しろと書いてあるけど、crawlerは使わないでPlaggerのStore::Fastladderを使う予定なので無視。
本格運用のためには、mongrelの3000直アクセスではなく、apacheのhttps経由にしたい。
apache2系であれば、mod_proxyを使ってmongrelにリクエストが飛ばせるようだ。
しかし、ここで問題が発生。
- mongrel上のrailsアプリは、/ で動くことを期待している。
- mongrel上のrailsアプリは、http:// で動くことを期待している。
2番目の問題については、apacheの設定に
RequestHeader set X_FORWARDED_PROTO 'https'を入れることで対応できることがわかった。
しかし、1番目の問題の対応がわからない。調べてみたところ、mongrelの起動時に --prefix をつけると、変えられるらしいことがわかったが、fastladder/script/server は --prefixを解釈してくれない。
ただし、script/serverを実行すると、中ではmongrelを起動しているだけのようなので、直接
/usr/local/bin/ruby18 /usr/local/bin/mongrel_rails start -p 3000 -a 127.0.0.1 -e production -P /var/www/fastladder/tmp/pids/mongrel.pid -d --prefix /fastladderのように起動してやると、--prefixがつけられた。 apacheの設定ファイルのsslの部分に、以下を追加。
ProxyRequests off <Location /fastladder> SSLVerifyClient require ←httpsのクライアント認証を要求 ProxyPass http://127.0.0.1:3000/fastladder ProxyPassReverse http://127.0.0.1:3000/fastladder RequestHeader set X_FORWARDED_PROTO 'https' </Location>これで、https://・・・/fastladder がmongrelに行くようになる。
んだけど、fastladder がこいつをちゃんと認識してくれない。
- ブラウザから、https://・・・/fastladder にアクセス。
- railsがリクエストを受け取り、reader コントローラの welcome アクションを実行。
- https://・・・/login にリダイレクト(https://・・・/fastladder/login を期待している)。
- そんなページはないのでブラウザに404。
と言う所ではまってしまって進みません。railsが全然わからないので、自分でいくつかサンプルでも作ってみないと駄目かな。
ちなみに、/fastladderとかつけなければ動くので、今までのwebサーバと喧嘩しないように、新しいホスト名をdnsでつけてあげて、virtualhostを作ればうまく動きます。
この場合、一つのIPで二つのSSL証明書が使えないので、fastladderの方は「証明書とホスト名が合わないんだけど」的なエラーがブラウザに出ます。
どうせオレオレ証明書だし、気にしなければ良いのですが、やはり気持ち悪い。
追記
どうも、fastladderのソースを読んだ感じではmod_proxyでは行けそうにない。
mod_proxy_htmlを使うと行けそうな感じだけど、試してみるのも面倒だなあ。
一応、portsから入れるならwww/mod_proxy_html にあるようだ。
カテゴリ
FreeBSDトラックバック(0)
このブログ記事を参照しているブログ一覧: fastladderインストール(1)
このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/1419
ports/graphics/freeimage
のパッチを書きました。ついでにバージョン上げてます。
動作確認していただけませんか。
問題なければcommitします。
http://www.don.to/tmp/freeimage.patch
パッチをあてて、portupgrade freeimage をしてみました。
今の所fastladder自身があまりうまく動いていないので、freeimage自体の動作確認はできていないのですが、/usr/local/lib/libfreeimage.*を見る限りでは正しく入っているようです。
ありがとうございました。
レポートありがとうございます。
commitしました。