概ね手順は以下のようになります。
①新規マシンにOSをインストール。
②IPアドレス、ホスト名などの初期設定。
③ソフトウェア・ミドルウェアのインストール。
④ソフトウェア・ミドルウェアの設定。
⑤④付属のツールで設定値のチェック。
⑥サービスの起動。
⑦ファイアウォール・SELinuxなどセキュリティの制限解除。
⑧サーバー側から動作確認。
⑨クライアントマシンから動作確認。
③仕事で行う場合、インターネットへ接続できない閉じた環境《イントラネット》でインストールしないと駄目な場合があったりしますが、そう言った場合はDVDでインストールするか、ネット接続可能なPCからRPMパッケージをダウンロードしてからサーバーに移設してください。本稿ではインターネット使用を前提とした環境でインストールを行います。
④ソフトウェア・ミドルウェアの設定前に必ず行いたいのは、オリジナルの設定ファイルをコピーして、設定が上手く行かない場合は最初からやり直せるようにするのがコツです。
作業前に以下のようにコマンドを入力してオリジナルの設定ファイルを残す癖をつける事をお勧めします。
# cp -p /etc/XXX/XXX.conf{,.org}
上記コマンドは以下のコマンドと同じ意味です。
# cp -p /etc/XXX/XXX.conf /etc/XXX/XXX.conf.org
どちらでも構いませんが、面倒なので上の方を覚えましょう。
サーバーの設定ファイルは殆どの場合.confあるいは.cfの様な拡張子で(例外もあり)、このファイルを読み込むことでサーバーは動作しますが、上記の例では.conf.orgと拡張子を変更する事でファイルを読み込まなくなり、現行の設定に影響なくオリジナルの設定ファイルを残す事が出来ます。
なお、2回目以降の変更した設定を残す場合、.conf.20220610の様に、何日に変更した設定か分る様にするのも現場でよく使われているテクニックなので覚えておくといいでしょう。
⑤の設定ファイルをチェックするツールは主に以下のものが有ります。
・Sambaのtestparm
・BINDのnamed-checkconf
・Postfixのpostfix check
・Apacheのapachectl configtest
・Ansibleのansible-playbook xxx.yml --check
これらのツールでは④で設定した構文をチェック出来ます。必ずしも完璧なチェックが出来る訳では無いのですが、入力ミスやケアレスミスを少しでも回避する為には必ずチェックを行いましょう。
尚、初期設定ファイルと変更後のファイルで比較するには以下の様にdiffコマンドを使用すると変更点の確認が出来ます。
# diff /etc/XXX/XXX.conf{,.org}
⑥CentOS Streamの様なRHEL系のディストリビューションでは以下のコマンドでサービスを起動します。
# systemctl start xxx
xxxにはサービス名が入ります。サービスが起動したか確認するには以下のいずれかのコマンドで確認を行います。
# systemctl status xxx
あるいは
# systemctl is-active xxx
どちらでも良いのですが、上のコマンドの方が状態の詳細が表示されるので、トラブルシューティングを行う場合には便利です。下のコマンドは正常の場合、シンプルにis-activeと表示されます。
サービスを起動する事でサーバーとして機能しますが、サーバーが一度シャットダウンしてしまうと、起動後に手作業で再びサービスを起動しなければなりません。これは基本的に24時間稼働のサーバーを運用するにあたり、ダウンタイムが長くなるのは致命的な欠落となりかねません。そしてサーバー管理者が不在の場合、対応できない可能性もあります。
その為、サーバーが何らかの理由で再起動してしまった場合でも自動的にサービスが立ち上がるように、以下のコマンドでサービスを自動起動する様に設定を行います。
#systemctl enable xxx
こうする事で毎回サーバー起動時にサービスが自動的に起動します。
自動起動の設定を確認するには以下のコマンドを使用します。
# systemctl is-enabled xxx
enable
上記コマンドの様に、enableと表示されれば自動起動の設定されています。
尚、起動中のサービスに設定変更を行う場合は以下のどちらのコマンドを実施します。
# systemctl restart xxx
# systemctl reload xxx
⑦は⑥までの設定が正常に行われた場合でも⑧や⑨の時点でアクセス拒否など発生して正常にサービスが提供されない場合があります。
これはファイアウォールやSELinuxというLinuxOSのセキュリティ機能によりブロックされてしまっている可能性もあります。
その場合、ファイアウォールやSELinuxで該当するサービスの使用を許可する設定が必要になります。
ファイアウォールは以下のコマンドとなります。
# firewall-cmd --add-service=XXX --permanent
XXXはサービス名になります。 --permanentオプションを入力する事でサーバー起動時に自動的にファイアウォールの設定が反映されます。
# firewall-cmd --reload
上記コマンドでファイアウォールを再度読み込み、設定を反映されます。
SELinuxの制限に関しては既定で許可されているサービスも多いので、行わなくても良いサービスもあります。SELinuxが原因で拒否される場合、多くの場合はログに解決手段が載っており、指示通りにコンテキストを修正するだけで正常化する場合が多いですが、一時的にSELinuxを無効にしてアクセスしてみるトラブルシューティングの方法もあります。
# setenforce 0
上記コマンドで一時的にSELinuxを無効に出来ます。以下のコマンド実行結果がPermissiveであればSELinuxは無効になっています。
# getenforce
Permissive
SELinux無効後、サービスが使用出来ればSELinuxが起因している事が分かります。
SELinuxの制限を解除するには以下の様なコマンドを入力します。
# setsebool -P XXX_XXX_XXX_XXX on
上記コマンドで該当するサービスの制限解除後、SELinuxを無効にしてある場合は以下のコマンドで再びSELinuxを有効にしましょう。
# setenforce 1
以下のコマンドでSELinuxが有効になっている事を確認します。
# getenforce
Enforcing
上記の様にEnforcingと表示されればSELinuxは有効になっています。
SELinux有効後、該当のサービスが使用可能である事を確認します。
⑧は先ずサーバー側で動作確認を行い、この時点で正常に動作しなければクライアント側で正常に動作する訳が無いので、しっかり確認します。現場ではLAN環境の関係で、クライアントで検証出来る機会が限られる場合もあるので、サーバーのみで検証出来る事は出来得る限り検証を行いましょう。
⑨はクライアントの設定が正しく行われているにも関わらず、サーバーへアクセス出来ない場合、クライアント側のファイアウォールやウィルス対策ソフトが起因している場合があります。その場合は該当のポートを許可するなどの設定を行います。
次稿では、試しにこの手順でシンプルなWebサーバーを構成してみます。