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

RHEL 7がリリースされてから約5ヶ月、クラウドサービスでもCentOS 7のテンプレートが使用できるようになってきたので、僕がWebサーバーを構築する際のひととおりの設定をCentOS 7でも実施してみました。
Webサーバー構築に関わるCentOS 6からの変更点と、参考となる記事の情報をまとめます。

総合的には、以下の記事がとても参考になりました。

(参考)
・Getting Started with RHEL7
https://kazuhisya.netlify.com/2014/06/15/getting-started-with-rhel7/

使用したクラウドサービスとテンプレートは、AWSのAMI ‘CentOS 7 (x86_64) with Updates HVM’ by centos.orgと、IDCFクラウドの’CentOS 7.0 64-bit’です。

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

サービス管理

サービス管理がSysV/Init, Upstartから Systemdに変わりました。
サーバー構築、管理の担当者にとっては、これが一番大きな変更ではないでしょうか。
systemdのしくみやsystemctlコマンドについては、以下の記事やスライドが詳しいです。

・Linux女子部 systemd徹底入門
https://www.slideshare.net/enakai/linux-27872553

・CentOS7で使われているsystemctlについて少しまとめた
https://qiita.com/tukiyo3/items/092fc32318bd3d1a0846

・Systemdコマンド早見表(CentOS 7対応)
http://blog.yuryu.jp/2014/07/systemd-quick-guide.html

個人的には、’systemctl start httpd’ のように、start, stop, restartなどの動作を表す単語を末尾ではなく真ん中に入れなければならないことに、少しストレスを感じています。
systemctlコマンドに慣れるには少し時間がかかりそうですが、各サービスの起動を並列におこなうことでサーバーの起動が少し速くなるというメリットもあるとのことで、受け容れるしかありません。

net-tools

OSの最小構成インストールでは、net-toolsがインストールされないため、ifconfig, route, netstatコマンドなどが使用できません。

※今回使用したAWS, IDCFクラウドのテンプレートでは、net-toolsが含まれていました。

新しいコマンド群については、以下の記事が詳しいです。

・RHEL7/CentOS7でipコマンドをマスター
http://enakai00.hatenablog.com/entry/20140712/1405139841

ipコマンド、ssコマンドはCentOS 6でも使用できるので、今のうちに慣れておきたいと思います。

ネットワークインタフェースの管理

NetworkManagerの利用が推奨されるようになりました。
この変更については、以下の記事がわかりやすいです。

・NetworkManagerの設定変更、nmtuiとnmcliについてまとめたよ!
http://blog.yuryu.jp/2014/07/networkmanager-nmtui-nmcli.html

コマンドは複雑ですし、インタフェース名がeth形式ではないのが何とも気持ち悪いですね。

※AWSのAMIでは、NetworkManagerはデフォルトで無効となっており、これまでどおりのインタフェース設定となっていました。

ブートローダー

ブートローダーがgrubからgrub2に変更されました。

・CentOS 7 KVMゲストとしてインストール
http://www.torutk.com/projects/swe/wiki/CentOS_7_KVM%E3%82%B2%E3%82%B9%E3%83%88%E3%81%A8%E3%81%97%E3%81%A6%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

grub.confが/boot/grub2/grub.cfgに移動しましたが、このファイルは直接編集してはいけないそうです。

※AWSのAMIでは、CentOS 6と同じくgrubを使っているようで、/etc/grub/grub.confファイルがそのままありました。

IPv6の無効化

カーネルパラメータの設定でIPv6の無効化ができるようになりました。
これはRHEL 7/CentOS 7の新機能というよりは、Linuxカーネルの追加機能なのでしょう。
具体的な手順は以下が詳しいです。

・CentOS 7.0 – 初期設定!

https://www.mk-mode.com/octopress/2014/08/05/centos-7-0-initial-setting/

IPv6の無効化には賛否両論あるようですが、もし有効にするなら、IPv4と同じようにIPv6に関するセキュリティの設定を行うべきだと思います。

ファイルシステム

デフォルトのファイルシステムが、ext4からxfsに変更となりました。
xfsの特徴やユーティリティコマンドについては、ITproの連載記事「Red Hat Enterprise Linux 7がやってきた [ストレージ編] 」が詳しいです。

・第1回 高性能、高可用性備え進化するXFS
http://itpro.nikkeibp.co.jp/atcl/column/14/071500011/072800002/

・第3回 XFSの基本的な利用方法
http://itpro.nikkeibp.co.jp/atcl/column/14/071500011/072800004/

ふつうにサーバーを使っている分にはあまり気にしなくてもよいでしょうが、管理者は、特徴を押さえておくことと、フォーマット、リサイズ、ダンプ・リストアなどのコマンドが変わることは覚えておいたほうがよさそうです。

ホスト名の設定

ホスト名の設定ファイルが/etc/sysconfig/networkから、/etc/hostnameに変更となりました。
/etc/hostnameを直接編集しても変更されますが、ホスト名の確認や編集には、hostnamectlコマンドを使うことが推奨されているようです。

・[Linux][EC2] RHEL7でホスト名を変更する
https://cloudpack.media/6914

・RHEL7 Document, 3.3. Configuring Host Names Using hostnamectl
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/sec_configuring_host_names_using_hostnamectl

なお、AWS EC2では、cloud-initのデフォルト設定で、OS起動時にプライベートIPアドレスを基にしたホスト名に戻ってしまうため、その設定を無効にする必要があります。

/etc/cloud/cloud.cfgに、下記の行を追加します。

preserve_hostname: true

また、IDCFクラウドのテンプレートでは、OS起動時にスクリプトでTransient hostnameが自動的に設定されるようになっているので、そのスクリプトを無効にしてから、Static hostnameとTransient hostnameを設定する必要があります。

 # mv /etc/dhcp/dhclient.d/set_transient_hostname.sh \
    set_transient_hostname.sh.stop
 # chmod 644 set_transient_hostname.sh.stop

 # hostnamectl set-hostname <変更したいホスト名> --static
 # hostnamectl set-hostname <変更したいホスト名> --transient

タイムゾーンの設定

タイムゾーンの設定は、/etc/sysconfig/clockや/etc/localtimeの編集ではなく、timedatectlコマンドで行うことが推奨されているようです。

・[Linux] RHEL7でタイムゾーンを変更する
http://muramasa64.fprog.org/diary/?date=20140908#p01

 # timedatectl set-timezone Asia/Tokyo
 # timedatectl status

timedatectlコマンドでは、サーバー時刻の変更もできます。

システムロケール設定

システムロケールの設定ファイルが、/etc/sysconfig/i18nではなく/etc/locale.confに変更となりました。
これも、localectlコマンドで変更します。

・Red Hat EL7の基本設定(ロケールとタイムゾーン)
https://www.skyarch.net/blog/?p=247

 # localectl set-locale LANG=ja_JP.utf8
 # localectl status

ファイアウォール

firewalldというサービスがデフォルトとなり、iptablesとは併用できません。
iptablesの導入は、以下の記事が詳しいです。

・CentOS7, iptables設定でハマった
http://mosuke5.hateblo.jp/entry/2014/09/20/180326

iptablesを使用するには、firewalldを無効にして、iptables-servicesのインストールが必要です。
一方、firewalldの概要については、以下が詳しいです。

・CTC教育サービス 第36回 RHEL7の新しいファイアウォール機能「firewalld」 (中井悦司)
http://www.school.ctc-g.co.jp/columns/nakai/nakai36.html

なお、AWS AMIではfirewalldが有効、IDCFクラウドのテンプレートではfirewalldが無効となっていました。

iptablesがなくなる、というわけではなさそうなので、個人的には、firewalldを調査しつつ当面はiptablesを使って、もっと利用事例が出てきてから移行を検討しようかと考えています。
設定ファイルがxml形式というのがなんとなくイヤです。

NTPクライアント&サーバー

デフォルトがntpdではなくchronydとなりました。
chronyについては、以下の記事が詳しいです。

・新しいNTPクライアント&サーバ、chrony
https://qiita.com/yunano/items/7883cf295f91f4ef716b

AWS、IDCFクラウドのテンプレートでは、最初からタイムサーバーをセットした状態でchronyが動作しています。
ntpdのインストールも可能ですが、わざわざntpdに変更するのは余計な手間がかかりますし、chronyの設定はntpに似ていて理解しやすいと思いますので、CentOS 7ではchronydを使うことにします。

FTPサーバー vsftpd

vsftpdのバージョンが2.2から3.0になりました。
allow_writable_chroot, listenなど、パラメータやデフォルト値が少し違います。

Apache

Apacheのバージョンが2.2から2.4になりました。
Apache 2.4については、以下の記事など、すでに多くの情報があると思います。

・CentOS6.5 64bitにApache2.4.9をRPMからインストール
http://www.kakiro-web.com/linux/apache-install.html

モジュール構成が変わったのと、アクセス制御まわりの設定フォーマットの変更が大きいです。
Apache 2.4のMPMについては「eventがデフォルト」とのことですが、CentOS 7では、従来と同じくpreforkがデフォルトとなっていました。

event MPMを使用した場合はmod_phpが使用できませんが、PHP-FPMを使用することでPHPと連携することができます。
具体的な設定は以下の記事が詳しいです。

・Apache2.4+PHP-FPMのhttpd.confの個人的メモ
https://qiita.com/Hiraku/items/60ef1ff9801fa9945d43

MySQL

CentOSの標準リポジトリからMySQLがなくなり、代わりにMariaDBがインストール可能となりました。
MySQLは今後も開発が続きますし、あえてMariaDBを使う理由はありませんので、MySQLをインストールしたいですね。
MySQLをインストールするには、MySQL公式サイトのMySQLリポジトリを追加します。
具体的な手順は以下が詳しいです。

・CentOS7 64bitのyumリポジトリにMySQLを追加し、最新バージョンをインストール
http://www.kakiro-web.com/linux/mysql-yum-repository-install.html

なお、RHEL7/CentOS7向けのRemiリポジトリからもMySQLがなくなりました。

PHP

PHPのバージョンが5.3から5.4になりました。
RHEL7/CentOS7向けのRemiリポジトリでは、5.4, 5.5, 5.6の3種類が用意されているので、新しいバージョンが必要な場合は、そちらからインストールするとよいですね。

isdまとめ

CentOS 7を使用してLAMP構成のWebサーバーを構築するうえでの、CentOS 6からの変更点と参考となる記事の情報をまとめました。
2015年以降は少しずつCentOS 7の利用も増えていくと思いますので、firewalldなど、引き続き調査を進めます。

Follow me!