Archive for the ‘DreamHost’ Category

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がどう違うのか。

誰か詳しい人教えて。

DreamHostでJoomla!

Sunday, November 4th, 2007

Joomla!(ジュームラ)というCMSが気になる。

なんでも、”Best PHP Open Source Content Management System” for 2007のwinnerだとか。

他のCMSでは、XOOPSGeeklogRubricksMODxDrupalなどもよさそう。機能などをきちんと比較した訳ではないが、見た目でJoomla!が一番気にいった。

DreamHostではJoomla!はOne-Click Installsの中に含まれているので、とっても簡単にインストールできる。

下準備は、サブドメインを作っておくだけ。後はOne-Click Installsの指示通りに操作すればMySQLの設定もやってくれるので、ほとんど悩むことなく完了する。

ただこれだと日本語が使えない。ここから日本語を使えるようにするのに苦労した。

日本語を使えるようにする方法のメモ。

Joomla!をインストールする前にMySQLのDEFAULT CHARACTER SETをutf8_general_ci にしておく。
DreamHostでは、MySQLのホストにhttpでアクセスすると、phpMyAdminが使える。

この状態でインストールを完了させる。

Joomla! じゃぱんのサイトからDreamHostのJoomla!と同じバージョンのフルパッケージをダウンロードしてくる。

ちょうど同じバージョン1.0.13があった。joomla_1_0_13JP_Stable.zip

Joomla!がインストールされたところにJoomla! じゃぱん版のフルパッケージを上書きする。

installationディレクトリは削除する。

以下のテーブルの内容が日本語化されているので、 一旦データを削除する。

jos_components、 jos_mambots、jos_modules(jos_の部分はインストール時に指定)。

installation/sql/joomla41.sqlの日本語化されたINSERT文を実行する(テーブル名は変える)。

Joomla!がインストールされたところに.htaccessファイルを作成。以下を記述。

AddHandler php-cgi .php
Action php-cgi /cgi-bin/php.cgi

cgi-binディレクトリを作成。

$ mkdir cgi-bin
$ cd cgi-bin
$ cp /dh/cgi-system/php.cgi .
$ cp /etc/php/cgi/php.ini .
$ chmod 700 php.cgi

php.iniに以下を追加。

default_charset = “UTF-8″
mbstring.language = “neutral”
mbstring.internal_encoding = “UTF-8″
mbstring.encoding_translation = Off
mbstring.http_input = “auto”
mbstring.http_output = “pass”
display_errors = On
register_globals = Off
magic_quotes_gpc = On
magic_quotes_runtime = Off
file_uploads = On
magic_quotes_sybase = On

(参考)Dreamhost で php.ini を設定する方法

できたのが、これです。サンプルデータしか入ってません。

最初からJoomla! じゃぱん版をインストールすれば、こんなややこしいことをする必要はなかったのかも。

その他、Joomla!関連リンク。

Joomla! アドオン実験室

Joomla!の道しるべ

Joomlaジュームラと言う名のCMS

ホームページはオープンソースJoomla CMSで