さくらのレンタルサーバーで運営しているサイトをさくらのVPSサーバーに移行
した。いくつかつまづいたのでメモ。
前提
移行前の環境:さくらのレンタルサーバーで運営している wordpress のサイト
let’s encrypt を使用中
移行先の環境:さくらのVPSサーバー
apache や mysql などweb公開に必要なソフトは導入済み。アップロードすれば公開できる
大まかな流れは、wordpress 関連ファイルとデータベースの情報を旧サーバーから新サーバーにコピーして、ドメインのゾーン情報のAレコードを、さくらのレンタルサーバからさくらのVPSのサーバのIPへ変更すればいい。
1.wordpress 関連データを旧サーバーから新サーバーにコピー
旧サーバーの phpmyadmin からデータベース内の情報をエクスポート。
このとき「DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT / TRIGGER コマンドを追加する」のオプションを有効にしておく。
次に、ダウンロードしたファイルを新サーバーの phpmyadmin からインポート。
すると、phpmyadmin にエラーが出た。
アップロードしようとしたファイルが大きすぎるようです。
php.ini の次の項目の値を変更する
upload_max_filesize=2M
↓
upload_max_filesize=128M
post_max_size = 8M
↓
post_max_size = 128M
設定を反映させるために、httpd と php-fpm を再起動する
httpd を再起動
sudo systemctl restart httpd
php-fpm を再起動
sudo systemctl restart php-fpm
※phpinfo で調べると Server API の項目が FPM/FastCGI になっているので
次に wordpress を構築しているファイルをダウンロード。FTP ソフトなどを使う。
2.WordPressの設定ファイル(wp-config.php)を書き換える
次の4つの項目を書き換える
/** WordPress のためのデータベース名 */
define('DB_NAME', 'データベース名');
/** MySQL データベースのユーザー名 */
define('DB_USER', 'ユーザー名');
/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'パスワード');
/** MySQL のホスト名 */
define('DB_HOST', 'ホスト名');
すると、アクセスするとエラーが出た
Your PHP installation appears to be missing the MySQL extension which is required by WordPress.
日本語訳:お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。
Uncaught mysqli_sql_exception: Host 'ik1-114-63704.vs.sakura.ne.jp' is not allowed to connect to this MariaDB server in /var/www/html/wordpress/mysql_connect_test2023.php:12 Stack trace: #0
ホスト名を IPアドレスから localhost に変更
php から select で取得したら文字化けする場合は、以下を追記
/* 文字セットを utf8mb4 に変更します */
mysqli_set_charset($link, "utf8mb4");
2.ネームサーバーの変更
さくらインターネットのサーバーコントロールからネームサーバーのIPアドレスを新サイトのものに変更。
ネームサーバーが完全に切り替わるまで少し時間がかかる。
3.サブディレクトリにインストールしたWordPressをドメイン直下で表示する
新サーバーにインストールした wordpress は公開フォルダの直下(html)ではなくサブディレクトにした。
インストールした場所
/var/www/html/wordpress
これだと wordpress のトップページにアクセスしたいときもサブディレクトリを指定しないといけない。URL がきれいでないし、なにより旧サーバーのころより URL が変わってしまう。
wordpress の設定で公開フォルダを変更。
wordpress 内にリンク切れがないことを確認する。