このサイトを放置していることでいろいろとバージョンが古くなっていたり、壊れていたりして問題だったので、環境を更新することにした。
問題点は次の通り
- AWS のEC2が古くて最新のものにアップデートする必要があった
EC2の2023へのバージョンアップは移行が手作業になる - PHPのバージョンアップ
PHPのセキュリティは重大(ブログ自体は大したこと書いていないのでどうでもいいが一応) - WordPressのアップデート
PHPの対応バージョンの違いがあるのでこちらも必須に。
EC2のバージョンアップ
WordPressが画像をどのように保存しているか知らない。
他、CSSなどのサイトデザインを決定しているファイルがどこにあるか知らない。
よってこれらのファイルは切り捨てるものとする。
デザインはまた作り直したりすればいいし、画像のアップロードもほとんど行っていなかったので捨てられる。
なので、EC2は単純に新規に作製すれば移行が完了する。
ただし、wp-config.phpだけは持ってくる必要がある。
このファイルにはDBへの接続情報が含まれているからである。
より正確には接続情報の部分だけあればいい。
EC2の作成とセキュリティグループの設定(RDSへのインバウンド情報も忘れずに)、ロードバランサーへの追加を行えば完了である。
EC2にはapache、php、php-mysqlが必要になる。
これらはyumでインストールするのだが、EC2が参照しているyumリポジトリが限定的であったりして素直にインストールできないものがある。
ざっくりと実行したコマンドを以下にメモ。
# Apacheのインストール
yum install httpd
# MySQLクライアントのインストール
dnf -y localinstall https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
dnf -y install mysql mysql-community-client
# PHPからMySQLへアクセスするためのライブラリインストール(他いろいろ)
dnf install -y httpd wget php-fpm php-mysqli php-json php php-devel
ちなみに、SSL設定はロードバランサーで行うのでApacheは80ポートだけで良い
PHPのバージョンアップ
は、上記で一緒にやってしまっているので割愛
WordPressのインストール
古いWordPressは新しいPHPで動かない、という理由で、動いていたバージョンとは違う最新版を持ってくることにした。
足りないテーブルなどはWordPressが勝手に作成してくれる、ことを願って(結果ちゃんといった)
余談:実際6.4くらいから6.6へのバージョンアップと比較的バージョン距離が近いからうまくいったのかも知れない
WordPressはこうしきからwgetで取得し、展開する。
wget https://ja.wordpress.org/latest-ja.zip
unzip latest-ja.zip
展開先は/var/www/html/の直下、/var/www/html/wp-contentとなるようにする。
そしてinstall.phpへアクセスする前に、旧環境から持ってきたwp-config.phpのデータベース接続情報を転記し、既存DBへのアクセスができるようにする。
この状態でブラウザから管理画面にアクセスすると「データベースの更新が必要です」と表示された。
思惑どおりに自動で作成してくれるようで一安心。
これで既存の記事を残したままバージョンアップができた。
その他
前に使っていたテーマがインストールされていないのでインストールする必要があった。
また、全SSL化も行っておいた。
テーマをインストールするにあたって、FTPの接続情報が求められた。
これはWordPressがそういう仕組で動作しているかららしい。
とはいえ、FTP自体が使いたくない。
のでphp-config.phpに次の記述を追加した。これによって直接ダウンロード+インストールをしてくれるらしい。
define('FS_METHOD','direct');
(FileStore?Method???)
これを記述してテーマのダウンロードをすると直接ダウンロードできた。
SSL化は管理画面から設定→一般からWordPress アドレス (URL)をhttpsにすれば完了。
のはずだった。
実際はリダイレクトループが発生してサイトが表示されなくなった。
おまじないを込めて、wp-config.phpに次の記載を追加した。
define('WP_HOME','https://tataka.info');
define('WP_SITEURL','https://tataka.info');
$_SERVER['HTTPS'] = 'on';
おわりに
長らくアップデート自体を放置していたけどいざやってみれば意外とすんなりできた。
画像など細かいところでだめなところはあるのかも知れないが。
また何かあったら書く。
追記:画像
少しほったら出てきた。アップロードされたものは/var/www/html/wp-content/uploadsにおいてあった。
themeとかも兄弟ディレクトリにあったので必要ならばそれを持ってくればいいのかも。
とりあえず画像だけ新EC2の同じディレクトリにコピーしてみた。
コピーはscpとか使うのも面倒だったので、zipでまとめてDL/UP。
展開して同じディレクトリに配置するだけで、管理画面のメディアからちゃんと参照できた。