CentOS8でLAMP環境を作る
問題
CentOS8でさくっとLAMP環境を作りたい。
答え
リポジトリ追加
CentOS8の標準ではphp7.2がインストールされる。php7.2でよかったら、リポジトリの追加は不要。php7.4が欲しかったらremiリポジトリを追加する。epelリポジトリも追加される。
dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
パッケージインストール
Apache 2.4.37、MySQL 8.0.17、php(fpm版)をインストール。
dnf install httpd mod_ssl mysql mysql-server php74-php-cli php74-php-fpm php74-php-mysqlnd php74-php-opcache php74-php-mbstring postfix
dnfでインストールすると大体の設定がそのままで動くので、あまりすることがない。
メールの送信もしたいので postfix も追加。
Laravel用の環境には以下のパッケージもいずれ必要なので追加しておくとよい。
php74-php-pecl-zip php74-php-xml
Apache
CentOS8はデフォルトでeventMPMが有効になっている。
→ HTTP/2が有効にできる
# httpd -M | grep http2
http2_module (shared)
proxy_http2_module (shared)
httpsの設定したら、SSLEngine on の手前にでも以下を追記するとHTTP/2対応完了。
Protocols h2 http/1.1
自動起動
# systemctl enable httpd
MySQL
phpがMySQLの最新のパスワード形式 caching_sha2_password に対応していないが、CentOS8では最初から以下が設定されているので、このままで大丈夫。
[mysqld]
default_authentication_plugin=mysql_native_password
数値型のカラムに文字列を入れても怒られない今まで通りのルーズな設定が良ければ、sql_modeを調整する。
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION
自動起動
# systemctl enable mysqld
mysql_secure_installation を実行してrootのパスワードを設定したり初期設定をしておく。
デフォルトの文字コードはutf8mb4だし、何も設定を変えなくても普通に使える。
php-fpm
Apacheと連携する設定はデフォルトでされている様子。自動起動の設定をする。
# systemctl enable php74-php-fpm
php が Access denied で表示されないときは、下のselinuxの仕業。引き続きもう少し調整してrebootする。
selinux
状態の確認。Enforcingだと有効。
# getenforce
Enforcing
無効にするには、/etc/selinux/config を編集する。
# vi /etc/selinux/config
SELINUX=enforcing を SELINUX=disabled に書き換える。
firewalld
初期状態ではWebの通信は許可されていない。http、httpsを追加する。
# firewall-cmd --permanent --zone=public --add-service=http
success
# firewall-cmd --permanent --zone=public --add-service=https
success
再起動
selinux無効化など反映するために再起動する。
# reboot
コメント