h2oをビルドするために「ruby2.4」と、WordPressを入れるために、「lamp-mariadb10.2-php7.2」を有効化しました。
コマンドはこちら。
1 |
sudo amazon-linux-extras install ruby2.4 lamp-mariadb10.2-php7.2 |
ここからyumを使って、php7.2.5、mariadb10.2.10を入れました。
h2oのビルドについては、以前に書いた記事とほとんど一緒で大丈夫でした。
それぞれ最新バージョンでうまくいきました。
cmakeは3.12.1になっていました。
libwslay は何故かうまくビルドできなくなったので、少し手順を追加しました。
■libwslayのインストール
https://github.com/tatsuhiro-t/wslay
こちらのサイトからgit cloneしてビルドします。
1 2 3 4 5 6 7 8 9 |
git clone https://github.com/tatsuhiro-t/wslay cd wslay/ autoreconf -i automake autoconf sed -r -i 's/^(SUBDIRS = lib tests examples) doc.*/\1/' Makefile.in ./configure make sudo make install |
■その他
php、php-fpm、mariadbの設定を調整して、古いインスタンスからhtmlとdbを移行しました。
■h2oの設定ファイル
設定ファイルもあれから少し変わりました。
1 |
# vi /etc/h2o/h2o.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
user: h2o num-threads: 2 compress: ON listen: 80 listen: port: 443 ssl: certificate-file: /path/cert.pem key-file: /path/privkey.pem cipher-preference: server file.custom-handler: extension: .php # h2oに任せる場合 #fastcgi.spawn: "PHP_FCGI_CHILDREN=10 exec /usr/local/bin/php-cgi" # php-fpmを使う場合 fastcgi.connect: port: /run/php-fpm/www.sock type: unix file.index: [ 'index.php', 'index.html' ] hosts: "e-kamo.net:80": paths: "/": redirect: status: 301 url: https://e-kamo.net/ "e-kamo.net:443": header.add: "Strict-Transport-Security: max-age=31536000" header.add: "X-Content-Type-Options: nosniff" header.add: "X-UA-Compatible: IE=Edge" paths: "/": # 以下に静的ファイルが存在したら返す file.dir: /var/www/html file.dirlisting: OFF # wpのパーマリンク対応 redirect: url: /index.php/ internal: YES status: 307 "www.e-kamo.net:80": paths: "/": redirect: status: 301 url: https://e-kamo.net/ "www.e-kamo.net:443": paths: "/": redirect: status: 301 url: https://e-kamo.net/ access-log: /var/log/h2o/access-log error-log: /var/log/h2o/error-log pid-file: /var/run/h2o.pid |
ログは適当にローテートします。
■h2oの起動スクリプト作成
systemctlに代わったので、起動スクリプトは新しく作成します。
1 |
# sudo vi /lib/systemd/system/h2o.service |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[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.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 |
これで起動できるか確認する。
1 2 |
sudo systemctl enable h2o.service sudo systemctl start h2o.service |
できたー。
実はPIDFileのパスで色々ハマったけど、結果おーらい。/var/run/h2o/h2o.pidにしたかったけどダメだった。
感想としては、h2oのビルドが滅茶苦茶速くなった。
ネットワークパフォーマンスも「低から中」だったのが「Up to 5 Gigabit」になったので、でかいファイルもすぐに落とせます。
仮想CPUも2つになったので、h2oとphpとmariadbを一緒に動かしても、そんなに重く感じません。
WordPressの動作もサクサクです。
これで毎月50円お得。
会社では300台以上t2.nano使っているので、t3.nanoに移行するだけで、毎月15,000円もお得になります。
パフォーマンスも良くなる。
いいことづくめ。