Webサーバー「H2O」の使い方 on Ubuntu 18.04(Let’s EncryptによるSSL化)

Facebook にシェア
Pocket
LINEで送る
このエントリーを Google ブックマーク に追加

最近はめっぽうH2Oを使うことが多くなったので、紹介。

インストール

apt update 
apt upgrade -y 

apt -y install locate git cmake build-essential checkinstall autoconf 
apt -y pkg-config libtool python-sphinx wget libcunit1-dev nettle-dev 
apt -y libyaml-dev libuv-dev libssl-dev zlib1g-dev
git clone https://github.com/tatsuhiro-t/wslay.git
git clone https://github.com/h2o/h2o.git

# wslay をインストール
cd /usr/local/src
git clone https://github.com/tatsuhiro-t/wslay.git
cd wslay/
autoreconf -i
automake
autoconf
./configure
make
make install

# H2O をインストール
cd /usr/local/src
git clone https://github.com/h2o/h2o.git
cmake -DWITH_BUNDLED_SSL=on .
make
make install

H2Oの設定ファイルを記載

# /etc/h2oディレクトリを作成
mkdir /etc/h2o

# h2oユーザーを作成
useradd h2o

# ログファイル、pidファイル、ドキュメントルートを設置するディレクトリを作成
mkdir /var/log/h2o
mkdir /var/run/h2o
mkdir /var/h2o

# ドキュメントルートのオーナーをH2Oユーザーにし、index.htmlを設置
chown h2o:h2o /var/h2o
sudo -u h2o echo "Hello H2O!" > /var/h2o/index.html

# /etc/h2o/h2o.conf を作成
vi /etc/h2o/h2o.conf

h2o.confの内容

user: h2o
hosts:
  "example.com:80":
    listen:
      port: 80
    paths:
      # Let's Encrypt用の設定
      "/.well-known":
        file.dir: /var/h2o/.well-known
      # ドキュメントルート
      "/":
        file.dir: /var/h2o

access-log: /var/log/h2o/access.log
error-log: /var/log/h2o/error.log
pid-file: /var/run/h2o/h2o.pid
#file.index: ['index.php', 'index.html']

systemd用の設定ファイルを作成

vi /etc/systemd/system/h2o.service

h2o.serviceの中身

[Unit]
Description=H2O the optimized HTTP/1, HTTP/2 server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/var/run/h2o/h2o.pid
ExecStartPre=/usr/local/bin/h2o -c /etc/h2o/h2o.conf -t
ExecStart=/usr/local/bin/h2o -c /etc/h2o/h2o.conf -m daemon
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

H2Oを起動

systemctl start h2o

ブラウザで ドメインにアクセスして Hello H2O! と表示されたら成功。

SSL化

# Certbot をインストール

apt install software-properties-common
add-apt-repository universe
add-apt-repository ppa:certbot/certbot
apt update
apt install certbot 

# certbot で SSL証明書を発行
certbot certonly --webroot --webroot-path /var/h2o/ -d example.com

#メールアドレス等聞かれる

H2Oに適用

vi /etc/h2o/h2o.conf

h2o.confの中身

user: h2o
hosts:
  "example.com:80":
    listen:
      port: 80
    paths:
      "/.well-known":
        file.dir: /var/h2o/.well-known
      # httpsにリダイレクト
      "/":
        redirect: localhost:443
  "example.com:443":
    listen:
      port: 443
      ssl:
        certificate-file: /etc/letsencrypt/live/example.com/fullchain.pem
        key-file: /etc/letsencrypt/live/example.com/privkey.pem
    paths:
      "/":
        file.dir: /var/h2o/

access-log: /var/log/h2o/access.log
error-log: /var/log/h2o/error.log
pid-file: /var/run/h2o/h2o.pid
#file.index: ['index.php', 'index.html']

H2Oを再起動

systemctl restart h2o

ブラウザでドメインにアクセスして、https://〜 にアクセスしていたら成功。また、「HTTP/2 and SPDY indicator」(https://chrome.google.com/webstore/detail/http2-and-spdy-indicator/mpbpobfflnpcgagjijhmgnchggcjblin )をインストールしてアクセスしてみて、下の画像のように青くなっていたらHTTP2によるアクセスが可能となっている。

Related posts

コメントを残す