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

インフラエンジニアとして避けて通れないWebサーバは今や無料で構築することができます。機能が豊富なApacheだからこそ基本的なことは押さえておきたいです。
- Apacheのインストールは簡単に無料でできます。
- サーバOSはCentOS8を使います。
- Apacheのパッケージをインストールして、自動起動と起動設定して確認します。
- サーバ証明書を作り常時SSL化します。
目次
Apacheのインストールと初期設定
OSのインストール
OSはCentOS8を使います。CentOS8のインストールについては、CentOSのインストールを最短で!にまとめていますので、参考にしてください。
Apacheのインストール
Apacheをインストールする手順は簡単です。CentOS8のパッケージでhttpdとmod_sslをインストールするだけで最低限のWebサーバソフトウェアは準備が完了します。

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

上の図のように、インストールが正常に完了すると「完了しました!」と表示されます。インストールは異常で終了です。
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の設定内容を確認するコマンドを実行します。②最終的に設定が問題なければ「Syntax OK」と表示されます。なお、メッセージの意味は「ServerNameを指定してWebサイトのFQDNを設定してください」という意味です。
設定を確認後に、変更した設定をApacheに有効にするにはsystemctl restart httpdコマンドを実行します。
以上でApacheの初期設定が完了しました。
Apacheの常時SSL化設定
Webサイトのサーバ証明書を作成
サーバ証明書を作る方法は、SSLサーバ証明書の作り方をわかりやすくを参照して、秘密鍵と公開鍵を準備してください。公開鍵は中間証明書が必要な場合があります。
必要な物 | 用途 | 要否 |
---|---|---|
秘密鍵 | 秘密にするべき証明書のデータ | 必須 |
公開鍵 | 公開してよい証明書データ | 必須 |
中間証明書 | ルート認証局から直接証明書を配布されない場合に必要 | 不要な場合もある |
サーバ証明書をApacheに導入
作成したSSLサーバ証明書に使う秘密鍵と公開鍵は、Webサーバに認識させる必要があります。秘密鍵と公開鍵がどこにあるかを記載しているWebサーバの設定ファイルは/etc/httpd/conf.d/ssl.confで指定します。

上の図は、/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サイトを定義している場所に以下の設定を入れます。

上の図は/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への対応ができるように説明しました。