手前味噌で恐縮ですが、自作の LAMP環境 を検証する Docker Compose について。
イメージを CentOS7 ベースで構築しているので、いずれは AlmaLinux なり Rocky Linux なりに移行しなければならないことは分かっていました。
そこで、その以降を見据えて残り数日の命の CentOS8 で試験してみることにしました。なぜ AlmaLinux や Rocky Linux ではなくわざわざ CentOS8 かというと、いきなりそれらのOSに飛びついて何らかの不具合が発生したときに原因の切り分けで苦労するならば、まだ同じシリーズで差分が少ない (と想定される) CentOS8 で試験して、問題なければ次に進もう、という段階的な試験を想定したためです。
検証
docker run --name php7_cent8 -it centos:centos8 /bin/bash
まずはイメージを取得し、 bash に入ります。
Apache + PHP
最初は Apache + PHP 。こちらについては、以前 CentOS8 をインストールして遊んだときにremiリポジトリの入り方が CentOS7 とは異なることが分かっていたので、多少手を加える必要があるだろう、と踏んでいました。
# \cp -pf /usr/share/zoneinfo/Japan /etc/localtime
#
これは問題なし。
# dnf -y update && yum -y install epel-release sudo less iproute httpd-devel zip unzip openssl mod_ssl
## 略
Installed:
apr-1.6.3-12.el8.x86_64 apr-devel-1.6.3-12.el8.x86_64
apr-util-1.6.1-6.el8.x86_64 apr-util-bdb-1.6.1-6.el8.x86_64
apr-util-devel-1.6.1-6.el8.x86_64 apr-util-openssl-1.6.1-6.el8.x86_64
brotli-1.0.6-3.el8.x86_64 centos-logos-httpd-85.8-2.el8.noarch
cyrus-sasl-2.1.27-5.el8.x86_64 cyrus-sasl-devel-2.1.27-5.el8.x86_64
epel-release-8-11.el8.noarch expat-devel-2.2.5-4.el8.x86_64
groff-base-1.22.3-18.el8.x86_64 httpd-2.4.37-43.module_el8.5.0+1022+b541f3b1.x86_64
httpd-devel-2.4.37-43.module_el8.5.0+1022+b541f3b1.x86_64 httpd-filesystem-2.4.37-43.module_el8.5.0+1022+b541f3b1.noarch
httpd-tools-2.4.37-43.module_el8.5.0+1022+b541f3b1.x86_64 libdb-devel-5.3.28-42.el8_4.x86_64
libpath_utils-0.2.1-39.el8.x86_64 libpkgconf-1.4.2-1.el8.x86_64
libtalloc-2.3.2-1.el8.x86_64 mailcap-2.1.48-3.el8.noarch
mod_http2-1.15.7-3.module_el8.4.0+778+c970deab.x86_64 mod_ssl-1:2.4.37-43.module_el8.5.0+1022+b541f3b1.x86_64
ncurses-6.1-9.20180224.el8.x86_64 openldap-devel-2.4.46-18.el8.x86_64
perl-Carp-1.42-396.el8.noarch perl-Data-Dumper-2.167-399.el8.x86_64
perl-Digest-1.17-395.el8.noarch perl-Digest-MD5-2.55-396.el8.x86_64
perl-Encode-4:2.97-3.el8.x86_64 perl-Errno-1.28-420.el8.x86_64
perl-Exporter-5.72-396.el8.noarch perl-File-Path-2.15-2.el8.noarch
perl-File-Temp-0.230.600-1.el8.noarch perl-Getopt-Long-1:2.50-4.el8.noarch
perl-HTTP-Tiny-0.074-1.el8.noarch perl-IO-1.38-420.el8.x86_64
perl-IO-Socket-IP-0.39-5.el8.noarch perl-IO-Socket-SSL-2.066-4.module_el8.3.0+410+ff426aa3.noarch
perl-MIME-Base64-3.15-396.el8.x86_64 perl-Mozilla-CA-20160104-7.module_el8.3.0+416+dee7bcef.noarch
perl-Net-SSLeay-1.88-1.module_el8.3.0+410+ff426aa3.x86_64 perl-PathTools-3.74-1.el8.x86_64
perl-Pod-Escapes-1:1.07-395.el8.noarch perl-Pod-Perldoc-3.28-396.el8.noarch
perl-Pod-Simple-1:3.35-395.el8.noarch perl-Pod-Usage-4:1.69-395.el8.noarch
perl-Scalar-List-Utils-3:1.49-2.el8.x86_64 perl-Socket-4:2.027-3.el8.x86_64
perl-Storable-1:3.11-3.el8.x86_64 perl-Term-ANSIColor-4.06-396.el8.noarch
perl-Term-Cap-1.17-395.el8.noarch perl-Text-ParseWords-3.30-395.el8.noarch
perl-Text-Tabs+Wrap-2013.0523-395.el8.noarch perl-Time-Local-1:1.280-1.el8.noarch
perl-URI-1.73-3.el8.noarch perl-Unicode-Normalize-1.25-396.el8.x86_64
perl-constant-1.33-396.el8.noarch perl-interpreter-4:5.26.3-420.el8.x86_64
perl-libnet-3.11-3.el8.noarch perl-libs-4:5.26.3-420.el8.x86_64
perl-macros-4:5.26.3-420.el8.x86_64 perl-parent-1:0.237-1.el8.noarch
perl-podlators-4.11-1.el8.noarch perl-threads-1:2.21-2.el8.x86_64
perl-threads-shared-1.58-2.el8.x86_64 pkgconf-1.4.2-1.el8.x86_64
pkgconf-m4-1.4.2-1.el8.noarch pkgconf-pkg-config-1.4.2-1.el8.x86_64
sscg-2.3.3-14.el8.x86_64 sudo-1.8.29-7.el8_4.1.x86_64
unzip-6.0-45.el8_4.x86_64 zip-3.0-23.el8.x86_64
Complete!
OK。
# dnf -y upgrade
## 略
Upgraded:
epel-release-8-13.el8.noarch
Complete!
特に大きな差分もなさそうです。OK。
remiリポジトリ
# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-8.rpm
Retrieving http://rpms.famillecollet.com/enterprise/remi-release-8.rpm
warning: /var/tmp/rpm-tmp.hlvLxe: Header V4 RSA/SHA256 Signature, key ID 5f11735a: NOKEY
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:remi-release-8.5-2.el8.remi ################################# [100%]
# rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi2021
#
OK。 CentOS8 用のリポジトリに切り替えました。鍵についてはすぐ RPM-GPG-KEY-remi2022
にしなければならないでしょうけど。
dnf
# dnf config-manager --enable remi && dnf config-manager --enable remi-php74
No such command: config-manager. Please use /usr/bin/dnf --help
It could be a DNF plugin command, try: "dnf install 'dnf-command(config-manager)'"
remi-php74
に指定で躓くかと思いきや、そもそも config-manager
がない、と?
元々は yum-config-manager
だったのですが、 CentOS8 であれば dnf
ベースの方が良いだろう、ということで置き換えてはみましたが、ダメですか……。
こちらより dnf install -y dnf-plugins-core
してみます。
# dnf install dnf-plugins-core
## 略
Installed:
dbus-glib-0.110-2.el8.x86_64 dnf-plugins-core-4.0.21-3.el8.noarch python3-dateutil-1:2.6.1-6.el8.noarch
python3-dbus-1.2.4-15.el8.x86_64 python3-dnf-plugins-core-4.0.21-3.el8.noarch python3-six-1.11.0-8.el8.noarch
Complete!
OK。
remi + PHP
# dnf config-manager --enable remi && dnf config-manager --enable remi-php74
Error: No matching repo to modify: remi-php74.
……やはり remi-php74
で引っかかりましたか。
……想定していたものとは少し違うやり方ですが、試してみましょう。
# dnf module reset php
## 略
Remi's RPM repository for Enterprise Linux 8 - x86_64 598 kB/s | 3.9 MB 00:06
Last metadata expiration check: 0:00:03 ago on DDD dd mmm yyyy hh:ii:ss AM UTC.
Dependencies resolved.
Nothing to do.
Complete!
OK。
# dnf module install -y php:remi-7.4
## 略
Installed:
libedit-3.1-23.20170329cvs.el8.x86_64 libxslt-1.1.32-6.el8.x86_64
nginx-filesystem-1:1.14.1-9.module_el8.0.0+184+e34fea82.noarch oniguruma5php-6.9.7.1-1.el8.remi.x86_64
php-cli-7.4.27-1.el8.remi.x86_64 php-common-7.4.27-1.el8.remi.x86_64
php-fpm-7.4.27-1.el8.remi.x86_64 php-json-7.4.27-1.el8.remi.x86_64
php-mbstring-7.4.27-1.el8.remi.x86_64 php-xml-7.4.27-1.el8.remi.x86_64
Complete!
# php --version
PHP 7.4.27 (cli) (built: Dec 14 2021 17:17:06) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
OK。入りましたね。これに従い該当箇所を書き換えます。
# enable repository remi & remi-php74
#RUN dnf config-manager --enable remi && dnf config-manager --enable remi-php74
# disable default module
RUN dnf module reset -y php
RUN dnf module install -y php:remi-7.4
## 略
# disable repository remi & remi-php74
#RUN dnf config-manager --disable remi && dnf config-manager --disable remi-php74
config-manager
によるリポジトリ使用のオン・オフの切り替えを削除しました。
# dnf -y install php php-devel php-pdo php-mysqlnd php-mbstring php-gd php-pear php-pecl-apc-devel zlib-devel php-xml php-mcrypt php-pecl-xdebug
## 略
Installed:
autoconf-2.69-29.el8.noarch automake-1.16.1-7.el8.noarch
cmake-filesystem-3.20.2-4.el8.x86_64 cpp-8.5.0-4.el8_5.x86_64
dejavu-fonts-common-2.35-7.el8.noarch dejavu-sans-fonts-2.35-7.el8.noarch
emacs-filesystem-1:26.1-7.el8.noarch fontconfig-2.13.1-4.el8.x86_64
fontpackages-filesystem-1.44-22.el8.noarch freetype-2.9.1-4.el8_3.1.x86_64
fribidi-1.0.4-8.el8.x86_64 gcc-8.5.0-4.el8_5.x86_64
gcc-c++-8.5.0-4.el8_5.x86_64 gd3php-2.3.3-4.el8.remi.x86_64
glibc-devel-2.28-164.el8.x86_64 glibc-headers-2.28-164.el8.x86_64
graphite2-1.3.10-10.el8.x86_64 harfbuzz-1.7.5-3.el8.x86_64
isl-0.16.1-6.el8.x86_64 jbigkit-libs-2.1-14.el8.x86_64
kernel-headers-4.18.0-348.2.1.el8_5.x86_64 keyutils-libs-devel-1.5.10-9.el8.x86_64
krb5-devel-1.18.2-14.el8.x86_64 libX11-1.6.8-5.el8.x86_64
libX11-common-1.6.8-5.el8.noarch libXau-1.0.9-3.el8.x86_64
libXpm-3.5.12-8.el8.x86_64 libcom_err-devel-1.45.6-2.el8.x86_64
libimagequant-2.12.5-1.el8.x86_64 libjpeg-turbo-1.5.3-12.el8.x86_64
libkadm5-1.18.2-14.el8.x86_64 libmcrypt-2.5.8-26.el8.x86_64
libmpc-1.1.0-9.1.el8.x86_64 libpng-2:1.6.34-5.el8.x86_64
libraqm-0.7.0-4.el8.x86_64 libselinux-devel-2.9-5.el8.x86_64
libsepol-devel-2.9-3.el8.x86_64 libsodium-1.0.18-2.el8.x86_64
libstdc++-devel-8.5.0-4.el8_5.x86_64 libtiff-4.0.9-20.el8.x86_64
libtool-2.4.6-25.el8.x86_64 libverto-devel-0.3.0-5.el8.x86_64
libwebp-1.0.0-5.el8.x86_64 libxcb-1.13.1-1.el8.x86_64
libxcrypt-devel-4.1.1-6.el8.x86_64 libxml2-devel-2.9.7-9.el8_4.2.x86_64
m4-1.4.18-7.el8.x86_64 make-1:4.2.1-10.el8.x86_64
openssl-devel-1:1.1.1k-5.el8_5.x86_64 pcre2-devel-10.32-2.el8.x86_64
pcre2-utf16-10.32-2.el8.x86_64 pcre2-utf32-10.32-2.el8.x86_64
perl-Thread-Queue-3.13-1.el8.noarch php-7.4.27-1.el8.remi.x86_64
php-devel-7.4.27-1.el8.remi.x86_64 php-fedora-autoloader-1.0.1-2.el8.remi.noarch
php-gd-7.4.27-1.el8.remi.x86_64 php-mysqlnd-7.4.27-1.el8.remi.x86_64
php-opcache-7.4.27-1.el8.remi.x86_64 php-pdo-7.4.27-1.el8.remi.x86_64
php-pear-1:1.10.13-1.el8.remi.noarch php-pecl-apcu-5.1.21-1.el8.remi.7.4.x86_64
php-pecl-apcu-devel-5.1.21-1.el8.remi.7.4.x86_64 php-pecl-mcrypt-1.0.4-1.el8.remi.7.4.x86_64
php-pecl-xdebug-2.9.8-1.el8.remi.7.4.x86_64 php-process-7.4.27-1.el8.remi.x86_64
php-sodium-7.4.27-1.el8.remi.x86_64 xz-devel-5.2.4-3.el8.x86_64
zlib-devel-1.2.11-17.el8.x86_64
Complete!
OK。
# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && php composer-setup.php && php -r "unlink('composer-setup.php');" && mv composer.phar /usr/local/bin/composer
All settings correct for using Composer
Downloading...
Composer (version 2.2.1) successfully installed to: /etc/yum.repos.d/composer.phar
Use it: php composer.phar
# composer --version
Composer version 2.2.1 2021-12-22 22:21:31
Composer も入りました。
# mkdir /var/log/php
# chown apache /var/log/php
# chmod 755 /var/log/php
# mkdir -p /etc/ssl/private
まあこの辺りは普通に。
SSL
# openssl req -new -newkey rsa:2048 -nodes -out /etc/ssl/private/server.csr -keyout /etc/ssl/private/server.key -subj "/C=/ST=/L=/O=/OU=/CN=*.lvh.me"
## 略
# openssl x509 -days 365 -req -signkey /etc/ssl/private/server.key -in /etc/ssl/private/server.csr -out /etc/ssl/private/server.crt
Signature ok
subject=CN = *.lvh.me
Getting Private key
OK。
Apache の設定ファイル
ssl.conf
# cat /etc/httpd/conf.d/ssl.conf
## 略
表示させたSSL用の設定を現行のものと差し替えます。ただし、現行の設定をなるべく引き継ぐように。これは他の設定ファイルも同様です。
- SSLRandomSeed startup file:/dev/urandom 256
- SSLRandomSeed connect builtin
- SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA
現行にあったこれらの行は削除。
+ SSLHonorCipherOrder on
これは新しく追加されていました。
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
プロトコルについては念のため現行の設定を引き継ぎ。流石にもう SSLv2 なんて存在しないでしょうけど……。
- <Files ~ "\.(cgi|shtml|phtml|php3?)$">
+ <FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
- </Files>
+ </FilesMatch>
微妙にディレクティブの表現が変わっていますが、影響はなさそうなので変更を受け入れます。
php.conf
# cat /etc/httpd/conf.d/php.conf
## 略
# Redirect to local php-fpm if mod_php (5 or 7) is not available
<IfModule !mod_php5.c>
<IfModule !mod_php7.c>
# Enable http authorization headers
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
<FilesMatch \.(php|phar)$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
</IfModule>
</IfModule>
こちらは最後の部分に追記がありますね。これはそのまま受け入れ。
php.ini
# cat /etc/php.ini
## 略
こちらも設定を引き継ぎ、といっても現行の設定と変更点はなく(自前の設定を引き継いだ) 差分としてはコメントの文字列くらい。
AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using 192.0.2.1. Set the ‘ServerName’ directive globally to suppress this message
Apache を起動しようとしたところ、
AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using 192.0.2.1. Set the ‘ServerName’ directive globally to suppress this message
のエラーメッセージがログに記録されて起動してこない現象に遭遇。
そういえば元々の Dockerfile には記述していましたが、 httpd.conf
への追記をしていませんでした。
echo ServerName www.example.com:80 >> /etc/httpd/conf/httpd.conf
これでOK。
# httpd -v
Server version: Apache/2.4.37 (centos)
Server built: Nov 12 2021 04:57:27
バージョンも拾えました。
(2)No such file or directory: AH02454: FCGI: attempt to connect to Unix domain socket /run/php-fpm/www.sock (*) failed
これで Apache も起動してきたのでブラウザで表示確認、ということで phpinfo()
でも表示させようかとファイルを用意して curl
してみると……
Service Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
503エラーが出てしまいました。
(2)No such file or directory: AH02454: FCGI: attempt to connect to Unix domain socket /run/php-fpm/www.sock (*) failed
Apache のエラーログには上述のログが記録されていました。
今までとは異なる方法で PHP をインストールしたら、どうやら php-fpm (CGIモード) で動作しようとしてしまっているようです。
今回の環境ではCGI版かモジュール版かはあまり考慮しておらず、Webサーバも Apache のためモジュール版でも良いと判断。
動作を切り替えます。
# less /etc/httpd/conf/httpd.conf
## 略
Include conf.modules.d/*.conf
念のためモジュール読み込みの記述があることを確認。
# ls /etc/httpd/conf.modules.d/
00-base.conf 00-lua.conf 00-optional.conf 00-ssl.conf 01-cgi.conf 10-proxy_h2.conf README
00-dav.conf 00-mpm.conf 00-proxy.conf 00-systemd.conf 10-h2.conf 15-php.conf
関係しそうなのは 00-mpm.conf
, 01-cgi.conf
, 15-php.conf
辺りでしょうか。
# less /etc/httpd/conf.modules.d/15-php.conf
# Cannot load both php5 and php7 modules
<IfModule !mod_php5.c>
<IfModule prefork.c>
LoadModule php7_module modules/libphp7.so
</IfModule>
</IfModule>
ここはそのまま。
# less /etc/httpd/conf.modules.d/01-cgi.conf
# This configuration file loads a CGI module appropriate to the MPM
# which has been configured in 00-mpm.conf. mod_cgid should be used
# with a threaded MPM; mod_cgi with the prefork MPM.
<IfModule mpm_worker_module>
LoadModule cgid_module modules/mod_cgid.so
</IfModule>
<IfModule mpm_event_module>
LoadModule cgid_module modules/mod_cgid.so
</IfModule>
<IfModule mpm_prefork_module>
LoadModule cgi_module modules/mod_cgi.so
</IfModule>
ここもそのまま。
# less /etc/httpd/conf.modules.d/00-mpm.conf
# Select the MPM module which should be used by uncommenting exactly
# one of the following LoadModule lines. See the httpd.conf(5) man
# page for more information on changing the MPM.
# prefork MPM: Implements a non-threaded, pre-forking web server
# See: http://httpd.apache.org/docs/2.4/mod/prefork.html
#
# NOTE: If enabling prefork, the httpd_graceful_shutdown SELinux
# boolean should be enabled, to allow graceful stop/shutdown.
#
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
# worker MPM: Multi-Processing Module implementing a hybrid
# multi-threaded multi-process web server
# See: http://httpd.apache.org/docs/2.4/mod/worker.html
#
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
# event MPM: A variant of the worker MPM with the goal of consuming
# threads only for connections with active processing
# See: http://httpd.apache.org/docs/2.4/mod/event.html
#
LoadModule mpm_event_module modules/mod_mpm_event.so
変更するのはここ。
- #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
+ LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
- LoadModule mpm_event_module modules/mod_mpm_event.so
# LoadModule mpm_event_module modules/mod_mpm_event.so
上述のうち2ヶ所を反転させます。
これでOK。起動も確認できました。
テンプレートとして上述を反転させた 00-mpm.conf
を用意し、エントリポイントでファイルコピーして設定を上書きすることで対処しました。
最終的に AlmaLinux の Docker Compose を作成して起動し、ブラウザで該当の PHPファイル にアクセスし、 phpinfo()
の画面が表示されることを確認できました。OK。
SSLCertificateFile: file ‘/etc/pki/tls/certs/localhost.crt’ does not exist or is empty
上述のエラーの他に
SSLCertificateFile: file ‘/etc/pki/tls/certs/localhost.crt’ does not exist or is empty
localhost のSSL証明書がない、というエラーにも遭遇しました。
なければ作れば良いだけ、上述で
echo ServerName www.example.com:80 >> /etc/httpd/conf/httpd.conf
としているので、このダミードメインを使います。
# openssl req -new -newkey rsa:2048 -nodes -out /etc/pki/tls/certs/localhost.csr -keyout /etc/pki/tls/private/localhost.key -subj "/C=/ST=/L=/O=/OU=/CN=www.example.com"
## 略
# openssl x509 -days 365 -req -signkey /etc/pki/tls/private/localhost.key -in /etc/pki/tls/certs/localhost.csr -out /etc/pki/tls/certs/localhost.crt
Signature ok
subject=CN = www.example.com
Getting Private key
これでOK。 ssl.conf
には記述はあるのですが……。
MySQL
次に MySQL 側を。こちらはほぼ手を加える必要はないという想定です。
# dnf localinstall https://dev.mysql.com/get/mysql80-community-release-el8-2.noarch.rpm
## 略
Package mysql80-community-release-el8-2.noarch is already installed.
Dependencies resolved.
Nothing to do.
Complete!
CentOS8 用ということでリポジトリの入れ方を少し変更。
# ls /etc/yum.repo.d/
CentOS-Linux-AppStream.repo CentOS-Linux-Media.repo epel-testing.repo
CentOS-Linux-BaseOS.repo CentOS-Linux-Plus.repo mysql-community.repo
CentOS-Linux-ContinuousRelease.repo CentOS-Linux-PowerTools.repo mysql-community-source.repo
CentOS-Linux-Debuginfo.repo CentOS-Linux-Sources.repo remi-modular.repo
CentOS-Linux-Devel.repo epel-modular.repo remi.repo
CentOS-Linux-Extras.repo epel-playground.repo remi-safe.repo
CentOS-Linux-FastTrack.repo epel.repo
CentOS-Linux-HighAvailability.repo epel-testing-modular.repo
mysql-community.repo
, mysql-community-source.repo
の2つが追加されたことを確認。
# dnf module disable mysql
## 略
Complete!
デフォルトの MySQL がいると邪魔になるので無効化して
# dnf -y install mysql-community-devel mysql-community-server
## 略
Installed:
mysql-community-client-8.0.27-1.el8.x86_64 mysql-community-client-plugins-8.0.27-1.el8.x86_64
mysql-community-common-8.0.27-1.el8.x86_64 mysql-community-devel-8.0.27-1.el8.x86_64
mysql-community-libs-8.0.27-1.el8.x86_64 mysql-community-server-8.0.27-1.el8.x86_64
net-tools-2.0-0.52.20160912git.el8.x86_64
Complete!
インストール完了。
# mysqld --version
/usr/sbin/mysqld Ver 8.0.27 for Linux on x86_64 (MySQL Community Server - GPL)
デフォルトでは 8.0.26
だったバージョンが地味に 8.0.27
に上がりました。
# grep 'temporary password' /var/log/mysqld.log
yyyy-mm-ddThh:ii:ss.zzzzzzZ 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: XXXXXXXXXXXX
初期パスワードの出現位置が半角スペース区切りで13番目であることを確認。これはエントリポイントで awk
を使って抽出、初期パスワードを環境変数の値で書き換える処理で使用するため個人的には重要ポイント。ここは変更しなくて良さそうです。
# cat /etc/my.cnf
[mysqld]
## 略
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
デフォルトで4つパラメータが指定されています。うち3つはテンプレートの設定ファイルに記述がされているので不要、 pid-file
だけ現時点では指定がないため、これだけ base.cnf
に移植します。
/etc/my.cnf
には上述4つを削除した代わりに !includedir /etc/my.cnf.d
を末尾に追加したものを現行の my.cnf
と差し替え。
これで MySQL 側は良さそうです。
なお、 phpMyAdmin は公式イメージをそのまま使っているので変更なし。
以上で一通り動作検証できたので、これをベースに AlmaLinux 用に書き換えれば良さそうです。
参考
Docker
AlmaLinux
dnf
- Almalinuxにterraformコマンドをyumで導入するの巻 – TrippyBoyの愉快な日々
- linux – DNF missing config-manager command – Stack Overflow
remi
AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using 192.0.2.1. Set the ‘ServerName’ directive globally to suppress this message
PHP
(2)No such file or directory: AH02454: FCGI: attempt to connect to Unix domain socket /run/php-fpm/www.sock (*) failed
- apache – No such file or directory: AH02454: FCGI: attempt to connect to Unix domain socket /var/run/php/php5.6-fpm.sock (*) failed – Stack Overflow
- CentOSにApacheとPHP入れてPHPファイルを表示しようとしたら503エラー Output48
- php – amazon-linux2でエラーAH02454やAH01079などが出てhttpdがうまく起動しません – スタック・オーバーフロー
php-fpm
SSLCertificateFile: file ‘/etc/pki/tls/certs/localhost.crt’ does not exist or is empty
- SSL/TLS | 初心者向けプログラミング講座
- いつの間にか作られてる /etc/pki/tls/certs/localhost.crt と /etc/pki/tls/private/localhost.key の謎 | ハックノート