(注意:構築手順等の情報はありません。多くの有用な記事がありますので、そちらを参考にしてください。〕
エンジニアの数は数十人(<50)規模で、大手企業さんのシステム開発や運用に客先常駐や派遣契約でエンジニアさんが参画する、というビジネスモデルの会社で総務をしている、元エンジニアです。
さて、新型コロナの影響でGoogle Chrome 81のリリースも延期になったりなんぞしたわけですが、Chrome対応で弊社も対応を迫られました。
弊社のような規模では外部公開用のサーバーが社内のサーバールームで何台も唸っているなどということはあまりなく、自社ホームページもメールとあわせて、レンタルサーバー会社のなるべく安いプランで運用しています。
そのレンタルサーバーの会社から連絡が来たのが、2020年1月15日。
「あなたの借りてるサーバーは古いからTLS1.2に対応してなくて、3月以降警告画面出るかも。でもこのサーバーをTLS1.2に対応させる予定はないので、現行の新プランに更新してね」というもの。
そこから移行を検討したわけですが、そのまま新プランに乗り換えるにしても、旧サーバーのデータはそのまま引き継がれないので、ファイルをFTPで落とし→上げ直し、Wordpressのデータをバックアップし→リストアし、という作業はどうしても必要になります。
ということは、どのみち移行の手間はかかるのですから、そのまま同じレンタルサーバーの新プランに移行するだけでなく、他の方法を選んだとしても手間はそう大きくは変わりません。
せっかくなので、以前から気になっていたことをいろいろ解決できるようにと考えました。
- PHPのバージョンは最新に
- PHPのバージョンが古すぎてWordpressがアップデートできなくなっていました
- HTTP/2対応
- IPv6対応
- Brotli対応
- Let's Encrypt対応
PHPのバージョン古い問題は今後継続的にホームページを公開する上でセキュリティレベルを維持しなくてはならないので必要に迫られて、HTTP/2、IPv6、Brotli対応は表示の高速化によってGoogle先生の評価を高めたいというのがひとつ、職を探しているエンジニアの目線、それもネットワーク周りにちょっとうるさい人の目線で見て「おっ」と思って貰いたいというのがひとつです。
Let's Encryptについては、今までRapidSSLの電子証明書を使っていましたが年間1万円弱掛かっているのでこれを削減したい。EVでもOVでもないDV証明書にお金をかけたくないなという理由です。
IPv6は今ではスマホからの接続もネイティブでIPv6対応してきているような時代ですからね。フレッツ回線からだとPPPoE装置の輻輳のせいでIPv4が遅く、解決のためにIPv4をIPv6の経路にトンネリングするv6プラスとかDS-Liteとかが増えているわけですが、そもそもサイト側がIPv6ネイティブ対応できるならトンネリングさえ不要で手っ取り早いじゃんというわけです。
そして要件はあとひとつ。
元エンジニアで今でもC#界隈の最新情報を追っている身としては、社内業務の効率化関係の細かいツールを .net Core ベースで作ったり新人教育の一環として作らせたりしているので、それをWEB上に載せられる仕組みは欲しい。
取引先との情報のやり取りを紙ベースから電子に変えていきたいという目論見もあって、それはちょっと規模が大きくなるのでホームページとは当然別のサーバーで考えているんですが、その環境のテストを兼ねて、年間の稼働カレンダーとか、誰に見られたとしてもなにも困らないもので試してみたいなと。
そしてホームページとほぼ同じ設定のサーバーでシステムが動くなら楽だよねということです。
レンタルサーバーどと、1、2、5は対応できるところも多くありますが、3、4が微妙、そして最後の要件は、そんなんAzure系のとこ使わなきゃないだろって話。
というわけで、結論はVPS上にLinuxサーバーを自力で構築する、ということになりました。
構成だけ書きます。
- Ubuntu 19.10
- IPv6対応
- Apache 2.4 + mod_ssl + mod_http2 + mod_deflate + mod_brotli
- PHP 7.4 (php-fpm。SuEXEC環境で実行)
- Wordpress 5.3
- MySQL 8.0.19
- vsftpd (公開鍵証明書を利用した ftps explicit mode)
- sshd (RSA公開鍵認証)
- Let's Encrypt
- .net Core 3.1 (アプリ側のVPS環境のみ)
これで、ブラウザにIPvFooとHTTP2/SPDY Indicatorを入れて、おおIPv6で繋がってる、HTTP/2で繋がってる、と確認し、F12開発者モードでContent-Encoding: br になっているのを確認して、あとは画像などのディレクトリに .htaccessファイルを置いて Cache-control を掛けてさらに高速化したりして、単にTLS1.2対応させるだけでなく、性能向上とコスト削減を図ることができました。
FirefoxやWinSCPで確認すると、TLSが1.3であることを確認できます。
LinuxのディストリビューションにUbuntuを選択したのは、Windows10のWSL環境のLinuxがUbuntuなので、.net Core絡みを扱うならUbuntuにしておいたほうがいいかな、というなんとなくな理由です。
まだ旧サーバーに付随しているメール機能を移行できてないので旧サーバーも並行で契約していますが、早々にメールも移行したいです。Webメールのライセンス料とかアドレス追加等の管理画面の充実ぶりから考えると、メールはVPSではなくメールに特化したレンサバのプランでやろうかと思っています。