Archive for the ‘DreamHost’ Category

DreamHostからの移転を検討

Saturday, July 19th, 2008

今日、このブログでも使っているDreamHostのサーバが落ちてたみたい。
最近、レスポンスが悪いなとか思っていたところだったので、別の海外レンタルサーバを探してみた。
なんとなく、よさそうなのは、Media Temple (gs)かな。$20/月はちょっと高いが、promo codeを使えば、15%OFFで$14.17/月になるらしい。
おもしろいのは、管理用のiPhoneアプリがあるとこ。
iPhoneでドメインやメールアドレスを追加したりできるらしい(あまり意味はないけど、何となくかっこいいかも)。
他には、Host Monster$4.95/月やBlue Host$6.95/月が候補。
それとも、国内のサーバを借りた方がよいのでしょうか?でも、高いからな。

Twitter Balloonの修正

Tuesday, April 22nd, 2008

3月9日にTwitterがcrossdomain.xmlを変更してFlashからのメッセージ取得を禁止しちゃったので、3月10日からサーバ側でTwitter APIを使ってメッセージを取得するようにしました(このあたりの話はこちらを参照)。
しかし、1日に10万回位Twitter Balloonからのアクセスがあるのでサーバへの負荷が高く、このままだと制限をかけるというお達しがサーバを借りているDreamHostから来てしまいました。
何とか負荷を下げないとならなくなったので、Twitterのメッセージをキャッシュするようにしました。そのため、Twitterのメッセージを更新してからTwitter Balloonに反映されるまでに最大1時間くらいかかることがあります。どうしてもすぐに反映させたい場合は、自分のTwitter Balloonを表示させてReloadボタン(真ん中のボタン)をクリックして下さい。
技術的な話をすると、CGIでキャッシュを読み込む方式ではCGIの起動回数は変わらないので、404 Error proxy cache方式(勝手に命名)にしました。
例えば、Twitter Balloonがkorelabのメッセージを取得する場合、Twitter Balloonがkorelab.xmlを取得しようとします。でもkorelab.xmlなんていうファイルは存在しない。
そうすると404 Not Foundエラーが発生します。
404 Not Foundエラーが発生した場合に、通常エラーページが表示されるのですが、このエラーページは自分で作った独自のエラーページにすることができます。そして、この独自のエラーページの替わりにCGIを起動することもできるので、ここでCGIを起動します。
CGIでは元の要求を環境変数REQUEST_URIを通して知ることができるので、元の要求であるkorelab.xmlからID korelabを取り出し、Twitter APIでメッセージXMLを取得してそのまま応答します。
このときに応答したメッセージXMLをkorelab.xmlとしてファイルに保存します。
すると次からTwitter Balloonがkorelabのメッセージを取得する際には、korelab.xmlファイルが存在するのでCGIを起動することなく静的なXMLファイルとしてメッセージを取得できるという訳です。
キャッシュファイルはcronで1時間おきに削除していますので、メッセージを更新してから約1時間以内には最新のメッセージが表示されます。

Drupal6

Friday, March 7th, 2008

オープンソースのCMSをいろいろと探していたところ、DrupalがよさそうではないかとDrupal6をインストールしてみました。
DrupalPacktという出版社が主催しているOpen Source CMS Awardの2007年総合1位に輝いたCMS。
Drupalは、総合部門とPHP部門とSocial Networking CMS部門の3つの部門のファイナリストとなって、1位、2位、2位の成績。
2つの部門で1位になることはできないルールなので、ほぼ完璧でしょう。

各部門のファイナリストと結果は、以下の通りです。
2007 Open Source CMS Award
Overall(総合):
1 Drupal
2 Joomla!
3 CMS Made Simple
* e107
* PHP-Fusion

Most Promising(リリースされて2年以内):
1 MODx
2 dotCMS
2 TYPOLight
* Nuke Evolution
* SilverStripe

Best PHP Open Source CMS:
1 Joomla!
2 Drupal
3 e107
* CMS Made Simple
* PHP-Fusion

Best Other Open Source CMS(PHP以外):
1 mojoPortal(C#)
2 Plone(Python)
3 Silva(Python)
* OpenEdit(Java)
* OpenCms(Java)

Best Open Source Social Networking CMS:
1 WordPress
2 Drupal
2 Elgg
* LifeType
* Moodle

Drupalのインストールに関するDreamHost固有の情報はこちらに詳しい。でもDrupal6向けでないのでちょっと違うところがある。
Drupal6.0をインストールして、しばらくするとすぐにセキュリティ上の問題があるとかでDrupal6.1にアップデートするはめに。アップデートの手順を見るとバックアップして、インストールし直しという感じ。
いろいろといじる前でよかったとも言えるけど、今後のアップデートがやや不安。

DreamHostでXOOPSその後

Saturday, December 1st, 2007

XOOPS Cube Legacy 2.1.2で使うMySQLの文字コード照合順序は、eucjpms_japanese_ciではなく、ujis_japanese_ciが正しいみたい。各テーブルはeucjpmsで作られてしまっているから、ujisに変える必要がある。それでいろいろと調べて以下のようにしてみた。

% mysqldump -u user名 -p -h host名 --default-character-set=binary \
DB名 > dump.sql
% sed 's/DEFAULT CHARSET=eucjpms/DEFAULT CHARSET=ujis/g' \
dump.sql > dump_ujis.sql
% mysql -u user名 -p -h host名 < dump_ujis.sql

これでOKかな?

XOOPS 2.0.16a JPの方は文字化け自体解決していなかった。文字化けというか、DB内の日本語の値が全く入っていなかったりする。

XOOPS 2.0.16a JPはPHP5にも対応しているとのことだが、確実に動く方ということでPHP4に変更した。DreamHostでは、そのドメインでPHP4を使うかPHP5を使うかを選択できる。

MySQL5だと以下の対応が必要のようだ。
class/database/mysqldatabase.phpの connectメソッドの最後の箇所、trueを返却する前に以下の1行を追加する。

mysql_query("SET NAMES ujis", $this->conn);

これで文字化けしなくなった。

DreamHostでXOOPS

Thursday, November 29th, 2007

今度はXOOPSをインストールしてみた。

XOOPS Cube Legacy 2.1.2とXOOPS 2.0.16a JPとどっちがよいのかよくわからんので、どっちも入れてみた。

そのまま入れるとどっちも文字化け。

MySQL の文字セットはUTF-8で、変えられそうもない。
問題は、MySQLの文字コード照合順序(Collation) 。

XOOPS Cube Legacy 2.1.2はeucjpms_japanese_ciにすれば解決したのだけど、 XOOPS 2.0.16a JPはeucjpms_japanese_ciでは駄目でujis_japanese_ciにしたら解決した。

※この情報は間違っています。その後の情報を参照して下さい。

あまり調べないで適当にやったので、これで本当によいのかどうかは怪しいけど、今のところちゃんと日本語で表示できてます。

XOOPS Cube Legacy 2.1.2とXOOPS 2.0.16a JPの文字コードの扱いがどう違うのか。eucjpms_japanese_ciとujis_japanese_ciがどう違うのか。

誰か詳しい人教えて。