XserverからさくらのレンタルサーバーにWordPressを引っ越しする際に413 エラー(Request Entity Too Large)と闘った備忘録。
ある程度初級の方でもできるように、ちょっと細かめに解説してます!
結構長いので、必要箇所だけ見てもらえるといいと思います!
経緯
普段、WordPressのお引越し系はプラグインのAll in One Migration
を使う事がほとんどだった。
ごくまれに、テーマをDLしてDBもエクスポートしてphpMyAdminでインポートなどもあった。
今回もそのどちらかで行こうと思った時に、All in One MigrationとphpMyAdminのどちらでも「413 エラー(Request Entity Too Large)」で苦戦したのでその時の備忘録になる。
なにが起きたか?
- All in One Migrationでデータをインポートしようとすると100%で止まる(413エラー)
-
.htaccess
でupload_max_filesize
、post_max_size
、memory_limit
、max_execution_time
、max_execution_time
などは十分な値を設定していた - さくらのレンタルサーバーのphpMyAdminでDBのインポートを行おうとするとエラー(200MBくらい、これも413エラー)
何やっても413エラー。
DBとか細かくインポートしたらきっと大丈夫だと思うんだけど、そんなことはしたくない!ということで思い切ってやってみました。
前提
- WordPressについて
- ターミナルについて
- SSHについて
- レンタルサーバーについて
この辺は必要になるかと思います。
正直ある程度は見よう見まねできるとは思いますが自己責任で…。
XserverもさくらのレンタルサーバーもどちらともSSHが使えたので、今回はSSHで接続して色々やってみました。
FTPツールでもできると思いますが、時間がかかるので圧縮して転送する方法を選びました。
さくらのレンタルサーバーでSSHが使えるのは「スタンダードプラン」以上なので注意です(さくらのレンタルサーバー:SSHを利用したい)
ドメインの設定はサクラのレンタルサーバー側で済ませている前提です。
作業内容
大まかなステップとしては
- Xserverからデータをローカルにダウンロードする
- さくらのレンタルサーバーにデータをアップロードする
という流れになります。
Xserverからデータを落としてくる
Xserver側の作業としては次の通り。
- XserverにSSHで接続する
- 該当WordPressのデータ(WordPressのインストールディレクトリ丸ごと)を圧縮する
- DBをエクスポートする
- sqlデータと圧縮したデータをローカルにダウンロードする
1. XserverにSSH接続をする
SSHの設定はこちらのXserver公式の記事を参照
SSH接続するのに~/.ssh/config
に設定情報を保存して
ssh xserver
で接続できる前提でいきます
2. WordPressデータを圧縮する
今回の圧縮形式はtar.gz
形式を使用します。
Xserverだと~/ドメイン名/public_html/
以下に公開データがあると思います。
今回は~/hoge.com/public_html/wp
がインストールディレクトリという設定で進めてみます。
イメージとしては下記の通りです。
~/hoge.com/
└── public_html/
└── wp/
├── wp-admin/
├── wp-content/
│ ├── plugins/
│ ├── uploads/
│ └── thmemes/
│ └── original-theme/
├── wp-includes/
├── wp-config.php
└── その他諸々...
このWordPressを構成しているwp
ディレクトリをごそっと圧縮しちゃいます
public_html直下を圧縮するイメージです。DBもそのままお引越しするので、公開ディレクトリ以下の全部をそのまま移すというのがWordPressの設定もそのままでいけるのでわかりやすいと思います。ディレクトリ構成を変える場合には、WordPress側の設定も変わるので注意。
まずは該当ディレクトリに移動します
cd ~/hoge.com/public_html/
次に圧縮します
tar -czvf wordpress-files.tar.gz .
これでカレントディレクトリ(例だとpublic_html以下)の物を全て圧縮してwordpress-files.tar.gz
というファイルを作ってくれます。
これでファイルの準備は完了です
3. DBをエクスポート
DBエクスポートするためにまずはDB情報を確認します。
まずはWordPressのインストールディレクトリに移動します。
cd ~/hoge.com/public_html/wp
インストールディレクトリにはwp-config.php
という、WordPressの設定ファイルがあります。
この中にDBの情報が入っているので調べます。
cat wp-config.php | grep DB_
こうすると
define( 'DB_NAME', 'db_name' );
define( 'DB_USER', 'db_user' );
define( 'DB_PASSWORD', 'db_pass' );
define( 'DB_HOST', 'mysqlXXXX.xserver.jp' );
define( 'DB_CHARSET', 'utf8' );
define( 'DB_COLLATE', '' );
のように表示されるはずです。
この情報を使ってsqlファイルを作成します。
次のコマンドを実行するんですが、後でファイルをダウンロードする際に楽なので、先ほど作ったwordpress-files.tar.gz
がある階層と同じところに出力をしましょう
cd ~/hoge.com/public_html
mysqldump -u db_user -p db_name -h mysqlXXXX.xserver.jp > wordpress_export.sql
このdb_user
、db_name
、mysqlXXXX.xserver.jp
は先ほど調べた値に置き換えてください。
これでEnterを押すとパスワードを求められるので、調べたパスワード(例だとdb_pass)を入力して完了です。
これで必要なファイルが2つ揃ったので確認しましょう。
ls -la
コマンドで該当ファイルがきちんとあるか確認してください。
~/hoge.com/
└── public_html/
├── wordpress_export.sql <=これと
├── wordpress-files.tar.gz <=これ
└── wp/
├── wp-admin/
├── wp-content/
│ ├── plugins/
│ ├── uploads/
│ └── thmemes/
│ └── original-theme/
├── wp-includes/
├── wp-config.php
└── その他諸々...
最後に、このディレクトリでpwd
コマンドを実行してください。
pwd
/home/server_name/hoge.com/public_html
これは後でダウンロードするときに使います!
4. Xserverからローカルにデータをダウンロードする
作成したデータをローカルにダウンロードします。
今回はrsync
を使いますが、rsync
以外でも、scp
やFTPツールなど、使いやすい・やりやすい方法でいいと思います!
まずは、Xserverに繋いでいる場合にはexit
をしてローカル環境に戻りましょう。
ファイルをダウンロードするディレクトリに移動します。
今回は~/projects/hoge.com/
というところにダウンロードするという想定でやってみます。
ご自身の環境に合わせてください!
まずは該当ディレクトリに移動
cd ~/projects/hoge.com/
次にrsync
でダウンロードします
先ほどXserverで最後に出力したパスを使います
rsync -avz xserver:/home/server_name/hoge.com/public_html/wordpress_export.sql ./
rsync -avz xserver:/home/server_name/hoge.com/public_html/wordpress-files.tar.gz ./
これでダウンロードができるはずです
ここでxserver
というのはssh接続のエイリアスの名前なので、~/.ssh/config
で登録している名前に置き換えてください。
最後にls -la
で確認してローカルにファイルがダウンロードできていたら完了です!
ファイルが重い場合には時間がかかるので、気軽に待ちましょう!
さくらのレンタルサーバーにアップロードする
さくらのレンタルサーバーの場合、Xserverとは違い公開ディレクトリをwww
以下の任意の場所に設定できます。
公開フォルダの設定はさくらの公式のこちらの記事を参照
事前にデータベースを作成してください。作成方法はさくらの公式サイトを参照
やることとしては次の通り
- さくらのレンタルサーバーにSSH接続をする
- 公開ディレクトリの作成
- データをアップロード
- WordPressデータの解凍
- データベースのインポート
-
wp-config.php
の設定
1. サクラのレンタルサーバーにSSH接続
SSHの設定はこちらの公式の記事を参照
SSH接続するのに~/.ssh/config
に設定情報を保存して
ssh sakura
で接続できる前提でいきます
2. 公開ディレクトリの作成
今回はhoge.comというディレクトリを作成して、そこを公開ディレクトリにしようと思います。
cd ~/www/
mkdir hoge.com
これでディレクトリの設定は完了です。
さくらのコントロールパネルからも公開ファイルの設定を忘れずに!
アップロード時に使うのでここのパスを確認しておきましょう
pwd
/home/server-name/www/hoge.com
3. データをアップロード
Xserverからローカルにダウンロードしたファイルをアップロードします。
さくらサーバーからはexit
してローカル環境に戻ります。
まずはディレクトリ移動
cd ~/projects/hoge.com/
次にwordpress_export.sql
とwordpress-files.tar.gz
をアップロードします。
アップロード先は先ほどpwd
で確認したパスになります。
rsync -avz ./wordpress_export.sql sakura:/home/server-name/www/hoge.com/
rsync -avz ./wordpress-files.tar.gz sakura:/home/server-name/www/hoge.com/
ここでsakuraというのはssh接続のエイリアスの名前なので、~/.ssh/config
で登録している名前に置き換えてください。
これでアップロードは完了しているはずなので、さくらにSSH接続して~/www/hoge.com/
でls -la
をしてみて該当ファイルがあるか確認してください。
ファイルが大きいと時間がかかるので気長に待ってみてください。
~/www/
└── hoge.com/
├── wordpress_export.sql <=これと
└── wordpress-files.tar.gz <=これがあるか確認
4. WordPressデータを解凍する
まずは該当ディレクトリに移動します
cd ~/www/hoge.com
次のコマンドを使って解凍します
tar -xzvf wordpress-files.tar.gz -C ./
ファイルが大きいと時間がかかりますので、気長に待ちましょう!
完了したら
~/www/
└── hoge.com/
├── wordpress_export.sql
├── wordpress-files.tar.gz
└── wp/
├── wp-admin/
├── wp-content/
│ ├── plugins/
│ ├── uploads/
│ └── thmemes/
│ └── original-theme/
├── wp-includes/
├── wp-config.php
└── その他諸々...
このように元通りになっていたら完了です!
5. データベースのインポート
次にデータベースのインポートを行います。
ここで使用する情報はサクラのレンタルサーバーで作成したデータベースの情報が必要になりますので用意してください!
まずはディレクトリ移動
cd ~/www/hoge.com/
次にインポートを行います。
必要な情報は
- データベースのホスト名 (
mysql1234.db.sakura.ne.jp
とします) - データベース名(
server-name_db
とします) - ユーザー名(
server-name_user
とします) - パスワード(
password
とします)
です
mysql -h mysql1234.db.sakura.ne.jp -u server-name_user -p server-name_db < ./wordpress_export.sql
これでインポートが完了するはずです。
6. wp-config.php
の設定
サクラのレンタルサーバーで作成したデータベースの内容にあわせて、wp-config.php
の内容を書き換えます。
まずは該当ディレクトリに移動します。WordPressがインストールされているディレクトリに移動してください。
cd ~/www/hoge.com/wp
ls- la
をしてwp-config.php
があったら正解です。
次にvim
コマンドを使って書き換えます。
vimの使い方がわからない方は、さくらのコントロールパネルからファイルマネージャーを使って編集してもOKです!
このためだけにvimを触らなくてもいいと思うので、ご自身の楽な方で作業をしてください。
vim wp-config.php
変更する必要がある行は下記の通りで、先ほどデータベースのインポートをした際に使用した情報をそのまま入れます。
define('DB_NAME', 'server-name_user');
/** MySQL データベースのユーザー名 */
define('DB_USER', 'server-name_user');
/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'password');
/** MySQL のホスト名 */
define('DB_HOST', 'mysql1234.db.sakura.ne.jp');
矢印(もしくはJ,K,H,Lキー)で該当行に移動して、i
で編集モード、esc
で移動モード
編集が終わったら:wq
で保存です。
移管作業完了
これでサーバー移管が完了しました!
ドメインの設定が完了している場合には、サイトURLを開くことでログインなど確認ができるはずです!
お疲れ様でした!
終わりに
今まではXserverに移管することがほとんどだったのですが、まさかこんな制限があるとは思いませんでした。
.htaccess
で上限だけあげたらいけるっしょ!とか思ってた自分が恥ずかしいですね・・・
同じ悩みを抱えてる人がいたら役に立てたらと思います!
余談1:さくらのレンタルサーバーに問い合わせてみた
413エラーの連続でクリティカルヒットしてるときに、ここまで来たらきっとWebサーバー側のリミットにあたってるんだと思い問い合わせてみた。もしかしたらなんか設定値変えられるかも?とか淡い期待を抱いていました。
結論、「共用サーバーのこの設定値に関しては教えられないし変えられない」 との事。
知りたければ試してみてね☆ということ。
つまり、やってみて通った容量が閾値という事だ。
情報はおいてある、欲しけりゃ探せって事ですね。どこの海賊王ですか?
一応、サポートにデータを渡すとやってくれるみたいなことは言ってましたが、大概の場合、情報を渡す訳にもいかないので結果ダメですね
余談2: WordPressのファイルの圧縮について
WordPress運用では、バックアップファイルなどがありそれが異常に重たかったりします。
そういう場合には、古いのを削除してからtar.gz
にした方が時間短縮になります。
また、今回はWordPressを構成するすべてのファイルを一括で移動しましたが、wp-content
以下だけとかもありだと思います。