RHEL7 基本セットアップ



RedHat Enterprise Linux (以下、RHEL) 7系のインストールに関する自分用の基本的な設定メモです。趣味成分が多く含まれます。
実際のインストールの際にはインストール要件をよく確認し、適宜設定値を置き換える必要があります。

インストールメディアの入手

以下からインストール用メディアを入手します。ローカルリポジトリ構築(後述)のため、DVD iso (4 GB) というリンクからファイルを落としておきます。
https://developers.redhat.com/products/rhel/download

インストール

インストールメディアをマシンにセットしてメディアを起動します。画像では画面が見切れる問題に対処するため、解像度指定を行っています。
解像度指定方法: Install Red Hat Enterprise Linux 7.3 を選択した状態でTabキーを押し、画面下部に表示される文字列の後ろに resolution=1280x768と追記した上でEnterキーを押す。

インストール言語を日本語にします。

幾つか設定項目がありますが、「ネットワークとホスト名」「時刻と日付」「インストール先」の順で基本的な設定を行います。

ネットワークとホスト名

ホスト名とIPアドレス割り当てを行います。ネットワーク設定は環境により異なるので、画像は参考程度にして下さい。

時刻と日付

ネットワークが問題なく設定されていればNTPが利用可能です。ここでは日本時間にタイムゾーンを設定の上、日本に存在するタイムサーバ ntp.nict.jp と同期させておきます。

インストール先

自動構成のままインストールすると/homeにものすごい量を割り当てるという変なパーティション設定にされてしまうため、必ずカスタムしましょう。
カーネルが配置される /boot 領域は512MB程度のext4、ルートパーティションとして残り全てをxfsで割り当てました。ごく稀にファイルシステムがxfsに対応していないソフトウェアがあるので、やり直しが怖い人は全部ext4で組んでおくといいと思います。

「swapパーティションは?」と言われるかもしれませんが、近年は仮想環境に構築することがほとんどであり、物理メモリ量が変動することを考慮しswapファイルとして柔軟に設定できるようにします。よってこの時点ではswapパーティションは作らず、swapファイルとして後からマウントすることにします。

インストール開始

以上の設定が完了したら、インストールを開始します。rootパスワードはインストール中に設定しておきましょう。

初期セットアップ

インストール完了後はSSHアクセス可能となります。

サブスクリプション紐づけ

RHELは使用にあたりサブスクリプションが必要になります。サブスクリプションを保有しているRedHatアカウントを用意して下さい。

# subscription-manager register --auto-attach
登録中: subscription.rhsm.redhat.com:443/subscription
ユーザー名: ※サブスクリプションを所有しているRedHatアカウント名を入力
パスワード: ※パスワードを入力
このシステムは次の ID で登録されました: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
インストール済み製品の現在の状態:
製品名: Red Hat Enterprise Linux Server
状態:   サブスクライブ済み

メディアローカルリポジトリ構築

インストールメディアにはよく導入されるソフトウェアが多数収録されています。これらをローカルリポジトリとして構築しておくことで、オフライン環境でもある程度インストールできるようになります。

# mkdir /mnt/cdrom
# mkdir -p /root/repo/RHEL-7.3-x86_64

## 普通にメディアを読み込ませられる環境の場合
# mount /dev/cdrom /mnt/cdrom
## メディアを読み込ませられないけど、ISOは配置できる環境の場合(AWSなど)
# mount -o loop -t iso9660 /root/rhel-server-7.3-x86_64-dvd.iso /mnt/cdrom

# cp -vrp /mnt/cdrom/* /root/repo/RHEL-7.3-x86_64/
# umount /mnt/cdrom

# vi /etc/yum.repos.d/RHEL-7.3-Media.repo
/etc/yum.repos.d/RHEL-7.3-Media.repo
[RHEL-7.3-Media]
name=RHEL-7.3-Media
baseurl=file:///root/repo/RHEL-7.3-x86_64
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
# yum repolist
リポジトリー ID                     リポジトリー名                               状態
RHEL-7.3-Media                      RHEL-7.3-Media                                  0
rhel-7-server-rpms/7Server/x86_64   Red Hat Enterprise Linux 7 Server (RPMs)   29,431
repolist: 29,431

メディアローカルリポジトリのみにする

ローカルリポジトリを構築したものの、このままではオンライン上の最新のリポジトリも参照されてしまいます。以下のコマンドで無効にします。

# yum --disablerepo=rhel-7-server-rpms install yum-utils
# yum-config-manager --disable rhel-7-server-rpms
# yum clean all
# yum repolist
リポジトリー ID            リポジトリー名                     状態
RHEL-7.3-Media             RHEL-7.3-Media                    4,751
repolist: 4,751

最新リポジトリを使用したい場合には、以下の様にすることで意識して導入できるようになります。

# yum --enablerepo=rhel-7-server-rpms install package-name

SELinuxの無効化

あまり良くはないのでしょうが、大抵のシステムでSELinuxの無効化を要求されるので初めから無効化しておくことにします。

# cp -p /etc/selinux/config /etc/selinux/config.default
# sed -i -e 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# reboot

ファイアウォールの停止

SELinuxと同じくあまり良くはないのでしょうが大抵のシステムでファイアウォールの無効化を要求されるので、こちらも初めから無効化しておくことにします。

# systemctl stop firewalld
# systemctl disable firewalld

【オプション】swap領域の作成

搭載している物理メモリを使用量が超えた場合の保険として、swapファイルを作成しswap領域として認識させます。

# # 128MiB x 64 = 8GiB 作成に時間がかかるためscreenの使用を推奨。

# dd if=/dev/zero of=/swapfile bs=128M count=64
# chmod 600 /swapfile
# mkswap /swapfile
スワップ空間バージョン 1 を設定します。サイズ = X GiB (xxxxxxxxxxxxx バイト)
ラベルはありません, UUID=xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx

# swapon /swapfile
# swapon -s
ファイル名                              タイプ          サイズ  使用済み        優先順位
/swapfile                               file            XXXXXXX 0       -2

# # 再起動してもswap領域がマウントされるように設定
# cp -p /etc/fstab /etc/fstab.default
# vi /etc/fstab
/etc/fstab
# 追記
/swapfile swap swap defaults 0 0

再起動を試し、swap領域がマウントされていることを確認します。

# reboot
...
# swapon -s
ファイル名                              タイプ          サイズ  使用済み        優先順位
/swapfile                               file            XXXXXXX 0       -2

ファイル形式のswap領域は賛否両論あるかもしれませんが、個人的には柔軟性があって良いと思います。

【オプション】各種ツールのインストール

最小インストールしている場合、割と利用頻度の高いコマンドが利用できないことがあります。
ここでは自分がよく利用するものをインストールすることにします。趣味みたいなところもあるので、要件をよく確認して導入するかどうか判断して下さい。

# yum install wget telnet tcpdump bind-utils net-tools traceroute lsof vim rsync nfs-utils samba-client cifs-utils unzip at
  • wget : Web上のコンテンツをファイルとして取得する際に使用します。curlを使えばいいとは思いますが、とても馴染み深いコマンドなので入れてます。
  • telnet : telnet接続が可能になります。動作試験や保守作業など、かなりの頻度で使用するコマンドです。
  • tcpdump : パケットキャプチャツールです。保守作業で利用します。このコマンドで取得したキャプチャデータはWindows版パケットキャプチャツールで有名なWireSharkで確認可能です。
  • bind-utils : DNSに関する保守作業で利用します。nslookupやdigコマンドが利用可能となります。
  • net-tools : RHEL7系からはnet-toolsが廃止され、iproute(iproute2)に置き換わりました。ただ、非推奨ではあるもののこれまで蓄積されたナレッジベースは圧倒的にnet-tools自体のコマンド(ifconfigやnetstatなど)が多いため、それを活かすのであればこれを入れる必要があります。そのうち完全廃止されると思うので早く移行すべきだとはひしひしと感じてます。
  • traceroute : NWの経路を調査するコマンドです。NWに問題が起きた際によく利用します。
  • lsof : 開かれているファイルを調べることができます。保守作業でたまに使用します。
  • vim : CUIテキストエディタです。viで十分といえばそれまでですが、様々な機能が付加されていて便利なのでとりあえず入れておきます。
  • rsync : Windowsで言うrobocopyみたいなものです。保守のみならずscpの代わりに使用したりしますし、そもそもrsyncは対向側もインストールしておく必要があるため入れておいた方がいいと判断しました。
  • nfs-utils : NFSマウントできるようにします。
  • samba-client, cifs-utils : SMB/CIFS共有をマウントできるようにします。
  • unzip : zipアーカイブを展開するときに必要です。
  • at : コマンドを指定時刻に実行させるために使用します。cronと組み合わせて、○○月○○日の○○:○○から定期的にタスクを実行する。といった実装が可能になります。