← back
システム構成

当サイトのシステム構成図

メインコンポーネント

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通信が可能になります。
この認証作業が大変だった😭