2007/03/28(水)15:43
Dreamhostで文字化けに悩まされる
いろいろなサイトをxrea.comにおいているが、はてなで噂のdreamhost.com
と契約した。そして、xrea.comにおいてあるコンテンツをdreamhostへ移動
していた。
xrea.com は年間2,400円と安いのでそのまま使い続けてもいいのだが、すん
なり動かないことがあるのでいろいろと苦労している。
dreamhostの方がいろいろ苦労しなくてすむのかなと思っていた。
<openpneの移転>
(細かな設定はここを参考にしてほしい。http:
//www.openpne.jp/wiki/OpenPNESetup )
1. dreamhostにドメインを登録
2. dreamhostにopenpneをインストール
/public_html と /openpne の2つの場所にアップロードする。
前者はWebからアクセスできる場所。実際のプログラムは Webからアクセスできない /openpne に設置する。 /openpne/var から下位のディレクトリは、777の書き込み可能なディレクトリにする。(2007/3/28 加筆)
3. dreamhostでmysqlのデータベースを登録
4. openpneのconfig.inc.phpとconfig.phpをdreamhost用に直してアップする。
5. xreaにあるphpmyadminを使って、テーブルを全てエキスポートする。
文字化けを防ぐためphpmyadminは英語で表示にしておく(←念のためで必要
ないかも)エキスポートするときは、画面上に出すよりもgzipのファイルで
落とす方がいいみたい。
6. dreamhostのphpmyadminで、新しく作ったデータベースを選んで、そこで
gzipをインポートする。
openpneは文字化けもなくすんなり動いている。
7. dreamhostでcronの登録。sshで入って、crontab -e で簡単に編集できた。
8. ドメインの管理。sns.solisart.com がxreaではなくて、dreamhostへ飛
ぶように設定する。(設定はドメイン管理をするところによって違うと思
う.。ここのドメイン管理はxreaと同じ運営のvalue-domain.comだ)
ns sns ns1.dreamhost.com.
ns sns ns2.dreamhost.com.
しばらくすると、ドメインが移動する。
ただ移行前にテストをするため当初、sns2.solisart.com という形で上記の
動作確認をしていた。よしこれで問題と思い、sns, sns2のdreamhost側と
value-domain側の登録をし直すが、すんなりいかない。nslookupですぐに取
れないのだ。1時間ぐらいほっといたら、つながっていた。
9. dreamhostはphpもモジュールとしては起動せず、cgi, fastcgiとして起
動する。ある人のブログで書いてあったが、モジュール動作のときは誰が負
荷をかけているかわからないのであえてcgi, fastcgiで動かしているそうで
す。fastcgiのために以下の2つのファイルを置く。webからアクセスしてみ
て ps auxとプロセスを確認すると、/dh/cgi-system/php5.cgiが3つ起動し
ていたから大丈夫かな。
.htaccess
AddHandler fastcgi-script fcg fcgi fpl
AddHandler php5-fastcgi .php
Action php5-fastcgi /php5-wrapper.fcgi
php5-wrapper.fcgi
#!/bin/sh
export PHP_FCGI_CHILDREN=3
exec /dh/cgi-system/php5.cgi
#ただxreaより心もち遅いのは、ロスアンジェルスのサーバーで回線が遠い
のか、それともホスティングサービスとしてたくさんのサイトが一つで動い
ているせいなのかわからない。私のサイトだったら遅くてもいいんだけれ
ど、ビジネスで本格活用するんだったらまだ考慮しなくてはいけないかもし
れないなぁ。(でも費用の高いちょっと上のプランだったら、もっとましな
気がします>お客さんごめんね。様子見です)
・dreamhostのphpmyadminについて
コントロールパネルでデータベースを定義すると、簡単にデータベースを作
ることができる。その後phpmyadminもインストールせず使用可能。
だけどsolisart.comまるごと移転したわけでないので、最初はphpmyadminが
使えなかった。理由はphpmyadminにアクセスするURLである。
http://solisart.com/dh_phpmyadmin/mysql.solisart.com/index.php
↑ここにアクセスしたら古いサイトへ飛んでしまいアクセスできないじゃな
い。dreamhost側のIPアドレスを調べて、以下のように直アクセスでアクセ
スするとうまくいきました。
http://(IPアドレス)/dh_phpmyadmin/mysql.solisart.com/index.php
<MODxの移転>
実は文字化けの問題は解消していません。ググってみたけれどわかりませ
ん。移行はOpenpneと同じ感じです。
1. dreamhostにドメインを登録
2. dreamhostにmodxをインストール
3. dreamhostでmysqlのデータベースを登録
4. phpmyadmin で新しくつくったデータベースを開く。データベースの照合
順序を'utf8-general-ci'に設定する(「操作」メニューで「照合順序」を
選ぶ)。こうすることでテーブルの基本言語がutf8になる
5. /install/ でセットアップ
6. xreaにあるphpmyadminを使って、テーブルを全てエキスポートする。
文字化けを防ぐためphpmyadminは英語で表示にしておく(←念のためで必要
ないかも)エキスポートするときは、画面上に出すよりもgzipのファイルで
落とす方がいいみたい。
7. dreamhostのphpmyadminで、gzipをインポートする。
phpmyadmin でテーブルの内容をみると文字化けは無い。UTF-8ですんなり
入っているようだ。
8. xreaにあったassetsディレクトリをダウンロードして、dreamhostへ上書
きでアップする。
ただしMODxのマネージャー、画面表示とも文字化け。
<対応>
原因を探るべく、まったく別にMODxでサイトを新規作成する。
そして日本語を入れてみると入力・表示とも問題ない。ただし、phpmyadmin
では文字化けを起こしている。文字コードを'utf8-general-ci'から'utf8-
bin'に変えて再インストールしてみる。これでもだめだった。
Dreamhostの環境はPHP5.2.1とMySQL 5.0.24aだ。
これも調べてみると、MySQL 5の場合は、データベースの文字コードとクラ
イアントの文字コードが異なると、MySQLが勝手にコード変換するそうだ。
それが問題となっているような気がする。
対処方法としては、my.iniを書き換えるか、PHPでテーブルに書き込むとき
言語を指定する方法がある。
my.ini
[client]
default-character-set = utf8
[mysqld]
skip-character-set-client-handshake
default-character-set = utf8
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8
PHPの場合
mysql_query("SET NAMES utf8;");
まだ格闘中です。(^^;;
.htaccessの設定は必要ありませんでした。
【追記】
MODx 0.9.5ですが、MySQL 5でも同じく
phpのソースコード2ヶ所を修正すればよかっただけでした。
http://nanabit.net/modx/install-modx-0.9.2.1.html
他には文字化けの問題はありません。
でも、dreamhostちょっと遅いかな。cgiの方がfcgiより早く感じる。