WordPress移行日記
Ubuntu 22.04 LTS
独自ドメインにwordpressを移行しました。プラグイン等は使っていません。
DockerでWordpress+MariaDBをインストール、ホストOS側のNginxでリバースプロキシを設定しています。
プラグインを使用して移行しようと思ったら上手く行かなかったので自力移行です。(;o;)オヨー
WordPressインストール
Dockerでインストール
慣れてきたのでサクッとVPS鯖にDocker composeファイル(docker-compose.yaml)を作ります。MariaDBにしました。
version: '3'
services:
# MariaDB for WordPress
wordpressdb:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: marauderswpdbrt
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpressuser
MYSQL_PASSWORD: wordpresspw
volumes:
- wordpress-db:/var/lib/mysql
networks:
- mynetwork
# WordPress Service
wordpress:
image: wordpress
depends_on:
- wordpressdb
environment:
WORDPRESS_DB_HOST: wordpressdb:3306
WORDPRESS_DB_USER: wordpressuser
WORDPRESS_DB_PASSWORD: wordpresspw
ports:
- "31442:80"
networks:
- mynetwork
volumes:
- wordpress-data:/var/www/html
networks:
mynetwork:
driver: bridge
volumes:
wordpress-db:
wordpress-data:
sudo docker compose up -d
でさくっとコンテナを動かします。
Nginxの設定
サクッと追加。これで一度動くかアドレスにアクセスして確認
# WordPress
server {
listen 443 ssl http2;
server_name blog.estampie.work;
ssl_certificate 証明書.pem;
ssl_certificate_key 証明書鍵.pem;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
proxy_pass http://localhost:31442;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
データベースの移行
さくらのレンタルサーバーを使用していたので、コントロールパネルからデータベース→phpAdminに入ってデータベースの中身を.sqlファイルにエクスポートします。テーブルにブログのDBを選んで「***commentmeta」などが直下に含まれるようにします。
エクスポートでできた.sqlファイルを自鯖の適当な場所にアップして(今回は/home/ユーザー名/blog.sql)
sudo docker exec -i コンテナID bash -c "apt-get update"
sudo docker exec -i コンテナID bash -c "apt-get install mysql-client"
sudo docker exec -i コンテナID bash -c "mysql -u ユーザー -pパスワード wordpress" < /home/ユーザー名/blog.sql
でデータベースをインポートします。
wp-contentファイルのコピー
元のサーバーから「wp-content」フォルダをダウンロードしておきます。サーバー上でzipとかに圧縮しておくと楽です。これを多分「/var/lib/docker/volumes/wordpress_wordpress-data/_data/」にある同名ファイルに上書き保存
さらにアクセス権限を追加しておきます。これをしないとプラグインやテーマの変更が出来ず失敗します。
chown -R www-data:www-data /var/lib/docker/volumes/wordpress_wordpress-data/_data/wp-content
chmod -R 755 /var/lib/docker/volumes/wordpress_wordpress-data/_data/wp-content
wp-config.phpの編集
wp-config.phpを開いて↑の例だとこの辺
/** The name of the database for WordPress */
define('DB_NAME', getenv_docker('WORDPRESS_DB_NAME', 'wordpress'));
/** Database username */
define('DB_USER', getenv_docker('WORDPRESS_DB_USER', 'wordpressuser'));
/** Database password */
define('DB_PASSWORD', getenv_docker('WORDPRESS_DB_PASSWORD', 'wordpresspw'));
// データベースの接頭句が間違ってると読み込めないので元のwordpressのDBで確認しておく
$table_prefix = getenv_docker('WORDPRESS_TABLE_PREFIX', 'wp_');
//ついでに新しいブログのアドレスがきちんとホームになるように以下を追加
define('WP_HOME', 'https://blog.estampie.work');
define('WP_SITEURL', 'https://blog.estampie.work');
ログイン
ここまでできていると前のユーザー名/パスワードでログインできる…筈。プラグインなどもそのままです。SiteGuardプラグインのログインURL変更などは無効になっているので再設定します。
前のURLを置換
Search Regexというプラグインを入れて全体の前のURL部分を置換しました。サクッと。
リダイレクト
.htaccess
前のサーバーからリダイレクトします。
.htaccessで設定 まだ変更したくないURLもあるので除外しつつ…
RewriteEngine On
RewriteBase /
# リダイレクトから除外
RewriteCond %{REQUEST_URI} ^/army/ [OR]
RewriteCond %{REQUEST_URI} ^/mcheck/
RewriteRule ^ - [L]
できた
https://estampie.mimoza.jp/ → https://blog.estampie.work/
完了!
wp_の接頭句変えてたところでちょっと嵌まりました。わ~ん