CentOS 8のWebサーバー構築に関わる変更点

isdはじめに

2019年9月に、CentOS 8 がリリースされました。
各クラウドサービスではなかなかテンプレートOSがリリースされないので、Oracle VM VirtualBox 上の仮想マシンに CentOS 8 をインストールし、Webサーバー構築のひととおりの設定を実施してみました。

僕がWebサーバーを構築する際に気になった CentOS 7 からの変更点をまとめます。

isdWebサーバー構築に関わる変更点

パッケージ管理システム

yum から dnf に変更となりました。
これが CentOS 8 の一番大きな変更点でしょうか。
dnf コマンドと yum コマンドは仕様がほぼ同じですし、yum コマンドは dnf コマンドにエイリアスされているので、ほぼ、これまでと同じように使えるかと思います。

yum と dnf の違いは、以下の記事が詳しいです。

・yumからDNFへの移行 – Qiita
https://qiita.com/yunano/items/eedd3da40d67394881a2

パケットフィルタ―

パケットフィルタ―のバックエンドが iptables (netfilter) から nftables に変更となりました。
フロントエンドのデフォルトは、CentOS 7 と同様、firewalld です。
フロントエンドとして iptables, firewalld, nftables を使用できますが、どれを使用してもバックエンドは nftables となります。

nftables のしくみや、iptables, firewalld との互換性については、以下の記事が詳しいです。

・Linuxにおける新たなパケットフィルタリングツール「nftables」入門 – さくらのナレッジ
https://knowledge.sakura.ad.jp/22636/

・Red Hat Enterprise Linux 8 新機能をわかりやすく解説【RHEL8】 – Hacker’s High
https://hackers-high.com/linux/rhel8-new-features/

ApacheのMPM

CentOS 8 リポジトリの Apache のメジャーバージョンは CentOS 7 と同じ 2.4 ですが、MPM のデフォルトが prefork から event に変更となりました。

※もともと、Apache 2.4 のデフォルトは event でしたが、CentOS 7 向けRPMパッケージでは、prefork となっていました。

event は prefork と違って、マルチスレッドで動作します。
PHP との連携に関しては、event の場合、スレッドセーフではない mod_php は使用できないため、PHP-FPM + mod_proxy_fcgi を使用することになります。

なお、CentOS 8 リポジトリの Apache 2.4 は、マイナーバージョンが上がっているので、ついに HTTP/2 が使用できるようになります。
ただし、HTTP/2 はマルチスレッドで動作しているそうで、prefork では使用できません。

「静的ファイル配信と動的処理の分離」による効率化と、HTTP/2の採用というメリットがあるので、CentOS 8 の Apache 2.4 では、event MPM + PHP-FPM + mod_proxy_fcgi を使用したほうがよさそうです。

MySQL

CentOS リポジトリに MySQL が復活しました!
MySQL 8.0 をインストールできます。

、、、ですが、インストールしてみたところ、mysql コマンドが日本語入力に対応していないため、僕はこれまでどおり、MySQL オフィシャルのリポジトリからインストールすることにします。

※mysql コマンドが日本語入力できないのは、使用しているモジュールの問題のようですが、このためだけにモジュールをインストールするのは面倒なので。

(参考)
・MySQLクライアントに日本語が入力できない理由 – Suzna Developer Blog
https://developer.suzna.com/entry/2018/04/23/103928

MySQL オフィシャルリポジトリからインストールした MySQL 8.0 の mysql コマンドは、日本語入力が使用できます。

screen

愛用している screen コマンドが、CentOS リポジトリには含まれなくなりました。
残念ですが、EPELリポジトリからインストールしました。

 # dnf install epel-release
 # dnf --enablerepo=epel install screen

 

テキストブラウザ elinks, lynx

サーバーからインターネットへのアクセス確認や、Webサイトの簡単な動作確認として、サーバー上で動作するテキストブラウザ elinks, lynx を使用しています。

その elinks, lynx が、CentOS 8 では、CentOS の PowerTools リポジトリに移行しました。
PowerTools リポジトリはデフォルトでは無効となっているので、dnf コマンドで以下のように、’–enablerepo=PowerTools’ をつけてインストールする必要があります。

 # dnf --enablerepo=PowerTools install elinks lynx

 

PowerTools リポジトリには、xxx-devel パッケージも多く含まれます。
以下のように、デフォルトで有効化してしまってもよいかもしれません。

 # dnf config-manager --enable PowerTools

 

vim

vim の設定ファイルが .vimrc ではなく .virc に変更となりました。
これは CentOS 8 の変更というより、vim の仕様変更でしょうね。
 

(2020.10.8追記)
これは間違っていました。

正しくは、
「vi (vim-minimal, /usr/bin/vi) は、.vircを参照するようになった。」
でした。

vim (vim-enhanced, /usr/bin/vim) は、これまで同様、.vimrcを参照します。

vi, vimがどの設定を参照するかは、–versionオプションで確認できます。

 # vim --version

...
      システム vimrc: "/etc/vimrc"
      ユーザー vimrc: "$HOME/.vimrc"
   第2ユーザー vimrc: "~/.vim/vimrc"
       ユーザー exrc: "$HOME/.exrc"
  デフォルトファイル: "$VIMRUNTIME/defaults.vim"
       省略時の $VIM: "/etc"
省略時の $VIMRUNTIME: "/usr/share/vim/vim80"
...

 # vi --version

...
   system vimrc file: "/etc/virc"
     user vimrc file: "$HOME/.virc"
 2nd user vimrc file: "~/.vim/virc"
      user exrc file: "$HOME/.exrc"
       defaults file: "$VIMRUNTIME/defaults.vim"
  fall-back for $VIM: "/etc"
...

 

なお、/etc/profile.d/vim.sh により、UIDが200以上のユーザーは、vi が vimにエイリアスされているので、vi (vim-minimal) を使用するユーザーは、実質的には root ユーザーのみだと思われます。

(参考)
・CentOS8 (Minimum) インストールしてとんでもなかったこと一覧 – NorthPage
https://inaba-serverdesign.jp/blog/20191226/centos8.html
(2020.10.8追記ここまで)


これぐらいでしょうか。
本番環境を構築・運用すれば、もっと増えるかもしれません。
気づいたことがあれば、追記します。

isdまとめ

CentOS 8 で、僕がWebサーバーを構築するうえで気になった CentOS 7 からの変更点をまとめました。
他の方も書かれていますが、構築・運用においては、CentOS 6 から 7 への変更よりはとまどうことが少なく、影響が小さい印象です。

CentOS 6 は、2020年11月でサポートが終了となります。
CentOS 7 も、2024年6月でサポートが終了となり、あと4年ぐらいしかありません。
ですので、CentOS 6 からアップデートするなら、CentOS 8 を選択するケースが多いでしょう。
2020年は、CentOS 8 の採用が進みそうです。
 

isd参考記事

CentOS 8 (RHEL 8) の新機能や CentOS 7 との違いについては、以下の記事も参考になりました。
ありがとうございました。

・Red Hat Enterprise Linux 8 新機能をわかりやすく解説【RHEL8】- HACKER’S HIGH
https://hackers-high.com/linux/rhel8-new-features/

・CentOS 8.0をインストールしてみた – 外道父の匠
http://blog.father.gedow.net/2019/09/26/centos8/

・Red Hat Enterprise Linux 8.x と 7.x の違いまとめ – たくメモ
https://takumi9942.net/blog/?p=1680

・CentOS8 (Minimum) インストールしてとんでもなかったこと一覧 – NorthPage
https://north.thco.mp/2019/09/26/centos8-minimum/
 

(関連記事)
・AlmaLinux 9とAmazon Linux 2023の雑感~サーバー構築の観点で
https://inaba-serverdesign.jp/blog/20230906/almalinux9-amazonlinux2023.html
 

Follow me!