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_の接頭句変えてたところでちょっと嵌まりました。わ~ん