ブログツール WordPressを Ubuntu に入れて使います。
Ubuntu + Apache2 +SSL + PHP + MySQL + WordPress を組み合わせます。
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
$ 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動作確認
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 ← これでmysqlに接続できない
$ sudo mysql -u root -p ← これでmysqlに接続できる
$ 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の設定を見直す。名前や権限を見直す。
エラー対処には、サーバー側設定で可能な限り対処したい
落ち穂拾い: [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
コメント