dreamedge.net

さくらのレンタルサーバのmephistoでコメントできない

2008-06-13T05:48:00+0000

普通にmephistoを設置すると,なぜか初回のコメント投稿を受け付けないという問題が生じます.

これははてなの質問にあるように,さくらのレンタル―バは勝手に拡張子を補完する癖があるみたいです.(なんで?) この機能が悪さをするため,.htaccess中に書かれたmod_rewriteの”RewriteCond %{REQUEST_FILENAME} !-f”の処理を通した際に不具合が生じてコメントができなくなる模様.

具体的には,/yyyy/mm/dd/permalink.htmlがあると,/yyyy/mm/dd/permalink/commentsにアクセスした際に,以上の仕組みが働きstatus 404が発生してPOST要求がGETにされてしまう.で,mephistoはコメント投稿はPOSTで受け付けるので,コメントが出来ないことに.

なので,commentsは-fを通さないように変更して回避する.以下のように,mod_rewrite関連の記述を変えて,コメント投稿時に拡張子の補完が働く前にdispatch.cgiに渡すように設定する.

RewriteBase /
RewriteRule ^$ index.html
RewriteCond %{REQUEST_URI} comments$
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
このエントリーをはてなブックマークに追加
Bookmark this on Delicious

さくらのレンタルサーバにmephistoをインストールする

2008-03-28T14:31:00+0000

オフィシャルのインストール方法はなぜか2か所に書かれています.ひとつめふたつめ 片方にだけ書かれている情報があったりして結構面倒でした.

以下,自分がやった時の手順.いろいろとバージョン依存な部分もあると思われるので,使用したバージョンそのままにコマンドは残しておきます.

1. 依存するgemのインストール

まず,rake0.7.3とrails1.2.6をイン―ストール.現時点のmephisto安定版である0.7.3はrake0.8系だとrake db:bootstrapした時にエラー吐いて落ちるので注意.結構ハマりました.これに関する記述はオフィシャルにはみつからなくて,googleグループのmephistoの所での記述を見て解決できた.これもまたハマりポイントです.

$ gem18 install rake --version "0.7.3"
$ gem18 install rails --version "1.2.6" --include-dependencies
$ gem18 install tzinfo

2. sqlite3-rubyのセットアップ

さくらはスタンダード以上だとMySQLを用意していますが,データベースを1つしか使えないのでDevelopmentやTestも使いたい場合はsqlite3を使う必要があります.ちなみにsqlite3のライブラリやヘッダファイルはインストールされているので必要ない.

$ gem18 install sqlite3-ruby

コンパイルした拡張ライブラリを,なぜかルート権限でインストールしようとして途中で止まる.コンパイル自体はできているので,手動でファイルを移動すれば動くことは動く.でもgemspecが出来ていないので,gemがsqlite3-rubyを認識してくれない.ので,適当な環境でできているのをコピーすること.riやrdocについては,諦めてます.

$ cp ~/lib/gems/gems/sqlite3-ruby-1.2.1/ext/sqlite3_api/sqlite3_api.so ~/lib/gems/gems/sqlite3-ruby-1.2.1/lib/
$ cp ~/sqlite3-ruby-1.2.1.gemspec ~/lib/gems/specifications/

3. mephistoの設定

必要なパッケージが入ったので,mephistoを設置する作業に入ります.
解凍して,まずはdatabaseの設定を行う.

$tar xvzf mephisto-0.7.3.tar.gz
$mv mephisto-0.7.3 mephisto
$ln -s /home/username/mephisto /home/username/www/symlink
$cd mephisto
$cp config/database.sample.yml config/database.yml
$nano config/database.yml

sqlite3を使う場合は,以下のようにdatabase.ymlを書けばよい.

development:
  adapter: sqlite3
  database: db/development.sqlite3
test:
  adapter: sqlite3
  database: db/test.sqlite3
production:
  adapter: sqlite3
  database: db/production.sqlite3

そしたら,dbのセットアップおよび,実行環境の整備.

$ rake db:bootstrap RAILS_ENV=production
$ chmod -R o+w log tmp db
$ nano conf/environment.rb
$ nano public/.htaccess
$ nano public/dispatch.cgi

4. CGI実行環境の設定

さくらのレンタルサーバでは,fastcgiとか使えないのでCGIで動作させることになる.その為のenvironment.rb, .htaccess, dispatch.cgiの修正点は以下の通り.

environment.rb

+RAILS_ROOT = "/home/tiplog/mephisto"
+$LOAD_PATH.push("/home/tiplog/lib/ruby/site_ruby/1.8")
+$LOAD_PATH.push("/home/tiplog/lib/ruby")
+$LOAD_PATH.push("/home/tiplog/lib")
+ENV['GEM_HOME'] ||= '/home/tiplog/lib/ruby/gem'

.htaccess

nano public/.htaccess
+#AddHandler fastcgi-script .fcgi
+#AddHandler cgi-script .cgi
+#Options +FollowSymLinks +ExecCGI
+RewriteBase /symlink

dispatch.cgi

nano public/dispatch.cgi
-#!/opt/local/bin/ruby
+#!/usr/local/bin/ruby
+require "/home/username/lib/gems/gems/rails-1.2.6/lib/dispatcher"

他の注意点として,さくらではCGIは755でないと動かないみたいなので要注意.また,設置がドメイン直下でないので,css内の画像ファイル表記等は修正しないと見られません.使用しているテーマごとに対応部分の修正が必要.

このエントリーをはてなブックマークに追加
Bookmark this on Delicious