Ubuntu + Apache + SSL + デジタル証明書 （1.Apache編）

タイトルそのまんまです。

[Ubuntu + Apache + SSL + デジタル証明書 （1.Apache編）](https://qiita.com/azumabashi/items/3aeb1ca2d2d214947467) ←本編です。
[Ubuntu + Apache + SSL + デジタル証明書 （2.SSL編）](https://qiita.com/azumabashi/items/2c53d5783af0dcf2c2a7)
[Ubuntu + Apache + SSL + デジタル証明書 （3.デジタル証明書編）](https://qiita.com/azumabashi/items/f9675469914b759d1e0c)

作業の顛末をほぼリアルタイムで記録しておきます。
（あとでまとめようなんてのは、たぶん無理だから）
作業日：2020年6月

参考書
・Ubuntuサーバー徹底入門　翔泳社

あとはやりながら、Qiitaの先輩方の記事を参考にして進めることにします。

環境：さくらのVPS V5（OS：Ubuntu 18.04 amd64）
DNSサーバーについてはさくらさんに任せています。

初心：
これまで V4(OS:CentOS7 x86_64) を使っていたので、勝手が違うしApacheもシンプルな設定でしか使ったことがなかったので、壁にぶつかりながら自分を鍛えていきます。

パッケージ情報のインデックスを更新します。

```
$ sudo apt update
```
システムを更新します。

```
$ sudo apt upgrade
```

作業を始める前に、開いているポートを確認しておきます。

```
$ ss -atl
State    Recv-Q    Send-Q        Local Address:Port         Peer Address:Port
LISTEN   0         128           127.0.0.53%lo:domain            0.0.0.0:*
LISTEN   0         128                 0.0.0.0:ssh               0.0.0.0:*
LISTEN   0         128                    [::]:ssh                  [::]:*
```

Apacheをインストールします。

```
$ sudo apt install apache2
```
開いているポートを確認します。httpが開きました。

```
$ ss -atl
State    Recv-Q    Send-Q        Local Address:Port         Peer Address:Port
LISTEN   0         128           127.0.0.53%lo:domain            0.0.0.0:*
LISTEN   0         128                 0.0.0.0:ssh               0.0.0.0:*
LISTEN   0         128                       *:http                    *:*
LISTEN   0         128                    [::]:ssh                  [::]:*
```

/etc 以下にApache関連の設定ファイルが生成されました。

```
$ ls /etc/apache2
apache2.conf    conf-enabled  magic           mods-enabled  sites-available
conf-available  envvars       mods-available  ports.conf    sites-enabled
```

/var 以下にはデフォルトのindex.htmlファイルが生成されています。

```
$ cd /var/www/html
$ ls
index.html
```

Apacheが稼働している事を確認しておきます。
htmlの長いソースが出力され、最後に success となりました。

```
$ curl localhost && echo success || echo failed

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
（中略）
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Apache2 Ubuntu Default Page: It works</title>
（中略）
  </head>
  <body>
（中略）
        <div class="section_header section_header_red">
          <div id="about"></div>
          It works!
        </div>
（中略）
  </body>
</html>

success
```

Webブラウザからアクセスできるよう、ファイヤウォールの設定を変更します。

```
$ sudo ufw allow http
Rules updated
Rules updated (v6)
```

80番のポートが外部に開いたことを確認します。

```
$ sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 80/tcp                     ALLOW IN    Anywhere
[ 2] 22/tcp                     LIMIT IN    Anywhere
[ 3] 80/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 4] 22/tcp (v6)                LIMIT IN    Anywhere (v6)
```

Webブラウザからアクセスしてみます。
/var/www/html/index.html が送出されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/60ae74ca-98cb-a4b4-5c25-f02563f062c9.png)

システム起動時にApacheも自動的に起動するようにしておきます。

```
$ sudo systemctl enable apache2
Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable apache2
```
ここで、/etc/apache2/apache2.conf を覗いておきます。

```
$ cat apache2.conf
（前略）
#Mutex file:${APACHE_LOCK_DIR} default
（中略）
DefaultRuntimeDir ${APACHE_RUN_DIR}
（中略）
PidFile ${APACHE_PID_FILE}
（中略）
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
（中略）
ErrorLog ${APACHE_LOG_DIR}/error.log
（後略）
```

上の${APACHE_*}って何なの、というのが /etc/apache2/envvars に記述されているようなので、控えをとっておきます。
APACHE_PID_FILE=/var/run/apache2(SUFFIX)/apache2.pid
APACHE_RUN_DIR=/var/run/apache2(SUFFIX)
APACHE_LOCK_DIR=/var/lock/apache2(SUFFIX)
APACHE_LOG_DIR=/var/log/apache2(SUFFIX)
APACHE_RUN_USER=www-data
APACHE_RUN_GROUP=www-data

```
$ cat /etc/apache2/envvars
# envvars - default environment variables for apache2ctl

# this won't be correct after changing uid
unset HOME

# for supporting multiple apache2 instances
if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; then
        SUFFIX="-${APACHE_CONFDIR##/etc/apache2-}"
else
        SUFFIX=
fi

# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
# temporary state file location. This might be changed to /run in Wheezy+1
export APACHE_PID_FILE=/var/run/apache2$SUFFIX/apache2.pid
export APACHE_RUN_DIR=/var/run/apache2$SUFFIX
export APACHE_LOCK_DIR=/var/lock/apache2$SUFFIX
# Only /var/log/apache2 is handled by /etc/logrotate.d/apache2.
export APACHE_LOG_DIR=/var/log/apache2$SUFFIX

## The locale used by some modules like mod_dav
export LANG=C
## Uncomment the following line to use the system default locale instead:
#. /etc/default/locale

export LANG

## The command to get the status for 'apache2ctl status'.
## Some packages providing 'www-browser' need '--dump' instead of '-dump'.
#export APACHE_LYNX='www-browser -dump'

## If you need a higher file descriptor limit, uncomment and adjust the
## following line (default is 8192):
#APACHE_ULIMIT_MAX_FILES='ulimit -n 65536'

## If you would like to pass arguments to the web server, add them below
## to the APACHE_ARGUMENTS environment.
#export APACHE_ARGUMENTS=''

## Enable the debug mode for maintainer scripts.
## This will produce a verbose output on package installations of web server modules and web application
## installations which interact with Apache
#export APACHE2_MAINTSCRIPT_DEBUG=1

```

[Ubuntu + Apache + SSL + デジタル証明書 （2.SSL編）](https://qiita.com/azumabashi/items/2c53d5783af0dcf2c2a7)
[Ubuntu + Apache + SSL + デジタル証明書 （3.デジタル証明書編）](https://qiita.com/azumabashi/items/f9675469914b759d1e0c)
に続きます。