先の記事で Plone を Windows Web Server 2008 R2 にインストールした。
Plone は Zope というアプリケーションプラットフォームの上に構築されており、Zope 自身が Web サーバーの機能を持っている。
このため IIS を使わなくても、直接 Plone (Zope) に接続してその画面を見ることができるはずだ。
しかし、Plone (Zope) は標準の Web サーバー (Windows では IIS) とバッティングしないように、待ち受けポートが通常の 80/TCP とは異なる番号になっている。
今回 Windows インストーラーを使ってインストールした Plone (Zope) では、待ち受けポートは 8080/TCP になっている。
しかしながら、この 8080/TCP のポートは Windows Firewall によってブロックされているため、外部からはこのポートに接続することができない。
Plone をインストールしたサーバー自身からなら接続できるのだが、今回は Server Core であるためにサーバーには Web ブラウザが入っていない。
そこで、外部からも Plone (Zop) にアクセスできるように、ファイアーウォールに受信規則を追加登録する。
Plone (すなわち Zope) はそれ自身がひとつの実行形式になっているのではなく、Python によって動作している。
実際にサービスとして登録されている Plone の設定を見ると、実行プログラムは PythonService.exe になっている。
なお、PythonService.exe は python.exe を安全に起動するためのラッパーでしかない。
つまり、Plone の実態は python.exe ということになり、実際に通信を行っているのも python.exe だということだ。
このため、ファイアーウォールに受信規則を追加登録する際にサービス名で指定すると、対象になるプログラムは PythonService.exe になってしまい、期待した動作を得ることができなくなる。
そこで、プログラム名に python.exe を指定して、受信規則を追加登録する。
追加登録する受信規則は、Plone のポート 8080/TCP 宛ての外部からの通信を許可するというものになる。
使っているサーバーは、Windwos Web Server 2008R2 Server Core なので、コマンドラインで以下のコマンドを実行する。
netsh advfirewall firewall add rule name="plone (HTTP トラフィック)" dir=in action=allow program="%ProgramFiles(x86)%\Plone\python\python.exe" description="Plone (Zope) の HTTP トラフィックを許可するための受信規則 [TCP 8080]" localport=8080 protocol=tcp
追加した受信規則の内容を確認するために、以下のコマンドを実行する。
netsh advfirewall firewall show rule name="plone (HTTP トラフィック)" verbose
規則名: Plone (HTTP トラフィック)
----------------------------------------------------------------------
説明: Plone (Zope) の HTTP トラフィックを許可するための受信規則 [TCP 8080]
有効: はい
方向: 入力
プロファイル: ドメイン,プライベート,パブリック
グループ:
ローカル IP: 任意
リモート IP: 任意
プロトコル: TCP
ローカル ポート: 8080
リモート ポート: 任意
エッジ トラバーサル: いいえ
プログラム: C:\Program Files (x86)\Plone\python\python.exe
インターフェイスの種類: 任意
セキュリティ: NotRequired
規則のソース: ローカル設定
操作: 許可
今回 Plone をインストールしたサーバーは Server Core であるため、自身では GUI での操作はできないが、リモートからサーバーマネージャで接続すれば GUI での操作も可能だ。
その場合はサーバーマネージャの左側ペインのツリーで [構成 - セキュリティが強化された Windows Firewall - 受信の規則] をクリックし、受信の規則の操作ペイン (右側ペイン) で [新しい規則...] をクリックして作成することになる。
[新しい規則...] をクリックして表示された「新規の受信の規則ウィザード」の最初のダイアログでは、「カスタム」ラジオボックスにチェックを入れて、次へ進める。
それ以降のダイアログでは、上の netshell コマンドで表示させた受信規則の内容を参考にして入力すればよい。
将来的に Plone を公開するときには、直接接続させるのではなく IIS をフロントエンドに置く予定だ。
IIS の設定が済み、IIS 経由で Plone に接続できるようになれば、この受信規則が不要になるかもしれない。
そのときは、以下のコマンドでこの受信規則を削除できる。
netsh advfirewall firewall delete rule name="plone (HTTP トラフィック)"


[...] Plone のためのセキュリティが強化された Windows Firewall [...]