はじめに
以前、お名前.com VPS
に CentOS7
をインストールするなどサーバー構築に関する記事を書きましたが、2019年9月に CentOS8(1905)
がリリースされましたので、改めて CentOS8
でサーバー構築したいと思います。
CentOS7
でサーバー構築を行った際の記事は下記をご覧ください。
(2020.5 追記)
2020年1月に CentOS8.1(1911) がリリース済です。
すでに CentOS8(1905) をインストール済の場合、dnf update コマンドでアップグレードできます。
インストールされたOSバージョンの確認は 'cat /etc/system-release' でできます。
インストールされたカーネルバージョンの確認は 'cat /proc/version' でできます。
CentOS8.1 のカーネルバージョン Linux 4.18 です。
過去の記事
- CentOS 7 でサーバー構築(インストール編)
- CentOS 7 でサーバー構築(論理ボリュームマウント編)
- CentOS 7 でサーバー構築(ユーザー作成~SSH開通編)
- CentOS 7 でサーバー構築(パッケージ管理編)
CentOS7との違い
ネット記事などから違いを拾い上げたところ、大きな変化点は少ない印象です。
ざっと下記のような変化点があるようです。
- パフォーマンスが向上した。
- パッケージ管理が
yum
からdnf
に変更された。 - ファイヤーウォール機能が
iptables
からnftables
に変更された。 - 時刻同期ソフトウェアが
chrony
に一本化された。
ファイヤーウォール機能は CentOS7
で firewalld
を利用していたので、引き続きこれを利用するでOKです。
パッケージ管理は折角なので、これを機に dnf
を利用していきたいと思います。
CentOS8 ダウンロード
下記URLからダウンロードできます。
https://www.centos.org/download/
CentOS Linux DVD ISO
からダウンロードしてください。
CentOS Stream DVD ISO
は開発者向けのようですので、単純にサーバー構築したい用途には向かないと判断します。
インストールするサーバー
今回も お名前.com VPS にインストールします。
VPSプランは2ギガメモリプランです。
お試しであれば HyperV
や Virtual Box
などの仮想マシンソフトウェアを利用するのも良いかと思います。
インストール
ダウンロードした CentOS8 ISOイメージ
をサーバーに挿入し、サーバーを起動します。
Install CentOS Linux 8.0.1905
を選択します。
言語選択画面が表示されますので、日本語
を選択します。
続行
ボタンを押下して次に進みます。
インストール概要画面が表示されます。インストール先
項目に !
マークがついていますので、設定を行う必要があります。インストール先
を押下します。
インストール先画面が表示されます。例では200GiBのストレージに対して、すでに20GiBの別パーティションが作成されていますので、この20GiBの領域を一度潰して200GiBの領域をすべて利用できるように設定します。
画面下側に ストレージの設定
という項目があります。その少し下の 利用可能な町域を追加する
チェックボックスをONにし、画面左上の 完了
ボタンを押下します。
ディスク領域の再利用ダイアログが表示されます。右下の すべて削除
ボタンを押下します。
一覧部分のアクション項目がすべて 削除
となっていることを確認し、右下の 再利用
ボタンを押下します。
インストール概要画面に戻ってきました。
このままインストールを開始しても良いですが、サーバー用途で利用したいため、ソフトウェアの選択
を押下してベース環境を変更します。デフォルトは サーバー (GUI 使用)
となっていますので、GUIを使用しないように変更します。
サーバー (GUI 使用)
から、サーバー
に変更し、完了
を押下します。
選択した環境のアドオン
欄は変更無しでOKです。(必要なものはあとからインストールします。)
インストール先の設定はこれで完了しました。
これで問題は解決しましたので、右下の インストールの開始
ボタンを押下します。
設定画面が表示されていますが、バックグラウンドではインストール処理が進行しています。
ユーザーの設定として、root パスワード
の設定を行う必要があります。root パスワード
を押下します。
root パスワード画面が表示されます。root パスワード
を入力します。パスワード強度が表示されますので、なるべく強力と判定されるような文字列の組み合わせで決定します。
確認入力をし、エラー表示がされなければOKです。完了
ボタンを押下します。
設定画面に戻ってきました。ここでは一般ユーザーの作成は行いません。このままバックグラウンドのインストール処理が完了するのを待ちます。
インストール処理が完了しました。右下に 再起動
ボタンが表示されますので、押下します。
再起動時にはサーバーに挿入した CentOS8 ISOイメージ
を抜いておく必要がありますが、今回の作業を行っている お名前.com VPS では先にイメージを取り出してから再起動を行うと、そこで画面が固まってしまいました。(恐らく HyperV など仮想マシン環境では似たような現象になるかと想像しています。)手動で再起動すると回復しましたので、インストール作業自体は大丈夫だと思います。
コンソール画面で起動し、ログインコマンドプロンプトが表示されていればインストール完了です。
インストール作業自体は、CentOS7
のころと比べて大きな差異はありませんので特につまづくことはないでしょう。
以降は細かい設定等を行っていきたいと思います。
シリアルコンソールの設定
今回の作業を行っている お名前.com VPS は、ブラウザー越しにサーバーをメンテナンスできるようにコンソール画面がコントロールパネルに備わっています。
しかし、ブラウザーのコンソール画面では文字列のコピー&ペースト等ができず、このまま作業を続けていくには若干不便です。
このような状態を回避するために お名前.com VPS
にはシリアルコンソール接続を行うための機能が備わっています。
ただし、お名前.com VPS
が標準で提供しているOS以外をインストールした場合、そのままではシリアルコンソール接続ができません。
よって、まず最初にシリアルコンソール接続するための設定を行います。
早速ですが、root
ユーザーでログインします。
/etc/default/grub
を変更します。下記のとおりバックアップを取ってから作業を行います。
[root@localhost ~]# cp /etc/default/grub /etc/default/grub.org
[root@localhost ~]# vi /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet console=tty0 console=ttyS0,115200"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
(2020.5 追記)
冒頭で CentOS8.1(1911) の件について触れましたが、私が dnf update した後、シリアルコンソールで接続しようとすると、read-only という表示がされるだけでシリアルコンソール接続ができなくなってしまいました。
その際に上記設定を見直して、「GRUB_TERMINAL_OUTPUT="serial console"」という定義を削除しました。
「GRUB_TERMINAL="console serial"」でそもそも設定値が上書きされてしまうので、不要との判断です。
一応この対応で状況は回復したのですが、これが本当の原因だったかは定かではありません。。。
下記のコマンドで設定を反映します。
[root@localhost ~]# /usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg
特にエラーがでなければOKです。
シリアルコンソールの設定自体はこれでOKで、reboot
してしまえば反映されますが、画面サイズがデフォルトの 24 x 80
となりますので、先に設定を変更しておきます。
シリアルコンソール接続するのは root
のみで行い想定として、root
の .bash_profile
を変更します。
[root@localhost ~]# vi /root/.bash_profile
最後の行に下記の1行を追加してください。
行数(rows)と文字数(columns)を設定するのみですので、適宜変更すれば良いと思います。
stty rows 40 columns 130
これで設定完了です。
reboot
します。
再起動が完了した後、シリアルコンソール接続できるようになります。
お名前.com VPS
の場合、SSHクライアントを利用してSSH越しにシリアルコンソール接続が可能となります。
ネットワークの設定ミスなどでサーバーに直接SSH接続ができないようになったケースにおいては、シリアルコンソール接続がサーバーに接続可能な手段となります。
一般ユーザーの設定と、SSH接続の設定が完了するまでは、シリアルコンソール接続で作業を進めます。
SELinux の無効化
SELinux
は無効化してしまいます。賛否はあるかもしれませんが、個人的に面倒な設定に巻き込まれるより割り切って無効化してしまったほうが良いと考えています。
下記のコマンドで今の状態を確認します。
[root@localhost ~]# getenforce
Enforcing
Enforcing
と出ていますので、SELinux
は有効です。
SELinux
の設定ファイル /etc/selinux/config
を変更します。
[root@localhost ~]# vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
変更が完了したら、reboot
します。
reboot
後にログインし、getenforce
コマンドで確認すると、下記のとおり Disabled
となっています。
[root@localhost ~]# getenforce
Disabled
一旦ここまで
CentOS8
のインストール作業としてはここで一旦完了としたいと思います。
次はネットワークを開通させたいと思います。
関連記事
- CentOS8 サーバー構築(インストール) ←今回の記事
- CentOS8 サーバー構築(ネットワーク開通とパッケージ更新)
- CentOS8 サーバー構築(Open LDAP インストール) ←予定