SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

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

関連するメモ

コメント