| Home | 次のページ »    [Database ]

2011.08.02

Word PressのインストールとMySQL

ブログの作成にはMovabletypeを用いているが、ブログ作成ツールとして米国などでは、Word Pressが圧倒的に大きなシェアを占めている。
直ちにWord Pressに移行しようとは思っていないが、インストールして様子を見てみることにした。
Word Pressは、phpで書かれており、MySQL上のデーターベースを用いて、ダイナミックにページを送出するようになっている。すなわち、phpとMySQLが必須なのである。かつ、日本語使用では文字コードはutf-8を使うことを前提で作られている。EUCで動かそうなどとは、考えない方が良さそうだ。

1. インストール

(1) Word Pressの日本語のページより、最新版のwordpress-3.2.1-ja.zipをダウンロドして解凍し、フォールダーごとWeb発信ディレクトリーに入れる。
(2) フォルダー名をwordpressとすると、下記のようにwordpressフォルダー内のwp-config-sample.phpをwp-config.phpに名前を変え、内容を修正する。

# cd wordpress
# cp wp-config-sample.php wp-config.php
# vi wp-config.php
define('DB_NAME', 'wpdb');  ← DB名を入れる。
define('DB_USER', 'wpuser'); ← DBのユーザー名を入れる。
define('DB_PASSWORD', '******'); ← DBアクセスのパスワードを入れる。
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');

2. データーベースの作成

MovabletypeではEUCコードで運用しているため、MySQLの文字コードは下記のようにujis(EUC)になっている。

mysql> SHOW VARIABLES LIKE 'character_set_%';
+----------------------------------+--------+
| Variable_name                 | Value   |
+----------------------------------+--------+
| character_set_client          | ujis       |
| character_set_connection          | ujis       |
| character_set_database      | ujis       |
| character_set_filesystem            | binary  |
| character_set_results        | ujis       |
| character_set_server         | ujis      |
| character_set_system          | utf8     |
+----------------------------------+--------+

しかし、Word Pressでは、utf8とする必要があるので、下記のように文字コードを指定して、データーベーを作成する。

# mysql -u root -p
Enter password: パスワード
mysql> create database wpdb CHARACTER SET utf8;;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on wpdb.* to wpuser@localhost identified by 'パスワード';
Query OK, 0 rows affected (0.13 sec)
mysql> flush privileges;
mysql> exit;
Bye

これで、念のために文字コードを表示してみる。

$ mysql -u root -p
Enter password:
mysql> use wpdb;
Database changed
mysql> SHOW VARIABLES LIKE 'character_set_%';
+----------------------------+--------+
| Variable_name                   | Value  |
+----------------------------+--------+
| character_set_client          | ujis      |
| character_set_connection | ujis      |
| character_set_database    | utf8     |  ← ここがutf8になっていればOK
| character_set_filesystem   | binary  |
| character_set_results        | ujis       |
| character_set_server        | ujis       |
| character_set_system       | utf8      |
+----------------------------+--------+
7 rows in set (0.00 sec)

3. PHPに対する処置

MySQLのデーターベースの文字コードをutf8にして、Word Pressを起動すると問題なく動作するかに見えたが、記事を投稿しても記事内容が保存されない事象が発生した。
PHPもutf8で処理できるようにする必要がある。そこで、wordpressフォールダー内に.htaccessを作り下記の内容を入れたら、問題なく動作するようになった。やれやれ。

# vi .htaccess
DirectoryIndex index.html index.cgi index.php index.shtml
php_flag mbstring.encoding_translation off
php_value default_charset "UTF-8"

2010.12.16

mysqlデーターのバックアップとリストア

(1) 特定のデーターベースのバックアップ

文字化けを避けるため、binaryでダンプする。
データーベースのユーザー名をdbuser、データーベース名をabcdbとすると、

# mysqdump --default-character-set=binary -u dbuser -pXXXXX  abcdb > dbbackup.txt

なお、XXXXXのパスワードは-pにスペースを空けずに続ける。

(2) 保存されたデータのリストア

# mysql -u dbuser -pXXXXX abcdb < ./dbbackup.txt

(3) 全データーベースのバックアップ

# mysqldump --default-character-set=binary -u root -pXXXXX --all-databases > alldb.txt

(4) 全データーベスのリストア

# mysql -u root -pXXXXX < ./alldb.txt

2010.12.13

MySQL 5.5 におけるrootパスワード再設定

以前にも書いたが、mysql 5.5になったので、rootのパスワードを忘れた場合を改めてかいておく。

# cd /usr/local/etc/rc.d
# ./mysql-server stop
mysqld_safe --skip-grant-tables &
# mysql -u root mysql
mysql > UPDATE user SET Password=PASSWORD('mynewpassword')
      -> WHERE User='root';
mysql > flush privileges;
mysql > exit;

これで、正規にmysqlにloginでき、各種コマンドが使えるようになる。

2010.10.17

MySQL バージョン5.5.6

*** 2010/12/16に内容一部修正しました ***
家のサーバーはFreeBSD-7.0で運用しているが、そろそろ最新のFreeBSD-8.1に上げようと準備中です。
OSのインストール後にMySQLをportsで入れて、文字コードの設定で引っかかった。
(1) インストール

# cd /usr/ports/databases/mysql55-server
# make WITH_CHARSET=ujis WITH_XCHARSET=all install clean
# cd ../mysql55-client
# make WITH_CHARSET=ujis WITH_XCHARSET=all install clean

(2) my.cnfの編集

# cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf
# cd /etc
# chmod +w my.cnf
# vi my.cnf
[mysqld]
datadir = /usr/db/mysql
port            = 3306
socket          = /tmp/mysql.sock
skip-locking
key_buffer = 16M

(3) DBをインストール

# mkdir /usr/db
# mysql_install_db --basedir=/usr/local --datadir=/usr/db/mysql
# chown -R mysql /usr/db/mysql

(4) 起動

次にmysqlの起動ファイルを修正します。

# cd /usr/local/etc/rc.d
# chmod +w mysql-server
# vi mysql-server

下記の赤字部分を修正する。
mysql_dbdirの記述を有効にして/usr/db/mysqlを指定し、
–defaults-extra-file=/etc/my.cnf として、/etc/my.cnfを明に指定する。

: ${mysql_enable="NO"}
: ${mysql_limits="NO"}
${mysql_dbdir="/usr/db/mysql"}
: ${mysql_args=""}
mysql_user="mysql"
mysql_limits_args="-e -U ${mysql_user}"
pidfile="${mysql_dbdir}/`/bin/hostname`.pid"
command="/usr/sbin/daemon"
command_args="-c -f /usr/local/bin/mysqld_safe --defaults-extra-file=/etc/my.cnf --user=${mysql_user} --datadir=${mysql_dbdir} --pid-file=${pidfile} ${mysql_args}"

これで、ようやくMySQLを起動できる。

# ./mysql-server start

(5) パスワード設定

# mysql -u root
mysql > use mysql;
mysql > set password for root@localhost=password('xxxxx');
mysql> flush privileges;
mysql > exit;

(6) 文字コード調べ

# mysql -u root -p
Password xxxxxxx
mysql > SHOW VARIABLES LIKE 'character_set_%';
+-----------------------------------+--------+
| Variable_name                             | Value   |
+-----------------------------------+--------+
| character_set_client              | latin1 |
| character_set_connection     | latin1 |
| character_set_filesystem              | binary |
| character_set_database               | latin1 |
| character_set_results                    | latin1 |
| character_set_server          | latin1 |
| character_set_system           | utf8   |
+------------------------------------+--------+
6 rows in set (0.00 sec)

入れたままだと、latin1の文字コードになっている。

(7) 文字コード指定

MySQLをストップして、/etc/my.cnfの[mysqld]のセクションにdefault-character-set=ujisを追加したら、エラーが出て起動できなくなった
調べたらdefault-character-set=ujisは変更され使えなくなったことが分かり、下記のように2行追加した。

[mysqld]
datadir = /usr/db/mysql
port            = 3306
socket          = /tmp/mysql.sock
skip-external-locking
    ・
    ・
myisam_sort_buffer_size = 8M
character-set-server=ujis
skip-character-set-client-handshake

(8) 再確認

mysql> SHOW VARIABLES LIKE 'character_set_%';
+----------------------------------+--------+
| Variable_name                 | Value   |
+----------------------------------+--------+
| character_set_client          | ujis |
| character_set_connection            | ujis |
| character_set_database      | ujis |
| character_set_filesystem              | binary |
| character_set_results           | ujis |
| character_set_server            | ujis |
| character_set_system          | utf8   |
+----------------------------------+--------+

systemはデフォルトでutf8、filesystemはbinaryで問題ないので、無事ujsi(EUC)が使えるようになった。 やれやれ。

2008.05.21

FreeBSD 7.0とMysql

サーバを2台動かしているが、最近はただ動かしているだけで、弄り回す興味をなくしていた。ところが、ディスクが壊れて、1台のサーバがあえなくダウン。
スペアーのサーバを立ち上げるべくRELEASE-6.2のCDを入れて立ち上げ、便利なツール類をftp接続してpackageで入れようとするが、packageがないとのメッセージ。
別途FreeBSDのftpサイトにアクセスして調べたら、FreeBSDは6.3に加えて7.0がリリースされていた。最初6.3を入れたのだが、7.0の性能改善がすばらしいと言う記事があり、自信作のようなので7.0-RELEASEを入れた。
isoイメージのdisc1のみダウンロードしてCDRを作成して基本のみ入れた後に、ftpでports、packageなどを入れて、環境を整えた。方法は6.xと何も変わらない。
mysqlもportsからmysql51-serverとmysql51-clientを入れた。

# cd /usr/ports/databases/mysql51-server
# make WITH_CHARSET=ujis WITH_XCHARSET=all install clean
# cd ../mysql51-client
# make WITH_CHARSET=ujis WITH_XCHARSET=all install clean

ここで、mysql51-clientを入れたとき、最後にmysql51-clientは既にあるとのメッセージが出てエラーになる。
ここで、make deinstallしてやり直すのが重要らしい。

# make deinstall
# make WITH_CHARSET=ujis WITH_XCHARSET=all install clean

以前に、portsで入れて文字コードがujisにならず、sourceからコンパイルしたことがあったが、このdeinstallしてinstallし直すことをしなかったのが敗因のようだ(確かめたわけではないが)。
入れた以降の設定は以前と同じなのでそちらを参照願いたい。
php5もportsからで問題なし。

Next »