Ubuntu 20.04 に Apache httpd 2.4 をインストールする


はじめに

Ubuntu 20.04 に Apache httpd 2.4 をインストールするためのメモ。

環境

$ hostnamectl status
   Static hostname: ---
         Icon name: computer-vm
           Chassis: vm
        Machine ID: ---
           Boot ID: ---
    Virtualization: kvm
  Operating System: Ubuntu 20.04.3 LTS
            Kernel: Linux 5.4.0-45-generic
      Architecture: x86-64

セットアップ

1. Apacheをインストール

$ sudo apt update \
  && sudo apt list --upgradable \
  && sudo apt -y autoremove \
  && sudo apt -y upgrade \
  && sudo apt -y install apache2

2. ufwを設定

ufwが有効な場合は、Apacheを許可する。

$ sudo ufw allow 'Apache'

3. Apache Http Serverを設定

Apacheのコンフィグを作成する。

$ sudo vim /etc/apache2/sites-available/<DOMAIN>.conf
<VirtualHost *:80>
    ServerName <DOMAIN>
    DocumentRoot /var/www/<DOMAIN>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

上記ファイルを有効化する。

$ sudo a2ensite <DOMAIN>.conf \
  && sudo a2dissite 000-default.conf

構文テストを実施する。

$ sudo apache2ctl configtest
Syntax OK

再起動を実施する。

$ sudo systemctl restart apache2

4. SSLとリダイレクトを有効化

SSLを利用できる状態にします。

$ sudo a2enmod ssl rewrite

先程作成したApacheのコンフィグをに以下を追記します。<DOMAIN>は自身のドメインに置換する必要がある。

<VirtualHost *:80>
    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    #ServerName <DOMAIN>
    #DocumentRoot /var/www/<DOMAIN>
    #ErrorLog ${APACHE_LOG_DIR}/error.log
    #CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:443>
    ServerName <DOMAIN>
    DocumentRoot /var/www/<DOMAIN>
    ErrorLog ${APACHE_LOG_DIR}/ssl_error.log
    CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/<DOMAIN>/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/<DOMAIN>/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/<DOMAIN>/chain.pem

    # enable HTTP/2, if available
    Protocols h2 http/1.1
</VirtualHost>

SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
SSLHonorCipherOrder     off
SSLSessionTickets       off

SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

再起動を実施する。

$ sudo systemctl restart apache2