WordPress, Ubuntu 24.04.2 LTS

ブログツール WordPressを Ubuntu に入れて使います。
Ubuntu + Apache2 +SSL + PHP + MySQL + WordPress を組み合わせます。

MySQLの操作とphpMyAdminも使います。

こちらを参考にしています。まとまっていて、有り難いです。
https://www.server-world.info/query?os=Ubuntu_24.04&p=httpd2&f=4

Ubuntu ネット、日本語、watchdog、 など

Raspberry Pi での Watchdogの設定には、
https://raspida.com/setup-watchdog-pi5-bookworm/ を参照させて頂きました。

/etc/systemd/system.conf
#RuntimeWatchdogSec=off
 ↓
 RuntimeWatchdogSec=10

Apache2 + SSL

$ apt install apache2
$ systemctl is-enabled apache2 ← enabledを確認
$ sudo a2enmod ssl ← sslモジュール追加
$ sudo systemctl restart apache2 ← 案内に従いapache2を再スタート
$ sudo a2ensite default-ssl ← sslモジュールを有効化
$ sudo apt install nmap
$ nmap localhost ← 443 ポートを確認

PHP

https://www.server-world.info/query?os=Ubuntu_24.04&p=php&f=1
https://www.server-world.info/query?os=Ubuntu_24.04&p=httpd&f=7 を参考にしています。

$ sudo apt install php php-mbstring php-pear libapache2-mod-php php-mysql php-fpm php-xmlrpc php-soap php-intl

phpMyAdminでの、 PHPそのものの設定は、/etc/php/8.3/apache2/php.ini

ファイル 対象 主な用途

/etc/php/8.3/apache2/php.iniApache + mod_phpApacheプロセス内でPHPを動かす
/etc/php/8.3/fpm/php.iniPHP-FPMApache/NginxからPHP-FPMへ処理を渡す
$ sudo cp -p /etc/php/8.3/apache2/php.ini /etc/php/8.3/apache2/php.ini.$(date +%Y%m%d)

/etc/php/8.3/apache2/php.ini ← 編集
;;; memory_limit = 128M

memory_limit = 256M

;;; post_max_size = 8M

post_max_size = 128M

;;;upload_max_filesize = 2M

upload_max_filesize = 64M

;;; date.timezone =

date.timezone = "Asia/Tokyo"

;;; mbstring.language = Japanese

mbstring.language = Japanese

;;; mbstring.internal_encoding =

mbstring.internal_encoding = UTF-8

;;; mbstring.http_input =

mbstring.http_input = UTF-8

;;; mbstring.http_output =

mbstring.http_output = pass

;;; mbstring.encoding_translation = Off

mbstring.encoding_translation = On

;;; mbstring.detect_order = auto

mbstring.detect_order = auto

;;; mbstring.substitute_character = none                                                  

mbstring.substitute_character = none
$ sudo cp -p /etc/php/8.3/fpm/pool.d/www.conf /etc/php/8.3/fpm/pool.d/www.conf.$(date +%Y%m%d)

/etc/php/8.3/fpm/pool.d/www.conf ← 編集

;;;listen.mode = 0660
listen.mode = 0660

;;; pm.max_children = 5
pm.max_children = 25

;;; pm.start_servers = 2
pm.start_servers = 10

;;; pm.min_spare_servers = 1
pm.min_spare_servers = 10

;;; pm.max_spare_servers = 3
pm.max_spare_servers = 20

;;; pm.max_requests = 500                                                                                                          
pm.max_requests = 500

;;; pm.max_requests = 500                                                                                                          
pm.max_requests = 500
$ systemctl list-unit-files --type=service | grep "php" ← php-fpm 起動設定を確認
$ sudo systemctl restart php8.3-fpm
$ sudo systemctl status apache2
/var/www/html/phpinfo.php
<?php
phpinfo();
?>
https://localhost/phpinfo.php ← php動作確認

PHP-FPM 確認、 Apache, PHPモジュール確認

ps aux | grep php-fpm
0:20 php-fpm: master process (/etc/php/8.3/fpm/php-fpm.conf)
1:01 php-fpm: pool www
apache2ctl -M | grep php

MySQL

$ sudo apt install mysql-client mysql-server

MySQL 8.0 初期設定 こちらを参照し設定ファイルを作成します。有難うございます。
/etc/my.cnf を作成します。

/etc/my.cnf

[mysqld]
character_set_server = utf8mb4 # 文字コード
collation_server = utf8mb4_ja_0900_as_cs # 照合順序

# timezone
default-time-zone = SYSTEM
log_timestamps = SYSTEM

# Error Log
log-error = /var/log/mysql/mysql-error.log

# Slow Query Log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 5.0
log_queries_not_using_indexes = 0

# General Log
general_log = 1
general_log_file = /var/log/mysql/mysql-query.log

[mysql]
default-character-set = utf8mb4

[client]
default-character-set = utf8mb4
$ sudo systemctl restart mysql ← MySQL再起動

“mysql_secure_installation” はMySQL 8.0では、必要無しとの記事を上げている方が、いらっしゃる。
次のコマンドで、”mysql_secure_installation”の操作内容を見てみよう。
mysql> select user, host from mysql.user; ← ユーザー、ホスト名を確認
mysql> show databases; ← databasesを確認

Remove anonymous users? 匿名ユーザーは無し
Disallow root login remotely? localhost 以外の host指定は無し
Remove test database and access to it? testデーターベースは無し
「test」テーブルと「test_」から始まるテーブルに対してアクセス権限は存在していない。

パスワード認証方式の違い
$ mysql -u root -p : 現在ログインしているLinuxユーザーの権限で mysql クライアントを起動し、 MySQL/MariaDBの root ユーザーとして、パスワード認証します。

$ sudo mysql -u root -p : Linuxのroot権限 → mysqlクライアント → MySQLのrootユーザー

$ sudo mysql -u root
$ mysql> status ←mysqlの状態を確認
mysql> select user, host from mysql.user; ← ユーザー、ホスト名を確認
mysql> show databases; ← databasesを確認
mysql> CREATE DATABASE wp DEFAULT CHARACTER SET utf8; ← WordPressデーターベース作成
mysql> use wp;
mysql> CREATE USER 'wp'@'localhost' IDENTIFIED BY '[password]'; ← WordPressユーザ作成
mysql> SELECT user,host FROM mysql.user; ← ユーザー確認
mysql> GRANT ALL ON wp.* TO 'wp'@'localhost' WITH GRANT OPTION; ← ユーザー権限設定
mysql> FLUSH PRIVILEGES;
mysql> CREATE DATABASE phpmyadmin DEFAULT CHARACTER SET utf8; ← phpmyadminデーターベース作成

mysql> use phpmyadmin;
mysql> CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY '[password]';
mysql> GRANT ALL ON phpmyadmin.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
mysql> SELECT user,host FROM mysql.user; ← ユーザー確認
mysql> FLUSH PRIVILEGES;

WordPress

$ cd /var/www/html
$ sudo wget https://ja.wordpress.org/latest-ja.tar.gz ← WordPressをダウンロード
$ sudo tar xvf latest-ja.tar.gz ← 展開
$ sudo mv wordpress wp ← 適宜な名前に変更
$ sudo chown www-data:www-data -R wp

http://localhost(ip number)/wp/wp-admin/setup-config.php
[データベース名]: wp
[ユーザー名]: wp
[パスワード]: *****************************
[データーベースのホスト名]: localhost
[送信]を押してエラーが出る際は、mysqlの設定を見直す。名前や権限を見直す。

WordPress データーベース / エクスポート, インポート

mysqldump

マスターサーバーでの操作

マスターサーバーで、まず wp DBをバックアップします。

mysqldump -u root -p wp > wp.sql

文字コードを明示するなら

文字コードを確認

mysql -u root -p -e "SHOW CREATE DATABASE wp;"

CREATE DATABASE `wp` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */
mysqldump -u root -p --default-character-set=utf8mb4 wp > wp.sql

圧縮するならば

mysqldump -u root -p --default-character-set=utf8mb4 wp | gzip > wp.sql.gz
mysqldump -u root -p wp \
  --single-transaction \
  --quick \
  --hex-blob \
  --default-character-set=utf8mb4 \
  > wp.sql
mysqldump -u root -p wp \
  --single-transaction \
  --quick \
  --hex-blob \
  --default-character-set=utf8mb4 \
| gzip > wp.sql.gz
mysqldump オプション

MySQL 8.0 リファレンス
https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html

--single-transaction: InnoDBテーブルの場合、テーブルをロックせずに整合性のあるバックアップを取ります(サイトが止まりません)。
--quick: データをメモリに展開せず、一行ずつ処理します。巨大なDBでもメモリ不足になりません。
--hex-blob: バイナリデータ(画像データなどがDBに入っている場合)を16進数文字列としてダンプします。文字化け防止になります。
--default-character-set=utf8mb4: 絵文字などを含む現代のWordPressでは必須です。ここを間違えると文字化けします。

『LINUX工房 – 【保存版】WordPress移行の失敗学。別環境へ「確実に」復元するためのフルバックアップとWP-CLI活用術』
https://www.linuxkoubou.com/wordpress-migration-backup-restore-wp-cli-guide/#toc11

他の記事も参考になります。有難うございます。

  --single-transaction \
  --quick \
  --hex-blob \
  --default-character-set=utf8mb4 \
  --triggers \
  --events \

–triggers
ダンプ対象の各テーブルのトリガーを出力に含めます。このオプションはデフォルトで有効になっています。無効にするには、–skip-triggers を指定してください。
トリガー(Trigger)**とは、テーブルに特定の操作が行われた時、自動的に実行される処理
–events
MySQL Event Schedulerのイベントをダンプします。

mysqldump -u root -p wp \
  --single-transaction \
  --quick \
  --hex-blob \
  --default-character-set=utf8mb4 \
  > wp.sql

スレーブでの操作

スレーブへ移行

スレーブの wp を作り直すならば、

mysql -u root -p -e "DROP DATABASE wp;"
mysql -u root -p -e "CREATE DATABASE wp CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;"

インポート

mysql -u root -p wp < wp.sql

圧縮された sqlファイルならば、

gunzip -c wp.sql.gz | mysql -u root -p wp

phpMyAdmin エクスポート

phpMyAdminサーバーに接続する。
http://WORDPRESS SERVER/phpmyadmin

エクスポートで詳細にて、DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT / TRIGGER コマンドを追加する。

  • DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT / TRIGGER コマンドを追加する
    • AUTO_INCREMENT 値
  • CREATE VIEW コマンドを追加する
  • CREATE PROCEDURE / FUNCTION / EVENT コマンドを追加する
  • CREATE TRIGGER コマンドを追加する
  • 逆クォートでテーブルやカラムの名前を囲む (特殊な文字やキーワードを含むカラム名やテーブル名を保護します)

wp.sqlをダウンロードする。

phpMyAdmin インポート

phpMyAdminサーバーに接続する。
http://WORDPRESS SERVER/phpmyadmin
インポートを行う。

タイムアウト制限

/etc/php/8.3/apache2/php.ini を編集

タイムアウトを無制限にするには、

max_execution_time = 0

max_input_time = 0

インポート量を増やすには、例えば、

upload_max_filesize = 512M
post_max_size = 512M
upload_max_filesize = 2G
post_max_size = 2G

編集後、Apacheを再起動します。

sudo systemctl restart apache2

コマンドを使って、インポートする

$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.

データーベース、ユーザー名、権限を確認

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| phpmyadmin         |
| sys                |
| WORDPRESS DATABASE |
+--------------------+
mysql> SELECT User, Host FROM mysql.user;
+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| debian-sys-maint | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| phpmyadmin       | localhost |
| root             | localhost |
| WORDPRESSUSERNAME| localhost |
+------------------+-----------+
mysql> SHOW GRANTS FOR 'USERNAME'@'localhost';
+---------------------------------------------------------------------------+
| Grants for USERNAME@localhost                                             |
+---------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `USERNAME`@`localhost`                              |
| GRANT ALL PRIVILEGES ON ` `.* TO `USERNAME`@`localhost` WITH GRANT OPTION |
+---------------------------------------------------------------------------+

SQLの先頭を確認

head -30 ./WORDPRESS_DATABASE.sql

エクスポートファイルをインポートする。

mysql -u root -p wp < ./WORDPRESS_DATABASE.sql
mysql -u WORDPRESS_USERNAME -p wp < ./WORDPRESS_DATABASE.sql

インポートの不具合

もし、phpMyAdminインポートの不具合があり、データーベースを再構築するならば、

ERROR 1062 (23000) at line 15199: Duplicate entry '0' for key 'wp_options.PRIMARY'

現在のデータベースを削除すると、その中のWordPressデータは消えます。
SQLの先頭を念入りに確認します。

head -30 ./WORDPRESS_DATABASE.sql

mysqlにログイン

mysql -u root -p
# データーベース、ユーザー名、権限を確認
mysql> SHOW DATABASES;
mysql> SELECT User, Host FROM mysql.user;

データベースを削除し、インポートし直します。

mysql> DROP DATABASE wp;

mysql> CREATE DATABASE wp \
 DEFAULT CHARACTER SET utf8mb4 \
 COLLATE utf8mb4_0900_ai_ci;

ユーザーを確認

mysql> SELECT user, host FROM mysql.user WHERE user = 'wp';

ユーザー作成と権限を設定

mysql> CREATE USER 'wp'@'localhost' IDENTIFIED BY '[password]';
mysql> GRANT ALL PRIVILEGES ON wp.* TO 'wp'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;

ユーザー権限を確認

mysql> SHOW GRANTS FOR 'wp'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;

シェルから

### mysql -u username -p database_name < dump_file.sql
$ mysql -u root -p wp < ./wp.sql
Enter password:
$ mysql -u wp -p wp < ./wp.sql
Enter password:
$ mysql -u wp -p wp -e "SHOW TABLES;"
Enter password: 
+---------------------------+
| Tables_in_wp              |
+---------------------------+
| pma__bookmark             |
| pma__central_columns      |
| pma__column_info          |
     途中略
| wp_cocoon_affiliate_tags  |
| wp_cocoon_function_texts  |
| wp_users                  |
+---------------------------+

utf8mb4_0900_ai_ci とは
https://qiita.com/seltzer/items/8b5d8a61591e72715d5b
解説、有難うございます。

utf8mb4:文字コード。UTF8で、マルチバイトを4バイトとする文字コードになります
0900:Unicodeのバージョン 9.00を示しています
ai:Accent Insensitiveの略称で、アクセントの違いを無視します
ci:Case Insensitiveの略称で、大文字と小文字の違いを無視します

エラー対処には、サーバー設定で対処します

phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています

mysqlにログイン

mysql -u root -p

phpMyAdmin の管理用テーブルが作成済みかを確認します。

USE phpmyadmin;
SHOW TABLES;
+------------------------+
| Tables_in_phpmyadmin   |
+------------------------+
| pma__bookmark          |
| pma__central_columns   |
| pma__column_info       |
| pma__designer_settings |
| pma__export_templates  |
| pma__favorite          |
| pma__history           |
| pma__navigationhiding  |
| pma__pdf_pages         |
| pma__recent            |
| pma__relation          |
| pma__savedsearches     |
| pma__table_coords      |
| pma__table_info        |
| pma__table_uiprefs     |
| pma__tracking          |
| pma__userconfig        |
| pma__usergroups        |
| pma__users             |
+------------------------+

pma__relation など必要なテーブルを確認します。

どうやら、phpMyAdmin が phpmyadmin データベースを「環境保管領域」として認識していない状態です。

/etc/phpmyadmin/config.inc.php を確認します。
このファイルは、phpMyAdmin が環境保管領域として使う phpmyadmin データベースの設定を指定しています。

sudo cp /etc/phpmyadmin/config.inc.php /etc/phpmyadmin/config.inc.php.bak

ファイルの該当部分を確認します。

sudo grep -nE "\$i|pmadb|relation|table_info|column_info|bookmarktable|history|recent|favorite" /etc/phpmyadmin/config.inc.php

77:    $cfg['Servers'][$i]['pmadb'] = $dbname;
78:    $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
79:    $cfg['Servers'][$i]['relation'] = 'pma__relation';
80:    $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
83:    $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
84:    $cfg['Servers'][$i]['history'] = 'pma__history';
88:    $cfg['Servers'][$i]['recent'] = 'pma__recent';
89:    $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
127:// $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
128:// $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
129:// $cfg['Servers'][$i]['relation'] = 'pma__relation';
130:// $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
133:// $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
134:// $cfg['Servers'][$i]['history'] = 'pma__history';
138:// $cfg['Servers'][$i]['recent'] = 'pma__recent';
139:// $cfg['Servers'][$i]['favorite'] = 'pma__favorite';

/etc/phpmyadmin/config.inc.phpにある、

/* Storage database and tables */
// $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
// $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
// $cfg['Servers'][$i]['relation'] = 'pma__relation';
// $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
// $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
// $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
// $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
// $cfg['Servers'][$i]['history'] = 'pma__history';
// $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
// $cfg['Servers'][$i]['tracking'] = 'pma__tracking';
// $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
// $cfg['Servers'][$i]['recent'] = 'pma__recent';
// $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
// $cfg['Servers'][$i]['users'] = 'pma__users';
// $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
// $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
// $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
// $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
// $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
// $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

この部分、行の先頭にある、”//”を削除して有効化する場合もありますが、

77:    $cfg['Servers'][$i]['pmadb'] = $dbname;
78:    $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
79:    $cfg['Servers'][$i]['relation'] = 'pma__relation';
80:    $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
83:    $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
84:    $cfg['Servers'][$i]['history'] = 'pma__history';
88:    $cfg['Servers'][$i]['recent'] = 'pma__recent';
89:    $cfg['Servers'][$i]['favorite'] = 'pma__favorite';

この部分が、重複設定にならないようにします。config.inc.phpを確認します。

sudo sed -n '65,95p' /etc/phpmyadmin/config.inc.php
/* Optional: User for advanced features */
$cfg['Servers'][$i]['controluser'] = $dbuser;
$cfg['Servers'][$i]['controlpass'] = $dbpass;

/* Optional: Advanced phpMyAdmin features */
$cfg['Servers'][$i]['pmadb'] = $dbname;
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';

‘pmadb’ や ‘relation’ などの設定は、されています。

/etc/phpmyadmin/config.inc.php の中から、phpMyAdmin のデータベース接続に使う変数が定義されているかを確認します。

sudo grep -nE '^\$db(user|pass|name|server|port)' /etc/phpmyadmin/config.inc.php
戻りが無し
$dbuser = 'phpmyadmin';
$dbpass = 'パスワード';
$dbname = 'phpmyadmin';

上記の指定がないので、phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっている?

mysql> SELECT User, Host FROM mysql.user WHERE User = 'phpmyadmin';
+------------+-----------+
| User       | Host      |
+------------+-----------+
| phpmyadmin | localhost |
+------------+-----------+

mysql> SHOW GRANTS FOR 'phpmyadmin'@'localhost';
+--------------------------------------------------------------------------------------+
| Grants for phpmyadmin@localhost                                                      |
+--------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `phpmyadmin`@`localhost`                                       |
| GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO `phpmyadmin`@`localhost` WITH GRANT OPTION |
+--------------------------------------------------------------------------------------+

phpmyadmin@localhost → あり
phpmyadmin.* → ALL PRIVILEGES
phpmyadmin DB → あり
pma__relation等 → あり
config.inc.php → pmadb設定あり

sudo grep -nE 'dbuser|dbpass|dbname|dbserver|dbport' /etc/phpmyadmin/config.inc.php
61:if (!empty($dbname)) {
65:    if (empty($dbserver)) $dbserver = 'localhost';

74:    $cfg['Servers'][$i]['controluser'] = $dbuser;
75:    $cfg['Servers'][$i]['controlpass'] = $dbpass;
77:    $cfg['Servers'][$i]['pmadb'] = $dbname;

config.inc.php 自身では $dbuser / $dbpass / $dbname を定義していません。

/* set phpmyadmin */                                                                                                         
$dbuser = 'phpmyadmin';
$dbpass = '         ';
$dbname = 'phpmyadmin';
$dbserver = 'localhost';
$dbport = '';
sudo php -r '
include "/etc/phpmyadmin/config.inc.php";
echo "dbname=" . ($dbname ?? "UNDEFINED") . PHP_EOL;
echo "dbuser=" . ($dbuser ?? "UNDEFINED") . PHP_EOL;
echo "dbserver=" . ($dbserver ?? "UNDEFINED") . PHP_EOL;
'
dbname=phpmyadmin
dbuser=
dbserver=localhost

pmadb は phpmyadmin を参照できていますが、環境保管領域へアクセスする controluser が空になっています。

/etc/phpmyadmin/config.inc.phpを編集します。
<?php この直下に追記します。

<?php
$dbuser = 'phpmyadmin';
$dbpass = '***********';
$dbname = 'phpmyadmin';
$dbserver = 'localhost';
$dbport = '';

config.inc.phpには、64行目で、
require(‘/etc/phpmyadmin/config-db.php’);
を実行しています。

/etc/phpmyadmin/config-db.php
$dbuser='';
$dbpass='';
$basepath='';
$dbname='phpmyadmin';
$dbserver='localhost';
$dbport='3306';
$dbtype='mysql';

/etc/phpmyadmin/config-db.phpを編集します。

sudo cp /etc/phpmyadmin/config-db.php /etc/phpmyadmin/config-db.php.bak
$dbuser='phpmyadmin';
$dbpass='実際のphpmyadminユーザーのパスワード';
$dbname='phpmyadmin';
sudo php -r '
include "/etc/phpmyadmin/config.inc.php";
echo "dbname=" . ($dbname ?? "UNDEFINED") . PHP_EOL;
echo "dbuser=" . ($dbuser ?? "UNDEFINED") . PHP_EOL;
echo "dbserver=" . ($dbserver ?? "UNDEFINED") . PHP_EOL;
'
dbname=phpmyadmin
dbuser=phpmyadmin
dbserver=localhost

phpMyAdmin にログインし直すと、「phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています」との表示は無くなりました。

REST API でエラーが発生しました

[REST API でエラーが発生しました] [サイトでループバックリクエストが完了できませんでした]

$ curl https://globe3.ddns.net/wp/wp-json/wp/v2/types/post?context=edit ← REST API エンドポイントに対して行う
curl: (28) Failed to connect to globe3.ddns.net port 443 after 132704 ms: Couldn't connect to server

タイムアウトしたのは、サーバー自身のドメイン名を解決できないらしい。
/etc/hostsには、

Your system has configured ‘manage_etc_hosts’ as True.
As a result, if you wish for changes to this file to persist then you will need to either.
a.) make changes to the master file in /etc/cloud/templates/hosts.debian.tmpl
b.) change or remove the value of ‘manage_etc_hosts’ in /etc/cloud/cloud.cfg or cloud-config from user-data

以上な記述があるので、/etc/cloud/templates/hosts.debian.tmpl に、次を追加

127.0.0.1 localhost globe3.ddns.net

ページキャッシュが検出されず、サーバーのレスポンスが遅くなっています

サーバーの応答時間の中央値は1,688ミリ秒でした。推奨されるしきい値600ミリ秒以下の時間でなければなりません。

PHP-FPM (FPM : FastCGI Process Manager)、php8.3-opcacheを設定して用います。

Ubuntuでは、PHP-FPMの設定ファイルは以下の場所に配置されています。

ファイル役割置き場所
php-fpm.confメインの設定ファイル/etc/php/8.3/fpm/php-fpm.conf
www.confデフォルトプールの設定/etc/php/8.3/fpm/pool.d/www.conf
php.iniPHP自体の設定/etc/php/8.3/fpm/php.ini
$ dpkg -l | grep "php8.3-opcache" ← opcacheを確認
$ sudo a2enmod proxy proxy_fcgi
$ sudo systemctl restart apache2
/etc/php/8.3/fpm/php.ini

[opcache]
zend_extension=/FULL PASS/opcache.so
opcache.enable=1
;;; opcache.enable_cli=0
opcache.enable_cli=1
;;; opcache.memory_consumption=128
opcache.memory_consumption=16
opcache.interned_strings_buffer=8
;;; opcache.max_accelerated_files=10000
opcache.max_accelerated_files=200
opcache.max_wasted_percentage=5
opcache.validate_timestamps=0
;;; opcache.revalidate_freq=2
opcache.revalidate_freq=60
opcache.optimization_level=0x7FFFBFFF
;;; opcache.file_cache=
opcache.file_cache=/var/tmp/php/opcache
;;; opcache.file_cache_only=0
opcache.file_cache_only=1
opcache.file_update_protection=2
$ sudo systemctl restart php8.3-fpm
/etc/apache2/conf-available/wp.conf

Alias /wp "/var/www/html/wp"
DirectoryIndex index.php index.html index.htm
<Directory "/var/www/html/wp">
    Options FollowSymLinks
    AllowOverride All
    Require all granted

    <FilesMatch \.php$>
        SetHandler "proxy:unix:/var/run/php/php8.3-fpm.sock|fcgi://localhost/"
    </FilesMatch>
</Directory>
$ sudo a2enconf wp
$ sudo systemctl reload apache2

サーバーがとても非力ならば、プラグインを用いましょう。

パーマリンク変更後のエラー表示

mod_rewriteを有効化
$ sudo a2enmod rewrite
S sudo systemctl restart apache2

WordPressディレクトリに次を有効化
Options FollowSymLinks
AllowOverride All

パスワードポリシー

MySQL 8.0 で、
8文字以上、小文字だけでもOK、数字不要、大文字不要、特殊文字不要。
にしたいなら、validate_password.policy を LOW にします。

mysql> SET GLOBAL validate_password.policy = LOW;

最小文字数 8文字、小文字 1文字以上、大文字 1文字以上、数字 1文字以上、特殊文字 1文字以上、ユーザー名は使えない。
にしたいなら、validate_password.policy を MEDIUM にします。

mysql> SET GLOBAL validate_password.policy = MEDIUM;

長さを8文字にするなら、

sql> mySET GLOBAL validate_password.length = 8;

確認は、

SHOW VARIABLES LIKE 'validate_password%';

コメント