2つ目のワードプレスを debian 10 に導入した時のメモ

システム部
xr:d:DAFZwdtIVhc:2,j:3178256099,t:23020601
ワードプレスロゴ

姉のワードプレスサイト立ち上げを手伝うことになりました。
デモサイトとして、現在WordPress稼働中のサーバに2つ目のワードプレスを導入したのですが、毎度のごとく手順は忘却の彼方。一から調べて結構な時間を費やしてしまいました。

近い将来、再度WordPressを構築する時の自分のため、手順や遭遇したトラブルを記録しておきます。
もし困っている誰かのためになれば嬉しいです。

重大なエラーに驚く少年と少女
毎度毎度のトラブルです

Debian10にWordPressを導入する手順

debianロゴ

まず手順を振り返ります。

PHPアップグレード

更新アイコン

WordPressの管理画面でPHPバージョンが古いとメッセージが表示されてしまっています。
まずはPHPのアップグレードを実施。

server: $ sudo apt-get update
server: $ sudo apt-get upgrade

PHPは普通にアップグレードから保留されてしまったので、ディストリビューションのアップグレードを行います。

server: $ sudo apt-get dist-upgrade

これでPHP8.2 が導入されました。

apache2 の設定

Apacheロゴ

PHP7.3のモジュールを無効化して、PHP8.2のモジュールを有効化します。

server: $ sudo a2dismod php7.3
server: $ sudo a2enmod php8.2

Let’s Encrypt でSSL化

Let's Encryptロゴ

サイトのSSL証明書は、CERTBOT を利用して、Let’s Encryptの認証局から取得する事にします。

server: $ sudo apt-get install certbot

まず、Apache のバーチャルホストを設定します。
/etc/apache2/sites-available/default-ssl.conf をコピーして編集します。

DocumentRootにドキュメントルート(今回はワードプレスの配置先を設定)
ServerName にドメイン名、ServerAlias には、*.ドメイン名を指定しました。

DocumentRoot /var/www/demo-site
ServerName      demo-site.com
ServerAlias       *.demo-site.com

ここまでやると、あとはcertbotが自動で設定を読み取って、証明書を取得してインストールまでやってくれます。

server: $ sudo certbot --apache

MySQLにデータベース作成

MySQLロゴ

MySQLに今回作成するサイト用のデータベースを作成します。

mysql > CREATE DATABASE demo-site;

既存の環境で使用していたワードプレス管理ユーザ『wpadmin』を今回も使用することにします。
ということで、wpadminにデータベースの全権限をつけます。

mysql > GRANT ALL PRIVILEGES ON demo-site.* TO wpadmin@localhost;

WordPress のダウンロード 〜 配置

ワードプレスロゴ

WordPressのソースコードをダウンロードして、サーバに配置します。

本家ダウンロードサイト: https://ja.wordpress.org/download/

ワードプレスダウンロード

サーバは、SSHが使用できるためSCPでサーバにコピーします。

pc:$ scp wordpress-6.1.1-ja.tar.gz  demo-server:/var/www/demo-site/

サーバにリモートログイン。

pc:$ ssh demo-server

展開して配置します。

server: $ tar xzvf wordpress-6.1.1-ja.tar.gz

普通に展開すると、wordpress フォルダが作られてその配下にファイルが展開されます。
今回はドキュメントルート直下に配置したいため、

server: $ cd wordpress
server: $ mv * ..

あとはブラウザでの設定となる訳ですが、wordpressがソースコードを作ったりするのに、書き込み権限が必要となります。
ドキュメントルート配下のファイルのオーナーをapacheの実行ユーザ www-dataに変更しておきます。

server: $ chown -R /var/www/demo-site

管理画面にログインしてインストール続行

あとは、ブラウザで管理画面にログインして、データベース情報などを設定していきます。

トラブル

エラー

環境を作り直した際、インストール済みと判定されてしまう

構築後に訳あってまっさらな環境を作り直そうとしました。
mysqlでテーブルを全てドロップした後、再度インストールすべくwp-adminにアクセスしたのですが、何故かワードプレスにはインストール済みと判定されてしまいます。

『すでに wordpress をインストール済みのようです。再インストールするには、まず以前のデータベーステーブルを削除してください。』

以前のデータベーステーブルは全て削除してあるのに。

インストール済みエラー画面
WordPressからインストール済みと判定されてしまう

色々試行錯誤したのですが、どうやらmysql のクエリキャッシュが悪さをしていたようで、クエリキャッシュをクリアしたらインストールに進んでくれました。

mysql> RESET QUERY CACHE;

PHPのバージョンアップで非対応プラグインが引き起こす「重大なエラー」

PHPバージョンアップ後、「重大なエラー」が表示され、管理画面にログインできなくなってしまいました。

重大なエラー画面


apacheのエラーログを見てみると、

[Sun Feb 05 14:22:23.504255 2023] [php:error] [pid 1971] [client 66.249.75.227:59170] PHP Fatal error:  Uncaught TypeError: MailPoetVendor\\Carbon\\Carbon::setLastErrors(): Argument #1 ($lastErrors) must be of type array, bool given, called in /var/www/calapanshop/blog/wp-content/plugins/mailpoet/vendor-prefixed/nesbot/carbon/src/Carb...

MailPoetプラグインでエラーが起きている模様。

プラグインのエラーにより管理画面にログインできない時は、プラグインフォルダの名称を変更してプラグインを読み込ませないようにすると、管理画面が表示できるようになります。

server:$ cd wp-content
server:$ mv plugins plugins_bk

管理画面で該当プラグインを削除した後、プラグインフォルダ名を戻しておきます。

server:$ mv plugins_bk plugins

テーマファイルアップロードで「辿ったリンクは期限が切れています」エラー

このエラーは、サイズの大きすぎるファイルをアップロードすると出るようです。

とは言っても、アップロードファイルのサイズは15M

念の為、PHP8.2の設定を見てみると、、

server: $ sudo vi /etc/php/8.2/apache2/php.ini

なんと、POSTデータのサイズ上限が8M、アップロードのファイルサイズ上限が2Mになっています。

post_max_size = 8M
upload_max_filesize = 2M

両方とも、128Mに変更して、apache再起動すると、15Mのテーマファイルがアップロードできるようになりました。

まとめ

今回は、2つ目のワードプレスを導入した際の手順とトラブルをメモに残しました。

コメント