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

Docker,Wordpress,MariaDB