Apacheインストール・設定 【CentOS Stream 9】

CentOS Stream 9 で Apahce 2.4系のインストール

WebサーバーとしてNginxではなく、昔から使っているApacheを使用して構築しようと思います。CentOS Stream 9でインストールした場合では、「Apache 2.4.53」のバージョンとなりました。インストールはdnfコマンドでインストールします

# dnfコマンドでApacheをインストールします
$ sudo dnf install httpd

# Apacheのバージョンを確認
$ rpm -qa | grep httpd
centos-logos-httpd-90.4-1.el9.noarch
httpd-filesystem-2.4.53-7.el9.noarch
httpd-tools-2.4.53-7.el9.x86_64
httpd-core-2.4.53-7.el9.x86_64
httpd-2.4.53-7.el9.x86_64

 「httpd.conf」の設定を変更

Apacheの設定ファイルである「httpd.conf」を変更します。変更箇所は最低限のセキュリティやサーバー名の変更です

# httpd.conf編集
$ sudo vi /etc/httpd/conf/httpd.conf
# 管理者アドレス
ServerAdmin info@m-yabe.com
# サーバーネーム
ServerName www.m-yabe.com:80
# ディレクトリ一覧を無効にする
Options FollowSymLinks
# ディレクティブを許可(.htaccess等を許可)
AllowOverride All
# phpを追加
DirectoryIndex index.html index.php 
# サーバーの応答ヘッダを最低限の出力とする(最終行に追記) 
ServerTokens Prod

 自動起動及びApacheを起動

設定を変更したら、Apache起動して、Apacheを自動起動するように設定します

$ sudo systemctl start httpd
$ sudo systemctl enable httpd

バーチャルホストの設定

名前ベースのバーチャルホストの設定をおこないます、複数のバーチャルホストを使用するのでバーチャルホストの設定ファイルを置くディレクトリ(/etc/httpd/conf.d/vhosts)を作成して、そのディレクトリにインクルードするようにします

# httpd.confに バーチャルホスト用のディレクトリを追加します
$ sudo vi /etc/httpd/conf/httpd.conf
Include conf.modules.d/*.conf
# バーチャルホスト用のディレクトリに追加
Include conf.d/vhosts/*.conf

バーチャルホストの設定ファイルを作成します

$ sudo vim /etc/httpd/conf.d/vhosts/www_example_com.conf
<VirtualHost *:80>
  ServerName  www.example.com
  ServerAlias www.example.com
  ErrorLog     logs/www.example.com/error.log
  CustomLog    logs/www.example.com/access.log common

  DocumentRoot /var/www/vhosts/www.example.com/html/
  DirectoryIndex index.php index.html

  <Directory /var/www/vhosts/www.example.com/html/>
    Options FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
  </Directory>

</VirtualHost>

設定ファイルを作成したら、ドキュメントルートとログディレクトリを作成します

# ドキュメントルート作成します
$ sudo mkdir -p /var/www/vhosts/www.example.com/
# 所収者をApacheに変更しておきます
$ sudo chown -R apache:apache /var/www/vhosts/

# ログディレクトリを作成します
# sudo mkdir /etc/httpd/logs/www.m-yabe.com

# Apacheを再起動して設定は反映しているか確認します
$ sudo systemctl restart httpd

SSL設定

SSL設定をおこなうには、SSL証明書が必要となるので事前に作成しておきます。先程設定した「www_example_com.conf」の下に下記のように追加します

$ sudo vim /etc/httpd/conf.d/vhosts/www_example_com.conf
<VirtualHost *:443>
  ServerName  www.example.com
  ServerAlias www.example.com
  ErrorLog     logs/www.example.com/ssl_error.log
  CustomLog    logs/www.example.com/ssl_access.log common

  DocumentRoot /var/www/vhosts/www.example.com/html/
  DirectoryIndex index.php index.html

  SSLEngine On
  SSLVerifyClient none
  SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
  SSLCertificateChainFile /etc/letsencrypt/live/www.example.com/chain.pem

  <Directory /var/www/vhosts/www.example.com/html/>
    Options FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
  </Directory>

</VirtualHost>

設定を変更したら、Apacheを再起動します

$ sudo systemctl restart httpd