当サイトのシステム構成図
メインコンポーネント
NGINX
HTTPサーバ。「最近のコンテンツ」を配信しています。読みは「エンジンエックス」。
さらに、リバースプロキシも兼ねてます。リバースプロキシというのは、サイトが内部的に複数のサーバで構成されている場合、外部から来たリクエストをどの内部サーバに振り分けるか決める交通整理役です。
HTTPサーバと言えば昔は Apache 一択でしたが、とうとう NGINX がシェアトップの時代が来ましたね。
Apache
HTTPサーバ。「大学時代のコンテンツ」を配信しています。
「HTTPサーバならもう NGINX があるじゃないか」という話になると思いますが、これには理由があります。
「大学時代のコンテンツ」には掲示板などの動的コンテンツがあり、これが Perl というプログラミング言語で動いており、
しかも Perl プログラムを呼び出すために「CGI」という古き良き手法を用いています。
で、NGINX はその 「CGI による Perlプログラム実行」をサポートしていません(Windows版は💦)。
そのため、 「CGI による Perlプログラム実行」に対応している Apache を別途立てる必要があった、という次第です。
ここらへんはさすが、いぶし銀 Apache の貫禄ですね。
Flask
Webアプリケーション・サーバ。
動的コンテンツを動かすためのサーバ。現状は「天気くん」が動いています。
齋藤のメイン・プログラミング言語は最近は Python なので、
Python で Webアプリケーションを書ける Flask を今回は採用しました。
(Django も良いんだけどねぇ~...。そこまで本格的なWebアプリを作る予定もないので、今回は手軽に書ける Flask で。)
裏方コンポーネント
NO-IP
Dynamic DNS。動的DNS。
DDNS についてはネットワークの知識がそれなりに必要になってしまうため、ここでは割愛するでゴワス。
超訳すると、このサイトにアクセスするのに「mt100.ddns.net」というドメイン名を使用できるようにするための仕組みです。
(ちなみに mt100 は 百名山 を意図しています。)
動的DNS を使用していないと、齋藤自宅PCが再起動するなどしてIPアドレスが変わってしまうと、その度に
「齋藤ホームページのアドレスがまた変わりました! 今後は"https://123.456.789.123/"にアクセスして下さい!」
というような通知を毎回行う必要が生じてしまいます。超絶メンドイ世界ですよねぇ~。
DDNS のおかげで、毎回同じ "https://mt100.ddns.net" というアドレスでアクセスできる訳です。
Let's Encrypt
公開鍵証明書認証局サービス。
認証局というのはネット上におけるサーバの正当性を認証してくれる機関で、認証プロセスを通すことで、
暗号化通信に必要な「サーバー証明書」と「秘密鍵」を発行してくれます。
この「サーバー証明書と秘密鍵」をHTTPサーバに設定することで、
ユーザ側のWebブラウザと齋藤HTTPサーバとの間の通信が暗号化され、より安全なHTTPS通信が可能になります。
この認証作業が大変だった😭