ブログツール 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.ini | Apache + mod_php | Apacheプロセス内でPHPを動かす |
| /etc/php/8.3/fpm/php.ini | PHP-FPM | Apache/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.ini | PHP自体の設定 | /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%';


コメント