USB Ubuntu 9.40でつくるWordPressサーバ

USB Ubuntu 9.40でつくるWordPressサーバ

徒労日記のサーバは現在引越しを検討中。
そこで手元で遊んでいるIONのMini-ITXマザーを、Webサーバとして使った場合どのくらい使えるのかテストしてみようと。
[warning]この手順はテスト環境を作成するためのモノであり、外部公開に対策されたセキュアなWebサーバを構築する手順は含みません
[/warning]

1.OSを入れる

適当に手元にあったUbuntu 9.40を使ってみます。UbuntuだとUSBにインストールするのも簡単だからというだけで。DVDから起動したのち、8GBの安物USBメモリにインストール。GRUBを/dev/sdaに書くのを忘れずに。

2.パッケージのインストール

WordPressの必要条件を満たすパッケージをインストール

# sudo apt-get upgrade      /* 最初にパッケージリストのアップデート */
# sudo apt-get install apache2       /* TeraTermからSSHでつなぐ用 */
# sudo apt-get install mysql-server
# sudo apt-get install php5 php5-mysql php5-gd

3.DBの作成

MySQLにWordPress用のデータベースを作成。phpMyAdmin入れる前に手で入力した方が速い。

# mysql -u root -p
mysql>create database wp_db character set utf8;
mysql>grant all on wp_db.* to 'wp_db_user'@'localhost' identified by 'password';
mysql>flush privileges;

今使っているWordPressがある場合は”WordPress Database Backup”を使ってDBを.SQLファイルにバックアップしておく。テキストエディタ等で.SQLファイル内の自サイトURLを新URLに置換しておき、

# msql -u root wp_db < wp_wp_yyyymmdd_xxx.sql

とすることで引っ越せる。
最後にWordpressのwp-config.phpファイルに上記のDataBaseName,ID,Passowrdを記述。

4.php.iniの設定変更

設定も終わったのでhttp://xxx.xxx.xxx.xxx/wp/wp-admin/ を開いてみる。すると

お使いのサーバーの PHP では MySQL 拡張を利用できないようです。

と出る。調べてみると

/etc/php5/apache2/php.ini にて extension=mysql.so をコメントアウトする必要があるそう。

5.これで完成

これから新規でサイトを作る場合、これで問題なく表示されるでしょう。

さて自分の場合は・・・・

謎の文字化け。
MySQLで各テーブルの中身を確認しましたが、そこでは化けてない。新規でBlogを作ると日本語は全く問題ないので、移行の問題な気がする。mbstringはphpinfo()で見たら入ってるし。うーむ。

追記 2010/04/26

データベースの文字コードの以前に、MySQLが扱う文字コードを指定する必要があるらしい。
これをしないといくら入れ物がutf8でも、別の言語で書き込まれてしまうという訳か。

確認。

mysql>status;
--------------
mysql  Ver 14.14 Distrib 5.1.37, for debian-linux-gnu (i486) using  EditLine wrapper

中略
Client characterset:    latin1
Server characterset:    latin1

となっているのはダメ。
/etc/mysql/my.cnfに

[client]
default-character-set=utf8

[mysqld]
default-character-set=utf8
skip-character-set-client-handshake

を追記し、MySQLをリスタート

再度確認して

Connection:             Localhost via UNIX socket
Client characterset:    utf8
Server characterset:    utf8

となればOK

今度こそ大丈夫!と思ってDumpファイルをDBに入れようとしたらインポートエラーが出た。どうやらちゃんと解釈し始めた代わりに、Dumpファイル中の問題を見つけてしまった模様。これは苦労しそう。