CentOSの旧バージョンをインストールしたい!

今回は、SEらしいテーマをあげてみました。古いCentOSを使う必要が出てきた場合にどこから手に入れたら良いかをまとめます。探してみるとCentOS6はどこからもダウンロードできないように見えるのですが、調べてみると見つかりました。

SEやっていると古いOSを使ったシステムで新しいOSへ移行するために検証環境が必要となることがあります。

インストール用ISOファイルが取得できれば、このサイトで紹介しているHyper-Vで検証環境が出来上がります。

CentOSの旧バージョンをダウンロードする

CentOS 6 の最終バージョンのインストール用ISOを探す

旧バージョンのCentOSでよく使われているのは5.5や6系が多いと思います。でもCentOSの公式サイトではCentOS6のダウンロード先を紹介していません。CentOSのダウンロードサイトを辿って、CentOS6の最終バージョン6.10のフォルダにはreadmeファイルだけがあり、開くと下のように表示されます。

CentOS6の最新版を探して公式サイトから辿った結果

上のように「使うべきではない」と冷たいメッセージだけが表示されます。

このままではCentOS6の最終バージョンが取得できません。でも、よく見るとCentOS 2系からディレクトリはあります。そこで、一つ前のCentOS5を探してみます。

CentOS 5 の最終バージョンのインストール用ISOを探す

CentOSの配布サイトでCentOS5の最終バージョンを探してみます。readmeファイルだけがありますが、それを開いてみます。

CentOS5の最新版を探して公式サイトから辿った結果

CentOS6の時とは違って、CentOS5のreadmeでは配布サイトを紹介していますね。早速http://vault.centos.org/5.11/を開いてみます。

CentOS 5 の最終バージョンの配布一覧

CentOS 5.11 用のファイルが見つかりました。isosのディレクトリを辿るとISOファイルをダウンロードできます。

CentOS 6 の最終バージョンのインストール用ISOをもう一度探す

CentOS 5.11 が、http://vault.centos.org/5.11/のサイトからダウンロードできることがわかったので、上の階層のhttp://vault.centos.org/を表示してみます。CentOS 2 から 最新版までのバージョン毎のディレクトリがありました。

早速CentOS 6.10のフォルダを下りていきます。

CentOS 6 の最終バージョンの配布一覧

上の図のように、インストール用ISOファイルを見つけることができました。これでインストールして検証環境を作ることができます。

まとめ

CentOSのインストーラはhttp://vault.centos.org/から全バージョン取得できそうです。CentOS 6 だけリンクがreadmeファイルに書いていないのは少し不親切ですね。

Hyper-VでCentOSをインストールする方法は、CentOSのインストールを最短でにまとめていますので、参考にしてください。

RedmineをCentOS8上で構築する手順

CentOS8でWebサーバMySQLを使ったデータベースサーバRuby on Railsを作ってきましたので、この機能を使ったRedmineを立ち上げてみます。Redmineはプロジェクト管理に使えるオープンソースソフトウェアです。

CentOS8でRedmineを構築するのは想定より面倒でした。備忘録としてまとめておきたいため、ここにまとめます。

Redmineを使ったWebアプリケーションの画面
このページの結論

RedmineはRuby on RailsとLAMPの上で動作します。CentOS8でRedmineを動作させるには2つのポイントを押さえる必要があります。他は従来の手法で構築できました。

  1. Passengerはgem経由でインストールする
  2. Redmineの指定したrailsのバージョンを使う

Redmineが動作するCentOS8のインストールと設定

Redmineに適したOSの設定が必要になりますので、簡単にまとめておきます。

CentOS8のインストール

まずはCentOS8のインストールです。手順はCentOSのインストールを最短で!に詳しく説明していますので、参考にしてください。OSに関しては説明している手順そのままでOKです。

SELinuxの無効化

WordPressのインストールではSELinuxを有効にしたまま設定ができましたが、Redmineは設定する項目が多すぎましたので、SELinuxを無効にします。

/etc/selinux/configを編集します。

Redmineを動作させるためにSELinuxの設定を変更

上の図は、viで/etc/selinux/configを開き、行数を表示させた状態です。

ちなみにviで行数を表示するにはコマンドモードで、「:set number」と入力します。行数の表示を解除するにはコマンドモードで「:set nonumber」と入力します。

上の図に戻って、①SELINUX=enforcingとなっている場所を、②にあるようにpermissiveに変更します。

Redmineの動作のためにSELinuxをpermissiveに変更

上の図の赤線のように変更して保存します。viで保存して終了する場合は「:wq」と入力します。

SELinuxの設定ファイルを変更したら再起動します。再起動後getenforceコマンドでpermissiveになっていることを確認します。

Redmineの動作のためにSELinuxの設定を確認

上の図のようにPermissiveと表示されれば大丈夫です。

setenforceコマンドでも起動後の変更できるのですが、恒久的にSELinuxを無効にするためには/etc/selinux/configファイルを修正する必要があります。

ファイアウォールの許可設定

RedmineはWebアプリケーションです。そのためHTTPとHTTPSを使います。ファイアウォールでHTTPとHTTPSの通信を許可するように設定します。ポート番号で言うと、HTTPがTCPの80番ポートを、HTTPSがTCPの443番ポートを使います。

CentOS8のfirewalldが有効な場合には、サービスのhttpとhttpsを許可してください。具体的な設定方法はfirewall-cmdでCentOS8を安全に公開しよう!で説明しています。または、firewalldを無効にしてすべての通信が通るように設定します。

Redmineに必要な機能のインストール

Webサーバのインストール

RedmineはWebアプリケーションであるため、Webサーバは必要です。ここではApacheを使います。Webサーバの構築方法はApacheをインストールしてWebサーバを簡単構築!で説明していますので、参考にしてください。

httpで接続してきたら、httpsへ転送するように常時SSL対応まで実装します。常時SSLの必要性については常時SSL化ってなぜ必要なのか?を参考にしてください。

MySQLサーバのインストール

MySQLはRedmineのデータを保管するデータベースとして使います。RedmineはPogstreSQLにもインストールできますが、LAMP環境で統一します。

MySQLサーバの構築方法は、MySQLをCentOSに簡単インストールを参考にしてください。構築するデータベースの情報は以下になります。

 
項番 項目 設定値
1 データベース名 redmine
2 ユーザー名 redmine_user
3 パスワード RedM1ne

rootでCentOS8のサーバにログインして、MySQLのデータベースを作ります。調べたところ一つ気を付ける点があって、データベースの文字コードをutf8ではなく、utf8mb4にしないと4バイトのUTF8の文字コードが入らないようです。

Redmine用のデータベースをMySQLで構築

上の図のように、rootでログインしてから①mysqlコマンドを実行します。②データベースredmineをutf8mb4の文字コードで作ります。③redmine_userユーザーをパスワードRedM1neで作成します。④redmine_userユーザーにredmineデータベースの全権限を付与します。⑤権限変更を即時反映します(古いバージョンだと必要な場合があると思います)。最後に⑥\qのMySQLコマンドの入力を終了します。

MySQLデータベースの作成の詳細については、MySQLをCentOSに簡単インストールをご覧ください。

Ruby on Railsのインストール

RedmineはRuby on Rails上で動作します。CentOS8にRuby on Railsをインストールするのは少し手間ですが、Ruby on Railsを最短でCentOS8に構築してみようにまとめていますので、参考にしてください。

Passengerのインストール

必要なRPMを追加インストール

Redmineで使うPassengerに必要とされるパッケージを追加します。以下のパッケージをインストールしないとPassengerのインストールでエラーが出て進みません。

 
項番 パッケージ名 説明
1 openssl-devel 開発用OpenSSLライブラリとヘッダ
2 httpd-devel 開発用Apacheライブラリとヘッダ
3 libcurl-devel 開発用libcurlライブラリとヘッダ

3つのパッケージをインストールします。

Redmineに関連して必要なパッケージをインストール

上の図のように、赤線の部分にdnf installコマンドでパッケージをまとめてインストールしています。

Redmineに関連するパッケージのインストール完了

上の図の最後のように、「完了しました!」と表示されればパッケージのインストールは終了です。

Rubyのgemを使ってPassengerのインストール

PassengerはApache上でRuby on Railsのアプリケーションを動作させるためのモジュールです。PassengerはまだCentOS8のパッケージが公開されていませんのでRubyのパッケージ管理コマンドgemでインストールします。

RedmineをApacheで動作させるためにPassengerをインストール

上の図のように、rootでログインして①passengerをgemでインストールします。②1つのgemがインストールえきたことを確認します。

Apache用のPassengerモジュールをインストール

ApacheからPassengerを呼び出すmod_passenger.soモジュールを作成します。公式サイトにはCentOS8用のパッケージが公開されていないためgem経由でインストールしたpassengerを使ってインストールします。

passenger-install-apache2-moduleコマンドを実行します。

RedmineをApacheで動作するために必要なPassengerモジュールインストール

上の図のように、rootで①passenger-install-apache2-moduleコマンドを実行します。②続ける場合はEnterキーを入力し、中断して終了する場合はCtrl+Cを入植するように指示しています。

インストールを続けるので、Enterキーを入力します。

RedmineをApacheで動作するために必要なPassengerモジュールインストール第2

上の図のように、画面が進みます。ここではRPMでインストールを勧めますが、インストールを継続するなら赤下線のように、Enterキーを入力してくれと書いてあります。

インストールを続けるので、Enterキーを入力します。

RedmineをApacheで動作するために必要なPassengerモジュールインストール

上の図の左下赤枠のように、使いたい言語は何かと聞かれるので、RubyとNode.jsが入っている状態でEnterキーを入力して勧めます。

ここから、ソフトウェアのコンパイルが始まります。サーバの性能に依りますが、5分以内には終わると思います。

Redmineに必要なPassengerのコンパイル完了

上の図のように表示されればインストールは成功です。Enterキーを入力して進みます。

Redmineに必要なPassengerのコンパイルが完了

上の図のように、エラーはないのですが、3つの警告がありました。エラーは無かったので、インストールは完了です。Enterキーを入力して進みます。

Redmineに必要なPassengerのインストールが完了

上の図のように、やっとPassengerのインストールが完了してコマンドプロンプトに戻ってきました。

mod_passengerをApacheに組み込む

passenger-install-apache2-moduleに引数を付けると、Apache用にmod_passengerを組み込む瀬鄭が表示されます。これを設定ファイルに流し込みます。

Redmineの動作のためにPassengerをApacheに組み込む

上の図のように進めます。①インストールで実行したコマンドpassenger-install-apache2-moduleにsnippet引数を付けて実行するとインストールしたpassengerをApacheに組み込む設定が表示されます。

②次にPassengerの設定をApacheの設定に流し込むために①の出力をリダイレクトして画面から/etc/httpd/conf.d/passenger.confに流し込みます。/etc/httpd/conf.d/*.confはApacheが自動で読み込みますので、これで準備はできました。

③念のため設定でエラーがないことをapachectlコマンドで確認します。④Syntax OKを表示されて設定上エラーがなければ、⑤Apacheを再起動します。apachectl gracefulは設定の再読み込みだけでモジュールを読み込まないので、Apacheの再起動が必要です。

Redmineの設定

Resmineの動作に環境が整いましたので、いよいよRedmineの設定に入ります。まずはRedmineをダウンロードします。公式ダウンロードサイトを開いて最新安定板をダウンロードします。

Redmineの安定板をダウンロード

上の図のStable releasesと記載のある赤枠部分が最新安定板です。tar.gzかzip形式をダウンロードします。

ダウンロードしたら、/var/www/html/以下に展開します。

Redmineのファイルを展開

上の図では、tar.gzのファイルを展開していますが、zipの場合はunzipを使って展開してください。展開後はファイルの所有権をWebサーバを実行するapacheユーザーとapacheグループにすべて変更します。chownの-Rはディレクトリ以下のすべてのファイルとディレクトリに適用するオプションです。

次はWebサーバのディレクトリ構成を変更します。先ほど展開したディレクトリの中にredmine-4.1.1/というディレクトリができています。RedmineがWebサーバとして表示するディレクトリはredmine-4.1.1/public/になります。展開したディレクトリと合わせて/var/www/html/redmine-4.1.1/public/をDocumentRootに設定変更する必要があります。今回は一つのサーバをRedmineが占有する想定で構築しますが、VirtualHostの場合も考え方でDocumentRootをどこにするかの違いだけです。

WebサーバのDocumentRootを変更するには/etc/httpd/conf/httpd.confを修正します。標準のApacheの設定では以下のようになっています。

Redmine用にApacheの設定を変更する前

上の図の赤線のように、DocumentRootは標準では/var/www/htmlに指定してあります。これをRedmineの設定に置き換えます。

Redmine用にApacheの設定を変更後

上の図のように、DocumentRootを置き換えたら保存して終了します。/var/www/html以下以外にするとディレクトリの許可設定も変更する必要があるので、変更箇所はさらに増えます。

今回はRedmineをCentOS8の上に構築する流れを説明する目的ですので、他のディレクトリへ変更する場合は想定しません。

設定変更が完了したら、apachectl gracefulで変更を反映してWebサーバへの設定は完了です。

Redmineのデータベース接続設定

Redmineがデータベースと接続する設定をします。redmine-4.1.1/config/ディレクトリの下にdatabase.yml.sampleというファイルがあります。このファイルを同じディレクトリのdatabase.ymlにコピーします。コマンドで書くと下のようになります。viでの編集までコマンドを記載しました。

Redmine用のデータベース接続ファイルの準備

次にdatabase.ymlを編集します。展開した朝護の標準設定は以下の内容です。

Redmineがデータベースと接続する情報を保管するファイルの変更前

上の図のように、productionの項目を設定します。データベース名を指定するdatabase行、ユーザー名を指定するusername、パスワードを指定するpassword行をMySQLで作った情報に置き換えます。

Redmineがデータベースと接続する情報を保管するファイルの変更後

Redmineに必要なgemパッケージをインストールします。

Redmine用のRailsに入れ替え

redmine 4.1.1に必要なrailsは5.2.4.2のため、railsを入れなおします。

Redmineが必要としているRailsのバージョンに変更

上の図のように、最新版ではRailsの6.0.3が入ります。RedmineのGemfileを見るとわかりますが、4.1.1ではRailsの5.2.4.2が必要です。そこでRailsをインストールしなおします。

①gemコマンドで、railsとrailtiesを削除します。②で確認メッセージが出るのでyキーを入力して削除を進めてください。③バージョン指定でrailsをインストールします。④railsの5.2.4.2がインストールされればOKです。

Redmine用のパッケージをインストール

OS用mysql2-develパッケージをインストール

最初にMySQL用のライブラリとヘッダを含むmysql-develをdnfコマンドでインストールします。

Redmineに必要なmysql-develパッケージをインストール

Ruby用mysql2パッケージをgemでインストール

次にgemコマンドでsqlite2のバージョン0.5.3をインストールします。

Redmineで使うmysql2をgemでインストール

上の図のようにgem install sqlite2と入力して指定のパッケージをインストールします。

Redmineに必要なrubyパッケージをbundleでインストール

Redmineのディレクトリへ移動し、bundle installと実行します。

Redmineで使うrubyのパッケージを追加インストール

上の図のように、①redmineのディレクトリへ移動して、②bundle installを実行します。警告のように一般ユーザーで実行するよう警告されますが、Redmineの構築方法をまとめるためですので、簡略化して今回はrootでインストールします。

少し時間が必要ですが、bundleコマンドが必要なパッケージを追加してインストールします。

Redmineでbundle installが完了

上の図のようにコマンドに戻ればインストールは完了です。

Redmineの初期データ作成

セッション改ざん防止用秘密鍵の作成

Redmineがセッションで使う改ざん防止用の秘密鍵を生成します。redmineのディレクトリで、bundle exec rake generate_secret_tokenと実行します。

Redmineのセッションで使う改ざん防止用秘密鍵を作成

上の図のようにコマンドを実行するとエラー無く終了します。

Redmine用のデータベーステーブルを作成

データベースにReadmineが使うテーブルを作成していきます。Redmineのディレクトリで、RAILS_ENV=production bundle exec rake db:migrateとコマンドを入力して実行します。

Redmine用のデータベーステーブルを作成

上の図のように、コマンドを実行するとデータベーステーブルの作成が始まります。マシンの性能にも依りますが、1分ほどで完了します。

Redmine用のデータベースに初期データを登録

前項で作成したデータベーステーブルに初期データを登録します。Redmineのディレクトリで、RAILS_ENV=production bundle exec rake redmine:load_default_dataとコマンドを入力します。

Redmine用のデータベーステーブルにデフォルトデータを設定

上の図のように、コマンドを実行すると言語の指定が必要です。日本語を使うのでjaと入力して進めます。

デフォルトのデータを設定する作業はすぐに終わります。

Redmineの動作確認

やっと構築作業が完了しました。いよいよRedmineへ接続します。http://サーバのIPで接続すると、最初は少し待たされますがRedmineのページが表示されます。

Redmineのトップページの状態

上の図のようにRedmineのページが表示されれば、インストールは成功です。右上の「ログイン」をクリックします。

Redmineのログインページ

上の図のように、ログインページが表示されたら、管理者のIDはadminで初期パスワードはadminです。

Redmineのログイン後にパスワードの変更が必要

初期パスワードを変更してログインを進めてください。初期パスワードを変更できると下の図のようになります。

Redmineの初期パスワード変更後の正常画面

ここまでくればRedmineは構築完了です。あとはRedmineを使うだけです。

まとめ

Redmineの構築はやはり面倒でした。そのため私自身もこの備忘録を活用しています。長文をご覧になっていただき、ありがとうございました。この記事が約二立てることを願ってます。

firewall-cmdでCentOS8を安全に公開しよう!

firewall-cmdは、CentOS7から採用されているホスト型のファイアウォールです。CentOSと同じように無償で利用が可能です。CentOS6まではiptablesを使っていたのですが、慣れないfirewalldを使うよりほとんど無効化してしまうことが多いと思います。

組織では各サーバにファイアウォールを設定するより独立させて一元管理するアプライアンス型を使う方が多いです。

本記事ではファイアウォールをどこに置くかではなく、安全にCentOSをサーバとして公開できるよう最低限ファイアウォールの設定をまとめておきたいと思います。

firewall-cmdをはじめとするファイアウォールが保護するイメージ
ar130405によるPixabayからの画像
このページの結論

firewall-cmdはWindowsファイアウォールと同じでホスト型のファイアウォールです。外部からの通信で許可したいものを許可します。

CentOSをサーバ公開するにあたり、最低限のファイアウォールを設定する方法を以下3点でまとめます。

  1. 公開用のポートを許可する
  2. 許可していたポートを拒否する
  3. 変更を一時的から恒久的に反映する

firewall-cmdを使った現在の設定確認

firewall-cmdはファイアウォールを提供しているfirewalldの状態を確認したり、設定変更できるコマンドです。ここでは現在の設定を確認します。

まずはfirewalldが動作しているか確認します。systemctl status firewalldと入力します。

ファイアウォールの有効状態を確認

上の図のように、①systemctl status firewalld でファイアウォールの有効か無効かを確認します。②firewalldのサービスがenabled(自動起動する状態)であることがわかります。③今の状態がactive(running)で起動していることを表示しています。

ファイアウォールが無効な状態であればまずは起動します。systemctl start firewalldで起動できます。起動時に自動的にファイアウォールを有効にするにはsystemctl enable firewalldで設定できます。

ファイアウォールが有効なことがわかりました。これでfirewall-cmdで設定を表示したりできます。現在の設定は、現在有効な設定だけを表示する firewall-cmdにlist-allオプション または、全ての登録している設定を表示する list-all-zonesオプションがあります。

firewall-cmdでファイアウォールの有効なルールを表示

上の図のように、①firewall-cmdにlist-allオプション付与で現在有効な設定を表示します。publicというゾーンがデフォルトとして設定されているため、そのゾーン情報が表示されています。②には許可するサービス名が設定されています。cockpitとdhcpv6-clientとsshです。

firewall-cmdのオプションをlist-allオプションからlist-all-zoneオプションに変更すると、全てのゾーンの情報を表示します。

許可しているサービスの情報を見るにはfirewall-cmdに「info-service=サービス名」オプションとしてます。

firewall-cmdでサービスの詳細を表示

上の図のように、許可されているサービスを確認します。①cockpitは②TCPの9090番のポートを利用します。cockpitは管理用のWebGUIのポートで、詳細はRedHatのLINUXホストへのCOCKPITのインストールを参照してください。

上の図で③はdhcpv6のクライアントサービスで、④UDPの546番ポートを使います。⑤SSHサービスは⑥TCPの22番のポートを使います。

firewall-cmdを使って変更する

Webサーバのアクセスを許可

WebサーバはHTTPとHTTPSを許可する必要があります。HTTPSが必要な理由は常時SSL化という時代の要請から必須になりました。

HTTPはTCPの80番ポートを使います。HTTPSはTCPの443番ポートを使います。サービスが定義されているか確認します。

firewall-cmdでhttpとhttpsのサービスを表示

上の図から、httpとhttpsサービスは定義済みであることがわかります。httpはTCPの80番ポートを、HTTPSはTCPの443番ポートを使うように指定されています。

今の設定を確認します。firewall-cmdにlist-allオプションを付けて実行します。

firewall-cmdで標準で動作しているファイアウォールのルールを表示

上の図のようにサービスはcockpitとdhcpv6-clientとsshのサービスが許可されています。

上の状態でhttpとhttpsを許可します。許可した後でどのように変わったかを確認します。

firewall-cmdでサービスを許可する

上の図のように、①で現在の設定を確認します。②にはhtpとhttpsは許可されていません。③httpとhttpsのサービスを許可します。④もう一度設定を確認します。⑤httpとhttpsが追加されています。

この状態であれば、Webサイトを構築して公開することが可能になりました。ただし再起動すると設定がリセットされて戻ってしまいます。これは次の項目で説明する変更を保存して恒久反映する手順が必要です。

DNSサーバのアクセスを許可

複数のポートを使うサービスを許可してみます。DNSサーバはTCPの53番ポートとUDPの53番ポートを使います。それではdnsサービスを確認します。

firewall-cmdでDNSサービスの詳細を表示

上の図のように、①dnsサービスの詳細をfirewall-cmdで表示すると、②dnsサービスにはTCPの53番ポートとUDPの53番ポートの2つが含まれています。

同じように firewall-cmdにadd-service=dnsオプションを付けてコマンドを実行するとDNSサーバのポートを許可します。

許可したサービスを拒否する場合

add-serviceオプションで許可したので、remove-serviceオプションで許可したサービスを拒否します。具体的にdnsサービスを許可している状態からdnsサービスを拒否するコマンドの流れを見てみます。

firewall-cmdで許可したサービスを拒否する

上の図のように、①現状のファイアウォール設定を表示すると、②http,https,dnsの3つのサービスを追加で許可していることがわかります。③dnsサービスの許可を取り消して拒否します。④もう一度ファイアウォール設定を表示すると、⑤httpとhttpsは許可していますがdnsは消えました。

firewall-cmdの変更を保存して恒久反映

firewall-cmdで許可するサービスを追加したり、削除することで設定できるようになりました。ですが、設定を保存しないと再起動した際には変更が消えてしまいます。ファイアウォールを設定変更して、問題ないことが確認できたらすぐに保存しましょう

具体的コマンドはfirewall-cmdにruntime-to-permanentオプションを付けると今の設定を/etc/firewalld/ディレクトリ以下に保存します。

firewall-cmdで現在の設定を保存

上の図のように、successと表示されれば保存は成功しています。次の再起動時にも同じファイアウォールの設定が有効になります。

ファイアウォールを無効にしたい場合

セキュリティレベルが低下することから、おすすめはしませんが、ファイアウォールを無効にしたい場合には、以下の順で停止します。

  1. ファイアウォールの機能を停止する
  2. ファイアウォールが自動指導しないように設定する

まずは、現在の状態を確認します。systemctlコマンドで確認します。

ファイアウォールの現在の状態を表示

上の図のように、①systemctl status firewalldでfirewallの自動起動の設定と起動状態を表示します。②自動起動はenabledなので、有効です。③起動状態はrunningなので起動中です。

ファイアウォールの機能を停止

ファイアウォールの起動を停止して、全ての通信が受信できるようにします。systemctl stop firewalldで停止します。

ファイアウォールを停止

上の図のように、①firewalldの機能を停止して、全てのデータを送受信できるようにします。②自動起動と今の起動状態をもう一度表示します。③起動状態はdeadなので停止中です。

ファイアウォールの自動起動を停止

次は自動起動を停止します。systemctl disable firewalldでファイアウォールが自動で起動しないように抑制します。

ファイアウォールを無効化

上の図のように、①firewalldが起動時に自動で起動しないよう無効化します。②もう一度自動起動と起動状態を確認します。③自動起動がdisabledで無効化されていることを確認できました。

まとめ

ホスト型のファイアウォールは細かい設定は不要と思います。細かい設定がファイアウォールに必要な場合は、アプライアンス製品のファイアウォールを導入した方が管理は楽になると考えられるためです。

簡単でしたが、firewall-cmdの基本的な使い方を説明しました。もっと高度なこともできますが、ホスト型のファイアウォールとは役割が違うので専用のアプライアンスを使った方が良いと思います。

ApacheをインストールしてWebサーバを簡単構築!

パソコンやスマホでネットサーフィンする時にいつもお世話になっているのがWebサーバです。Webサーバはいろいろありますが、実績のあるApacheを使うことが多いです。Webサーバの構築が簡単にできるようになっていますので、初級部分のWebサーバ構築をまとめておきます。

Apacheをインストールして使って作るWebサイトのイメージ
Gerd AltmannによるPixabayからの画像

インフラエンジニアとして避けて通れないWebサーバは今や無料で構築することができます。機能が豊富なApacheだからこそ基本的なことは押さえておきたいです。

このページの結論
  1. Apacheのインストールは簡単に無料でできます。
  2. サーバOSはCentOS8を使います。
  3. Apacheのパッケージをインストールして、自動起動と起動設定して確認します。
  4. サーバ証明書を作り常時SSL化します。

Apacheのインストールと初期設定

OSのインストール

OSはCentOS8を使います。CentOS8のインストールについては、CentOSのインストールを最短で!にまとめていますので、参考にしてください。

Apacheのインストール

Apacheをインストールする手順は簡単です。CentOS8のパッケージでhttpdとmod_sslをインストールするだけで最低限のWebサーバソフトウェアは準備が完了します。

Apacheのインストール

上の図のように、dnf install httpd mod_sslでWeb サーバソフトウェアのApacheとSSL化のソフトウェアがインストールできます。依存関係からインストールするパッケージがリストアップされます。yキーとEnterキーを押してインストールを勧めます。

Apacheのインストールが完了

上の図のように、インストールが正常に完了すると「完了しました!」と表示されます。インストールは異常で終了です。

Apacheの初期設定

インストールが完了したら、自動起動と起動設定をします。

Apacheの自動起動と起動する

上の図のように、①Webサーバの起動状態を確認します。②Webサーバの自動起動は無効になっています。CentOSを再起動してもWebサーバは自動で起動しません。

③systemctlコマンドにenableオプションを付けることでApacheをシステム起動時に自動起動させるように設定を変更します。④起動の状態を確認します。⑤Webサーバの自動起動状態がenable(自動起動)状態に変わりましたが、⑥サービスは今inactive(停止状態)です。

⑦webサーバを起動します。⑧Webサーバの起動状態を確認します。⑨Webサーバはactive(起動状態)に変わりました。なお、⑨から4行下のStatusにはポート443と80でlisteningとあります。これはApacheがポート443とポート80でWebサービスを提供していることを示しています。

Apacheには設定ファイルの内容を確認するapachectlコマンドが付属しています。apachectlにconfigtestを付けてコマンドを実行してみます。

Apacheのインストール後の設定ファイルの内容確認

上の図のように、①Apacheの設定内容を確認するコマンドを実行します。②最終的に設定が問題なければ「Syntax OK」と表示されます。なお、メッセージの意味は「ServerNameを指定してWebサイトのFQDNを設定してください」という意味です。

設定を確認後に、変更した設定をApacheに有効にするにはsystemctl restart httpdコマンドを実行します。

以上でApacheの初期設定が完了しました。

Apacheの常時SSL化設定

Webサイトのサーバ証明書を作成

サーバ証明書を作る方法は、SSLサーバ証明書の作り方をわかりやすくを参照して、秘密鍵と公開鍵を準備してください。公開鍵は中間証明書が必要な場合があります。

 
必要な物 用途 要否
秘密鍵 秘密にするべき証明書のデータ 必須
公開鍵 公開してよい証明書データ 必須
中間証明書 ルート認証局から直接証明書を配布されない場合に必要 不要な場合もある

サーバ証明書をApacheに導入

作成したSSLサーバ証明書に使う秘密鍵と公開鍵は、Webサーバに認識させる必要があります。秘密鍵と公開鍵がどこにあるかを記載しているWebサーバの設定ファイルは/etc/httpd/conf.d/ssl.confで指定します。

Apacheのインストール後にSSLサーバ証明書を瀬鄭する場所

上の図は、/etc/httpd/conf.d/ssl.confの中を表示した状態で、行番号が先頭の数字です。

①はSSLサーバ証明書の公開鍵を置くファイル名をフルパスで指定しています。②はSSLサーバ証明書の秘密鍵を置くファイル名をフルパスで指定しています。③はSSLサーバ証明書に中間証明書が必要な場合に使います。標準では先頭でコメントアウトしてあります。

各ファイルの内容を作成したサーバ証明書に置き換えるか、別のファイルに保管してファイルのパスを書き換えるかを選んでSSLサーバ証明書のデータをファイルに置きます。

データをファイルに反映し、設定ファイルも正しく書き換えれば、apachectl configtestで設定内容を確認して、apachectl graceful かsystemctl restart httpdで変更内容を反映します。

サーバ証明書を反映した後に、https://で始まるWebサイトにアクセスすると証明書が更新されていることを確認できます。

Apacheのhttpからhttpsへの転送設定

https://で始まるWebサイトを構築できたら、最後にhttp://で接続してきた時にhttps://に転送する方法を説明します。httpのWebサイトを定義している場所に以下の設定を入れます。

Apacheのインストール後にHTTPからHTTPSへのリダイレクト設定

上の図は/etc/httpd.conf/httpd.confをviで編集し、行番号を左側に表示させています。135行目付近に/var/www/htmlのディレクトリ設定箇所があります。ここに上の図の赤枠内のように設定を入れます。

変更を保存して、systemctl restart httpdで変更を反映します。これでHTTPからHTTPSにリダイレクトされます。

ファイアウォールの設定確認

ApacheでWebサーバを構築できても、ブラウザで接続してみたとき、Webサイトが表示できないことがあります。いくつか原因がありますが、もっとも身近な原因としてCentOS8で標準で動いているファイアウォールが原因となる場合があります。

Webサーバを構築した時、HTTPとHTTPSのプロトコルを使います。ファイアウォールで拒否していないか確認してください。CentOS8に標準でインストールされているファイアウォールの設定方法がわからない方は、firewall-cmdでCentOSを安全に公開しよう!で説明しています。参考にしてください。

まとめ

Apacheのインストールと基本的な設定を紹介しました。他にも細かい設定ができますが、まずは基本的なWebサーバとして動作する設定と常時SSLへの対応ができるように説明しました。

MySQLをCentOSに簡単インストール

WordPressやRedmineなど、オープンソースのソフトウェアにデータベースとしてよく使われているMySQLのインストール方法をまとます。サーバOSは実績のあるCentOS8を初期インストール後の標準の状態を前提として使います。

WordPressのインストールについては、wordpressは簡単にインストールできるでまとめています。

MySQLデータベースのイメージ
このページの結論

MySQLをCentOS8にインストールするポイントは以下です。

  1. MySQLサーバをインストールする
  2. 初期設定する
  3. MySQLサーバを起動する
  4. データベースを作る
  5. バックアップ設定する

MySQLのインストールと起動

MySQLをインストール

CentOS8では名称がMariaDBとなっています。まずはrootでCentOSサーバにログインします。

インストールするパッケージはmariadbとmariadb-serverです。dnf install mariadb mariadb-server とコマンドで入力します。

WordPressのデータを保管するMariaDBをインストール

上の図のように、dnfコマンドでインストールします。ソフトウェアをインストールする作業はこれで完了です。

MySQLの初期設定

インストールが終わったら、文字化けが起きないように文字コードを設定します。そのために/etc/my.cnf.d/mariadb-server.cnfを編集します。

MariaDBの文字コードを設定

上の図のように、[mysqld]の直下に行を挿入し、character-set-server=utf8と入力します。文字コードを設定したら保存して閉じます。

次にMariaDBサーバを起動します。systemctlコマンドを使います。systemctlコマンドを使って起動状態を確認します。systemctlコマンドを使うと自動起動するかどうか、今起動中か停止しているかの2点を確認できます。

MariaDBの起動状態を確認

上の図のように、①systemctl status mariadbとと入力すると、mariadbの状態が表示されます。②自動起動するかについてはdisabled(無効)なので、自動起動しません。③現在の起動状態かどうかについては、inactive(dead)のため停止中です。

MySQLを起動

MySQLを起動には2種類あります。1つが起動時に自動的に起動させることです。2つ目が今手動で起動させることの2点があります。

まずは1点目の起動時に自動で起動するように設定します。systemctl enable mariadbと入力します。

WordPress用に使うMariaDBをシステム起動時に自動起動する設定

上の図のように、MariaDBがシステム起動時に自動で立ち上がるようにする設定コマンドです。赤線部分で入力しています。

コマンドの入力が終わったら、もう一度systemctl status mariadbコマンドで状態を確認します。

自動起動設定後のMariaDBの状態確認

上の図のように自動起動を設定したら、②の部分がdisabled(無効)からenabled(有効)に変わりました。

次に2点目の今停止しているMySQLを起動状態に変更します。上の図でMariaDBが停止している③の状態を起動状態にします。systemctl start mariadbでMySQLサーバを起動します。

自動起動と起動させたMariaDBの状態

上の図のように、①MySQLサーバを手動で起動します。②の自動起動状態は変わりません。③今の起動状態はactive(動作中)に変わりました。

MariaDBの詳細な状態確認

上の図のように、赤枠で囲った部分のcharacterの文字コードがすべて同じであれば文字化けは起こりません。MariaDBが起動していないと上の内容は表示されません。

以上でMySQLサーバの起動と確認は完了です。

MySQLデータベースの作成

データベースを作成するには、今MySQLの状態を確認しないと作ることができません。

MySQLの現在の状態を確認

具体的にデータベースを作成するにあたり、既存のデータベース名とユーザー名が重複しないようにします。

意図的にデータベース名やユーザー名を重複させることはありますが、新たなソフトウェアのデータを保管するデータベースの領域は分けて作ることが一般的です。

MySQLの作成済みデータベース名を確認

まずはデータベース名が重複していないか確認します。今のMySQLに登録してあるデータベース名を表示します。

rootでログインしてmysqlshowコマンドを実行します。

MySQLに登録済みのデータベースを表示

上の図では、初期設定直後のMySQLデータベースサーバに対して実行しました。information_schema、mysql、performance_schemaの3つのデータベースしかありません。

MySQLの作成済みユーザー名を確認

次にMySQLコマンドでデータベースに接続できる登録済みユーザーの一覧を表示します。

MySQに登録済みユーザーを表示

上の図のように、MySQLに登録しているユーザーを表示します。①mysqlコマンドでmysqlデータベースに接続します。②select分でuserテーブルからuser列とhost列を表示します。③ユーザーアカウントrootしかありません。ホストはlocalhostからのみ接続を許可されています。

password列は表示していないですが、デフォルトのrootはパスワード無しで登録されていますので、空欄です。パスワードを登録すると暗号化されたパスワードが入ります。

MySQLデータベースの設計

MySQLに登録しているデータベースとユーザー名が判明しましたので、重複しないようデータベースを設計します。設計に当たっては、最低でも以下3つの情報が必要です。

 
項番 項目 設定値
1 データベース名 testdb
2 ユーザー名 testuser
3 パスワード teStP@ss

MySQLの設定値は大文字小文字は区別されます。ただし、OSはユーザー名の大文字小文字は区別しないので、大文字と小文字の区別はしないという制約をデータベース設計に課します。つまり、Userとuserは同じとします。

MySQLデータベースの構築

前項で設計した、testuserが全権限を持ったMySQLデータベースtestdbを作ります。

MySQLでデータベースを構築

上の図のように、rootでログインしてから①mysqlコマンドを実行します。②データベースtestdbを作ります。③testuserユーザーをパスワードteStP@ssで作成します。④testuserユーザーにtestdbデータベースの全権限を付与します。⑤権限変更を即時反映します(古いバージョンだと必要な場合もあると思います)。⑥MySQLコマンドの入力を終了します。

上の図のコマンド実行結果のように、「Query OK」と表示されれば正常に処理されています。

作成したユーザー、データベースを削除する場合はdropコマンドを使います。drop user testuser、drop database testdbで削除できます。

作成したMySQLデータベースとユーザーの確認

mysqlコマンドを使います。ユーザー名とデータベース名を指定しパスワードを端末から入力します。

作成したMySQLデータベースとユーザーの確認

上の図のように、-uオプションを指定するユーザー名を指定できます。-pはパスワードを端末から入力する指示です。最後のtestdbはデータベース名です。

パスワードを正しく入力するとtestdbのtestuserで接続できていることが確認できます。statusコマンドでどのユーザーでどのデータベースに接続しているか表示することもできます。

MySQLデータベースのバックアップ

一番簡単な方法はrootでサーバへログインした後、mysqldumpコマンドを使います。引数に–all-databasesを付けるとMySQLデータベースを初期構築した後にmysqldump –all-dataabsesで出力したSQLをmysqlコマンドで流し込むだけで復旧できます。

データベースはメモリ上でデータの更新を行いますので、ディスク上のファイルをコピーしても復元できません。必ずmysqladminを使って復元用のSQLコマンドをバックアップとして取得してください。

なお、mysqladminで取得したバックアップデータはSQL文が記載してあるテキスト文書のため、圧縮して保管することをお勧めします。

簡単ですが、MySQLデータベースを構築する際の参考にしていただけると幸いです。

WordPressは簡単にインストールできる!

ブログやWebサイトを簡単に作れるWordPressですが、テーマを変えたり構成を変えたり試したいことないでしょうか? そのような時、本番環境を壊さずに試せる検証環境があると良いですよね。

このページではWindowsパソコン上にWordPressをインストールして検証環境を作ります。試してみると思っていたより簡単に立ち上げることができましたので紹介したいと思います。

WordPressの検証環境ができるとWebサイトの移行や新しテーマのテストなど、変更後の影響を事前に確認できるので、とても便利です。

WordPressのテストサイトを使う

このページの結論

Windows上でWordPressを直接動かすことは簡単ではないです。でも、Hyper-V上にCentOSをインストールしてその上でWordPressを動かすと簡単に構築できます。具体的手順は以下です。

  1. Windows上のHyper-VにCentOSをインストールして起動する
  2. CentOSの上にLAMP(Linux, Apache, MySQL, PHP)環境を作る
  3. WordPressをインストールして起動する

WordPressの環境を準備

CentOSのインストールと起動

CentOSを動かすためにHyper-Vを使う

Windows上でCentOSを直接起動するには、Hyper-Vの助けが必要です。Hyper-VをWindows上で動かすにも条件があります。詳細な手順については、仮想環境を個人で試用してみたいを参照してください。

Hyper-Vの上でCentOSをインストールして起動する

Windows上でHyper-Vが動作したら、仮想環境なので少し手順が違います。でもHyper-V上でCentOSをインストーする手順はCPUやメモリ、ディスクリソースを定義することですので、わかればそこまで難しいことではないと思います。

Professional以上のエディションのWindows10であれば標準でHyper-Vが付いています。パソコンのリソースは2台動かすために必要ですが、追加の費用が不要なのは助かります。

Hyper-V上にCentOSをインストールする具体的な手順は、CentOSのインストールを最短で!を参照してください。

データベースサーバを起動

データベースはMySQLを使います。データベースのインストールについてはMySQLをCentOSに簡単インストールの項番1でにまとめています。

Webサーバのインストール

Webサーバはインストールが容易なApacheを使います。Apache本体とmod_sslをインストールします。mod_sslはApacheにSSLを提供するApache用のモジュールです。

rootでログインしてdnf install apache mod_sslと入力して2つの機能をインストールします。

WordPress用ApacheとSSLのインストール

上の図のように、赤線部分でパッケージインストールコマンドを実行します。標準では入っていないので、インストールするか確認メッセージが最後に表示されています。インストールするのでyキーとEnterキーを入力してインストールを進めます。

WordPress用ApacheとSSL機能のインストール完了

上の図のように、多くのインストールメッセージが流れていきます。最後に「完了しました!」と表示されれば正常にインストールが完了しています。

これでWebサーバとSSL機能のインストールが完了しました。次はWebサーバを起動します。データベースMariaDBサーバと同じように、自動機能を有効化して、起動します。

WebサーバのApacheは高機能で本来は多くの設定機能があります。今回は検証環境を簡単に立ち上げることを目的としているので、細かい設定や機能は省略して標準機能で立ち上げます。

WordPress用Apacheの自動起動とサーバ起動

上の図では、①Webサーバの自動起動と起動状態を表示します。②自動起動はdisabled(無効)で③サービスはinactive(dead)で停止状態です。

④Webサーバの自動起動を有効にします。

⑤もう一度①と同じようにWebサーバの自動起動と起動状態を表示します。⑥自動起動はenabled(有効)に変わりましたが、⑦サービスはinactive(dead)で変わりません。

⑧Webサーバを起動します。

⑨もう一度①⑤と同じようにWebサーバの自動起動と起動状態を表示します。⑩自動起動はenabled(有効)で変化は無いですが、⑪サービスはactive(running)で起動状態に変わりました。

良く上の図のメッセージを見ると⑪から下3行目にport 443, port80 とhttpsのポートでもWebサービスを起動しました。サーバ証明書は自己署名になりますが、SSL対応のWebサーバが起動できたことになります。

PHPのインストール

WordPressに必要なPHPのモジュールは以下の3つです。

 
項番 パッケージ名 説明
1 php PHPプログラム本体(Apache用モジュールも含まれる)
2 php-json JSON形式のデータを扱うPHP拡張
3 php-mysqlnd MySQLへ接続する機能を使うPHP拡張

上の3つのパッケージをdnfコマンドでインストールします。

WordPress用にPHPをインストール

上の図のように、赤線部分でPHP関連モジュールをインストールします。インストールが完了したら、PHP自体の設定は終わりです。WebサーバのApacheはPHPモジュールを認識するために再起動が必要です。

WebサーバApacheでPHPもモジュールを読み込ませるためにsystemctl restart httpdで再起動するかシステムを再起動します。

以上でPHPの設定は完了です。

SELinuxの設定

WordPressを動作させるにはSELinuxの設定は必須です。方法は2つあります。SELinuxを無効にする。SELinuxがWordPressの動作に影響がないよう設定を許容する。以上の2つになります。

SELinuxを無効にする方法はお勧めはできませんが、簡単に実行できます。/etc/selinux/configのファイルをエディタで開き、SELINUXの値をdisabledに変更して、サーバを再起動します。これでSELinuxが無効になります。

もう一つはSELinuxの設定を緩和します。実施することは2つです。Apacheがネットワーク接続できるように許容することと、Apacheのプロセスがデータを書き込めるように許容することです。

Apacheがネットワーク接続できるように許与するには、httpd_can_network_connectの値を1にします。コマンドはsetsebool -P httpd_can_network_connect=1を実行します。

Apacheのプロセスがデータを書き込めるように許容するには、httpd_unifiedの値を1にします。コマンドはsetsebool -P httpd_unified=1を実行します。

SELinuxのWeサーバのネットワーク接続を許可

上の図の1行目にhttpd_can_network_connectの値を1に変更するコマンドです。2行目でgetseboolで内容を確認しています。-Pは恒久的に設定を反映します。-Pが無いと再起動した後に設定値が戻りますので、注意してください。また、イコール(=)前後は空白を入れるとエラーになりますので、ご注意ください。

次にApacheのプロセスがデータを書き込めるように許容します。設定する変数はhttpd_unifiedを1に変更します。同じコマンドで設定します。

以上でSELinuxの設定は完了です。

WordPressのインストール

WordPressソフトウェアのダウンロード

WordPressはダウンロードサイトから取得します。取得したらCentOSのサーバに置きます。zipでもtar.gzでもどちらでもCentOSサーバ上で展開できます。

WordPressをダウンロードサイトから取得

WordPressソフトウェアの展開

ダウンロードサイトから取得したWordPressソフトウェアを/var/www/html/下に展開します。zipなら、”unzip [ファイル名]”コマンドで展開します。tar,gzならtarコマンドに “tar -zxf [ファイル名]”コマンドで展開します。

展開するとwordpressディレクトリが出来上がります。フルパスは/var/www/html/wordpress/の下にWordPressのソフトウェアが展開されたことになります。

WordPressのURL調整

WebサーバApacheのWebサイトトップディレクトリは/var/www/htmlディレクトリです。このまま公開するとhttps://サイト名/wordpress/がWordPressを使ったWebサイトになります。

WordPressのサイトをトップディレクトリに持ってくる場合にはApacheのせてい変更が必要です。そのためにはApacheのDocuemntRootを/var/www/htmlから/var/www/html/wordpressに変更します。変更後の/etc/httpd/conf/httpd.confは下のようになります。

WordPressのディレクトリをDocumentRootにする

上の図はCentOS8で/etc/httpd/conf/httpd.confをviで開き、行数を左に表示させた状態です。122行目にDocumentRootの指定がありますので、修正しました。変更後保存して終了します。

設定が完了したら、Webサーバに反映します。systemctl restart httpdでWebサーバを再起動します。又はapachetl gracefulで設定ファイルを再読み込みさせます。

WordPress用データベース領域の作成

WordPress用のデータを保存する領域をMariaDBに作成します。作るデータベース名などのパラメータは以下とします。

 
項番 項目 設定値
1 データベース名 wordpress
2 ユーザー名 wordpress
3 パスワード W0rdPress

データベースの作成方法については、MySQLをCentOSに簡単インストールの項番2にまとめています。

WordPressの初期設定

それではWebサーバにアクセスしてWordPressの初期設定を反映します。CentOSのサーバにrootでログインします。左上のアクティビティからFirefoxを立ち上げて、https://localhost/にアクセスします。

Wordpressの初期セットアップ画面

上の図のように表示されれば、WebサーバとPHPの設定は完了です。「左下のさあ、始めましょう」をクリックして進みます。

WordPressの初期セットアップでデータベースへの接続情報を入力

上の図のように、WordPressのデータを保管するデータベースへの接続情報を入力します。MariaDBのインストール時に設定した値を設定していきます。データベース名はwordpress、ユーザー名はwordpress、パスワードはW0rdPressです。

データベースのホスト名はlocalhostとしてください。IPv6のループバックIPアドレス::1で接続します。MariaDBの設定の中ではIPv4のポートはListenしていません。

入力を完了すると下のようになります。

WordPress用データベース設定例

テーブル接頭辞は、今回の構築例では標準のままで大丈夫です。左下の「送信」ボタンをクリックして次へ進みます。

WordPress用のデータベース接続情報後にインストールを開始

上の図のようになれば、いよいよデータベースにWordPress用の初期情報を書き込みます。左下の「インストール実行」をクリックします。正常に初期データベースを構築できると下の図を表示します。

WordPress用の初期データベース構築が完了

後はサイト名、管理者のユーザー名とパスワード、管理者のメールアドレスを設定してWordPressの初期設定が完了します。

Hyper-VとCentOSの力を借りて、Windows上にWordPressを容易にインストールして構築することができました。参考になれば幸いです。

CentOSの初期設定とセキュリティを最短で!

CentOSを最短でインストールする記事を掲載しましたが、ここでは最低限の初期設定とセキュリティ対策を行います。ここでは最新版のCentOS8を使います。

ここが終わるとサーバを構築する土台となるCentOSサーバになります。

順番に説明しますが、まずはネットワーク設定を含む初期設定を行います。次にソフトウェアの更新を行い、セキュリティ対策をして完了となります。

CentOSのネットワークとセキュリティをステップアップして習得するイメージ

このページの結論

CentOS8の初期設定とセキュリティは以下を行います。

  1. 初期設定① ネットワーク設定とネットワークへの接続確認
  2. 初期設定② タイムゾーンの設定
  3. セキュリティ対策① kernelを最新版への更新
  4. セキュリティ対策② ソフトウェアの更新

CentOSのネットワーク設定

まずはネットワークに繋がらないと始まりません。CentOSのコンソール画面から管理者アカウントのrootでログインします。

CentOSのネットワークとセキュリティの設定をするためにログイン

上の図のようなGUIのログイン画面では、管理者であるrootアカウントは表示されません。rootでログインするには赤枠内の「アカウントが見つかりませんか?」をクリックするとユーザー名を入力できる画面に変わります。

ログイン名とパスワードを入力するとデスクトップ画面が表示されます。

上の図のように、デスクトップ右上のメニュをクリックして赤枠内の「有線オフ」をクリックします。

サーバ検証用のため、無線ではなく有線LANを想定しています。

CentOS8でネットワーク接続を有効にする

上の図の赤枠のように、「接続オフ」のサブメニューの直下にある「接続」をクリックします。クリックするとネットワーク接続されます。もう一度右上のメニュを開きます。

CentOS8のネットワーク接続が有効になった状態

上の図のように、CentOS8のネットワーク接続が有効になったことがわかります。

接続済みにならない場合はネットワークケーブルが接続してあるか、対向のネットワーク機器が繋がってネットワークインターフェースのリンクが上がっているかを確認してください。

IPアドレスの割り当て

CentOS8のネットワークを有効にしたら、次はIPアドレスを割り当てます。IPアドレスを割り当てる前に、ネットワーク担当者からIPアドレスを割り当ててもらってください。併せてサブネットマスク、デフォルトゲートウェイ、DNSサーバのIPアドレスも聞いておきます。

それではCentOS8へ管理者rootでログインしてデスクトップを表示します。デスクトップ右上の黒いメニューバーをクリックしてメニューを表示します。

CentOS8のネットワーク接続が有効になった状態

上の図の赤枠内にあるネットワークマーク付近をクリックします。

上の図の赤枠内をクリックします。これから詳細なネットワーク設定をします。

DHCPでIPアドレスを自動取得できるネットワークもありますが、用途がサーバであればIPアドレスを固定する必要がありますので、ここでは固定IPアドレスを割り当てる方法を説明します。

上の図のように、ネットワークの設定画面が開きます。赤枠のねじのようなマークをクリックして、有線ネットワークの詳細設定に入ります。

上の図のように、CentOS8のネットワークで有線の詳細設定をするダイアログが表示されます。DHCPが有効な場合はIPアドレスにはDHCPで取得したIPアドレスが表示されます。

最初に①自動でネットワーク接続が有効となるように、①の赤枠の「自動接続する」をクリックしてチェックを入れます。

次に②固定IPアドレスを割り当てるため、赤枠の所にあるIPv4をクリックして固定IPアドレスに変更します。

上の図のように、IPv4の設定に変わります。赤枠の箇所をクリックしてIPアドレスの割り当てを自動(DHCP)から手動に変更します。

上の図のように、固定IPアドレスを入力するダイアログに変わります。①にIPアドレスとネットマスク(255.255.255.0など)、ゲートウェイのIPアドレスを入力します。

②にはDNSサーバのIPアドレスを入力します。入力が終わったら右上の適用ボタンをクリックしてIPアドレスの詳細設定ダイアログを閉じます。

設定が完了したら次は変更した内容を反映します。

上の図のように、CentOS8のデスクトップ右上のメニューから有線のサブメニューを開き、赤枠の「オフにする」でネットワークを一度停止します。同じ操作をして右側のように赤枠内の「接続」をクリックして、ネットワークを再接続します。

ネットワーク接続の確認方法

先ほどの図で、右上のメニューから「有線設定」を選べば下のようにネットワーク設定の詳細ダイアログを表示できます。

実際にネットワークに接続しているかは、端末を開き、デフォルトゲートウェイのIPアドレスにPINGコマンドを送り、ICMP応答が得られるか、ARPテーブルにデフォルトゲートウェイのMACアドレスが載るかを確認することでネットワーク接続は確認できます。

CentOSのタイムゾーン設定と時刻設定

CentOSをインストールして、ネットワークが接続できたら、次は時間設定をします。時刻が合っていないとログを見た時に何時起きたのかを特定することが難しくなります。

サーバを人が常に監視することは難しいので、ログの情報が重要となります。そのログに記録する時間が現実の時間を合わせないと事実を認識することが難しくなりますので、タイムゾーンは必ず設定しておきましょう。

CentOSのタイムゾーン設定

CentOS8のタイムゾーン設定を行います。

CentOS8のデスクトップから設定を開く

上の図のように、右上のメニューをクリックして、赤枠内の設定ボタンをクリックします。

CentOS8の設定メニューで詳細を探す

上の図のように最後に設定したネットワークが表示されています。赤枠付近にスクロールバーが隠れていますので、左メニューの一番したまで移動して「詳細」をクリックします。

CentOS8の設定で日付と時刻を探す

上の図のように、詳細のサブメニューに入ると左メニューに日付と時刻が表示されるので、赤枠内をクリックします。

CentOS8の日時とタイムゾーン設定

上の図のように、時刻設定とタイムゾーンの指定ができます。赤枠内をクリックすると地図が表示されます。希望の地域をクリックしてタイムゾーンを設定します。

設定後の状態が表示されたら、システムにタイムゾーンの変更が反映されています。

時刻設定

タイムゾーンを設定した図で、自動時刻設定がオンになっていますが、これをオフにすると、グレーアウトしていて変更できないタイムゾーンの上にある時刻設定部分が変更可能となります。

ある程度時刻を合わせておくとログの日時が飛ばないので、見やすくなります。

CentOSのセキュリティ対策

最低限のセキュリティ対策はソフトウェアの更新です。CentOSもWindowsと同じようにホスト型ファイアウォールが標準で動作しています。ソフトウェア更新で多くの脅威からサーバを守ることができるでしょう。

ソフトウェアの更新順序で一番簡単な方法は、kernelを更新してから他のソフトウェアを更新します。kernelの更新は心臓部のソフトウェア更新のため、最悪の場合起動しなくなる危険があります。そのため他のソフトウェアと分けて更新します。

まずは管理者のrootでログインしてください。

kernelの更新

yumで更新しますが、後継ソフトウェアがdnfと呼ばれるツールです。dnfの使い方は基本的にyumと同じです。CentOS8ではyumもまだ使うことができます。

kernelを更新する場合、万一新しいkernelに不備があって起動しない場合に対応するため、今正常に起動しているkernelも保険として残しておきます。

具体的にはdnf install kernelで新しいkernelを追加インストールします。kernelはバージョンごとにインストールするディレクトリが分かれているため、現在のkernelと衝突することはありません。具体的には次のように実行します。

CentOS8のkernel更新の準備

上の図のように、①kernel追加インストールコマンドを実行して、コマンドを実行して更新があることがわかると②更新がある場合はインストールしてよいか確認メッセージが出ます。初期インストールではできるだけ最新版のkernelを使うべきですので、yを入力してインストールします。

上の図の内容を詳しく説明すると現在のkernelのバージョンが 4.18.0-147.el8.x86_64 で、新しいバージョンは 4.18.0-147.8.1.el8_1.x86_64 であることを示してます。

インストールが正常に終了したらシステムを再起動します。再起動コマンドは reboot かshutdown -r now か init 6 を使いましょう。後になるほどUNIXを深く知っている方が使うコマンドです。

無事再起動したらまたrootでログインします。現在どのkernelで起動しているか調べるには uname -r コマンドを使います。

CentOS8で使っているkernelのバージョンを示すコマンド

先ほどインストールしたkernelに変わったことを確認できました。

以上でkernelの更新は完了です。

kernel以外のソフトウェア更新

kernelの更新が完了したら、次はkernel以外のソフトウェアを更新します。kernel更新ほど慎重にする必要はありません。bnf updateで更新します。

CentOS8のソフトウェアをdnfコマンドで更新

上の図のように、dnf update を実行する直前の状態です。コマンドを実行すると次のようになります。

CentOS8のソフトウェア更新確認中

比較的たくさんの更新が出てきました。yを入力してソフトウェアを更新します。更新が完了したら、念のためシステム再起動します。reboot や shutdown -r now や init 6 で再起動します。

システム再起動が無事完了して、CentOSが使えるようになったらソフトウェア更新は完了です。

まとめ

CentOS8のネットワーク設定、タイムゾーン設定で初期設定を行いました。CentOS8の初期設定の最後にソフトウェアを更新してソフトウェア上の脆弱性のないサーバができあがりました。

CentOS8でサーバを構築する方の参考になれば幸いです。