このブログをMacでローカルでレビューする時には Pow を使ってますが、 デフォルトで指定されている.devというドメインが Google Chrome上では扱いが面倒な事になっているので .testというドメインで使える様にしました。
Pow
PowはMac (OS X)で使えるRackを使ったウェブサーバーで
~/.pow/というディレクトリの下にサイトのトップディレクトリを置いておくと、
http://directory_name.dev
というURLで見れる様にしてくれるツールです。
Macでは1番使うのが楽です。
pow
というプロセスが常時作動する様になりますが
使ってない時はほとんどリソースを使わないので無視できる程度です。
通常HTTPな接続ですが、HTTPSな接続を試したい時はtunnelsというコマンドで ポートを変換して使う事も出来ます。
また、xip.ioを使って他の端末から見ることも可能です。
Chromeでの問題
問題はGoogleが.devというTDL(トップレベルドメイン、東京ディズニーランドじゃない)を2015年位に購入していて、
このドメインについてChrome 63からHTTPSを強制する様になったからです。
(http://octopress.dev
を開こうとしても即座にhttps://octopress.dev
に飛ばされる。)
以前も同じような問題は起こっていましたが色々と抜け道があってなんとかなってた様ですが Chrome 63からは完全に駄目になったようです。
.dev
domains not accessible in latest Chrome · Issue #397 · basecamp/pow
ただ、以前はChromeは余り使ってませんでしたが、たまに使う際には見えてた様な気がするんですが。
いずれにしろChrome 63は2017年12月6日正式リリースですが、その後アップデートしてからどうやっても駄目になっていました。
ちょっと探してみると、pow
でなくてもローカルテストとして.devを使っていた、という人は沢山いて、
その場合にも色々困ったことになってるようです。
上に書いたtunnelsとかを使ってみると、 この説ぜ奥ではプライバシーが保護されませんページが表示されますが、 詳細情報を表示してみると、
octopress.dev では HSTS が使用されているため、現在アクセスできません。通常、ネットワーク エラーやネットワークへの攻撃は一時的なものです。しばらくするとページにアクセスできるようになります。
みたいなエラーな内容で、 通常、証明書がちゃんと用意されてないサイトに接続した時に出る …にアクセスする(安全ではありません) と言った無理やりアクセスするためのリンクがありません。
ので、.devはどうやってもChromeでは見れない様です。
解決法
1つはFirefoxやSafari等、他のブラウザを使うこと。
Chromeを使いたい場合には.dev以外のドメインを使うしかありません。
Powでは.testというドメインを使う方法が用意されています。
環境変数にPOW_DOMAINS=test,local
を入れてPowを再インストールすれば有効になります。
$ export POW_DOMAINS=test,local
$ curl get.pow.cx/uninstall.sh | sh
$ curl get.pow.cx/install.sh | sh
インストールの途中で
*** Installing system configuration files as root...
/etc/resolver/dev
/etc/resolver/test
...
みたいにtest
に関するものもインストールされるはずです。
実際に/etc/resolver/にtestというファイルが出来てればOKです。
この設定をしてもdevも同様にインストールされ.devでも見れるような状態にはなっています。 (testもdevも内容は同じ。)
これで、http://octopress.test
などにアクセスすればChromeからも見れる様になります。
ちなみにこの設定を色々試してみましたが、
-
/etc/resolver/に自分でtest加えて
launchctl unload -w ~/Library/LaunchAgents/cx.pow.powd.plist sudo launchctl unload -w /Library/LaunchDaemons/cx.pow.firewall.plist sudo launchctl load -w /Library/LaunchDaemons/cx.pow.firewall.plist launchctl load -w ~/Library/LaunchAgents/cx.pow.powd.plist
とかしても有効にならない。
- export POW_DOMAINS=xxx,localとかしても.dev.xxxドメインは有効に出来ない。.testだけ。
- 一度.testを有効にすると、その後環境変数を設定してない状態で再インストールしたりしても.testが有効になる。
- uninstallスクリプトで消えない設定ファイルがどこかにある…?
といったところ。 今のところ.testは他で使ってないので問題ないですが、 もし、他のツールで.testドメインを使ってテストとかしている場合には ちょっと注意が必要かもしれません。
ちなみに、Homebrewでbrew install pow
でインストールできるのですが、
この場合、Caveatsで出てきますが自分でディレクトリを用意したり
launchd agentを立ち上げたりしないといけないので色々面倒なので
Powは公式スクリプトで入れた方が楽です。