WordPressのお引っ越し

ドメイン名の変更に合わせてWordPressも合わせるように変更かけましたがこれが意外と大変でした。専用ツールを使わずに修正するのは問題がありました。(専用ツール:WP MIGRATE DB PRO

PHPファイルはgrep等で検索してエディタで編集するか、findとsedを組み合わせて変更できます。

find . -name "*.php" -exec sed -i "s/foo/bar/g" {} \;

ところがデータベースにあるパス名はいったんダンプして修正かける必要があります。最初はテキストエディタで修正してみたところ時間がかかりすぎて現実的ではありません。結局、sedを使って修正しました。前回サブディレクトリにあったWordPressをルートパスに持ってきたため、相対パスと絶対パスのサブディレクトリの修正とドメイン名の修正の両方をかける必要がありました。

mysqldump -u root -p wordpressdb > wordpressdb.sql
sed -i 's|/hottuna.server-on.net/computing|/labs.hottuna.tk|g' wordpressdb.sql
sed -i 's|/computing||g' wordpressdb.sql
mysql -u root -p wordpressdb < wordpressdb.sql

今のところ、うまく動いているようですが万が一おかしくなったらバックアップからもとに戻すつもりです。

追記1:
検索したらもっとスマートな方法がありました。サブディレクトリの変更は書いてありませんが、私のサイトではサブディレクトリから ルートパスに移動したときに’/var/www/wordpress/wordfence-waf.php’がないというエラーがあって立ち上がりませんでした。これを’/var/www/wordpress/wordfence-waf.php’とする必要がありました。

UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldurl', 'http://www.newurl') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'http://www.oldurl','http://www.newurl');
UPDATE wp_posts SET post_content = replace(post_content, 'http://www.oldurl', 'http://www.newurl');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://www.oldurl','http://www.newurl');

追記2:
wordfence-wafのパスの問題はデータベースではありませんでした。引っ越しするときはwordfenceのfirewallをオフにするということらしいです。

追記3:

今回移動したVPSはA2ホスティングです。A2ホスティングは評判が良かったので決めたのですが、速度を取る代わりに制限があります。openvzというシステムを使っているので完全なLinuxシステムではありません。何が問題かというとカーネルが2.6という化石のカーネルを使っているためドライバの制限があります。具体的にはブリッジができないとかIKEv2、dockerのようなコンテナもだめです。openvpnはtunデバイスを使ってできますがsystemdから起動できずコマンドから起動するような状況です。今使っているKVM系のVPSも残しておくので互いの欠点を補ってくれるので相乗効果があるかなと考えてます。Webサーバはopenvz、仮想通貨botはkvmという形です。

もう一つ重要な点はIPを分散しておくことです。シンガポールにあるサーバを使っていますが、VPN経由で取引すればリスクオフにもなります。日本における仮想通貨は極めてグレーです。それなのでビジネスが明快なシンガポールにサーバを置くのは正しい選択だと考えています。

追記4:OpenVZでOpenVpnを使うとき次のようなエラーが出たときの解決策

Aug 29 10:20:47 hottuna openvpn[3869]: TUN/TAP device tun0 opened
Aug 29 10:20:47 hottuna openvpn[3869]: TUN/TAP TX queue length set to 100
Aug 29 10:20:47 hottuna openvpn[3869]: do_ifconfig, tt->did_ifconfig_ipv6_setup=0
Aug 29 10:20:47 hottuna openvpn[3869]: /sbin/ip link set dev tun0 up mtu 1500
Aug 29 10:20:47 hottuna openvpn[3869]: openvpn_execve: unable to fork: Resource temporarily unavailable (errno=11)
Aug 29 10:20:47 hottuna openvpn[3869]: Exiting due to fatal error
Aug 29 10:20:47 hottuna systemd[1]: openvpn-server@server.service: Main process exited, code=exited, status=1/FAILURE
Aug 29 10:20:47 hottuna systemd[1]: Failed to start OpenVPN service for server.
Aug 29 10:20:47 hottuna systemd[1]: openvpn-server@server.service: Unit entered failed state.
Aug 29 10:20:47 hottuna systemd[1]: openvpn-server@server.service: Failed with result 'exit-code'.

sudo systemctl edit openvpn@

[Service]
LimitNPROC=infinity