labunix's blog

labunixのラボUnix

Wordpress MySQL版の日本語化とバックアップ、リストア

■wordpressの日本語化
 「ja.mo」は既にあるので、有効化のみ。

$ find /var/lib/wordpress/wp-content/languages/ -name "ja*"
/var/lib/wordpress/wp-content/languages/ja.mo

$ head -2 /etc/wordpress/config-dev.php
<?php
define ('WPLANG', 'ja');

$ sudo /etc/init.d/apache2 restart
[ ok ] Restarting web server: apache2 ... waiting .

■「ZIP 形式のプラグインをインストール」を使うには、
 FTPサーバの導入が必要

$ sudo apt-get install -y vsftpd

■匿名を禁止、ローカルユーザでログイン出来るようにする

$ sudo grep "^anonymous\|#local_" /etc/vsftpd.conf 
anonymous_enable=YES
#local_enable=YES
#local_umask=022

$ sudo sed -i s/"\(anonymous_enable\)=YES"/"\1=NO"/ /etc/vsftpd.conf; \
  sudo sed -i s/"#\(local_\)"/"\1"/ /etc/vsftpd.conf

$ sudo grep "^anonymous\|^local_" /etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
local_umask=022

$ sudo /etc/init.d/vsftpd restart
Stopping FTP server: vsftpd.
Starting FTP server: vsftpd.

■wordpress(MySQL版)のバックアップ
 エクスポートとプラグインのインポートツールを使って、
 xmlで復帰出来るようにしておく。

■対象の確認

$ echo "show databases;" | sudo -u root mysql -p -b
Enter password: 
Database
information_schema
mysql
performance_schema
wordpress

■ユーザの確認
 まさかrootユーザでインストールしたのに居ないなんてことはw。。。

$ echo "select host,user,super_priv from mysql.user where user = 'root' or user = 'wordpress';" | sudo -u root mysql -p -b
Enter password: 
host	user	super_priv
localhost	root	Y
vmwheezy	root	Y
127.0.0.1	root	Y
::1	root	Y
localhost	wordpress	N
vmwheezy	wordpress	N

■mysqldumpでバックアップ

$ sudo -u root mysqldump -p wordpress > wordpress.sql
Enter password: 

$ head -5 wordpress.sql
-- MySQL dump 10.13  Distrib 5.6.19, for debian-linux-gnu (x86_64)
--
-- Host: localhost    Database: wordpress
-- ------------------------------------------------------
-- Server version	5.6.19-1~dotdeb.1

■mysqldumpでwordpress_backupにリストア

$ cat wp_backup.sql
CREATE DATABASE wordpress_backup;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER
ON wordpress_backup.*
TO wordpress@localhost
IDENTIFIED BY 'rootroot';
FLUSH PRIVILEGES;

$ cat wp_backup.sql | \
  sudo -u root mysql --defaults-extra-file=/etc/mysql/debian.cnf

$ cat wp_backup_remote.sql
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER
ON wordpress_backup.*
TO wordpress@vmwheezy
IDENTIFIED BY 'rootroot';
FLUSH PRIVILEGES;

$ cat wp_backup_remote.sql | \
  sudo -u root mysql --defaults-extra-file=/etc/mysql/debian.cnf

$ sudo -u root mysqldump -p wordpress_backup < wordpress.sql

■DB連携の変更

$ grep DB_NAME /etc/wordpress/config-dev.php
define('DB_NAME', 'wordpress');

$ sudo cp /etc/wordpress/config-dev.php /etc/wordpress/config-dev.php.org
$ sudo vim /etc/wordpress/config-dev.php
(DB_NAMEの編集)

■シンボリックリンクは保持したまま。

$ ls -l /etc/wordpress/config-192.168.152.150.php 
lrwxrwxrwx 1 root root 29  721 02:58 /etc/wordpress/config-192.168.152.150.php -> /etc/wordpress/config-dev.php

■apache2の再起動

$ sudo /etc/init.d/apache2 restart
[ ok ] Restarting web server: apache2 ... waiting .

■wordpressの初期設定を行いログイン

■wordpressを削除

$ echo "drop database wordpress;" | sudo -u root mysql -p -b
Enter password: 

■上記で正常にアクセス、検索、投稿が出来ること。

■では元に戻しましょう。

$ cat wp.sql 
CREATE DATABASE wordpress;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER
ON wordpress.*
TO wordpress@localhost
IDENTIFIED BY 'rootroot';
FLUSH PRIVILEGES;

$ cat wp_remote.sql 
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER
ON wordpress.*
TO wordpress@vmwheezy
IDENTIFIED BY 'rootroot';
FLUSH PRIVILEGES;

$ cat wp.sql wp_remote.sql | \
  sudo -u root mysql --defaults-extra-file=/etc/mysql/debian.cnf

$ sudo mv /etc/wordpress/config-dev.php.org /etc/wordpress/config-dev.php
$ grep DB_NAME /etc/wordpress/config-dev.php 
define('DB_NAME', 'wordpress');
$ sudo /etc/init.d/apache2 restart
[ ok ] Restarting web server: apache2 ... waiting .

■初期設定を行い、投稿、検索が出来たら、wordpress_backupの削除
 URLやIPの変更はログインしてからでも出来る。
 ※ただしその間、2つのIPを割り当てるなどの工夫が必要

$ echo "drop database wordpress_backup" | sudo -u root mysql -p -b
Enter password: 

$ echo "show databases" | sudo -u root mysql -p -b
Enter password: 
Database
information_schema
mysql
performance_schema
wordpress