讓 Pow 和 Apache 可以共同運作

Pow 是一個很好用的 RoR 開發工具,它讓我們可以不需要透過 rails s 來啟動 server,也可以把 http://localhost:3000/ 這樣的網址 hijack 成 http://project.dev/ 這樣比較美觀的方式,真的是不錯好用。

原則上 Pow 和 Apache 本身會互相衝突,官方也提出了一個解決方法

$ curl get.pow.cx/uninstall.sh | sh #if you have pow installed
$ echo 'export POW_DST_PORT=88' >> ~/.powconfig
$ sudo curl https://raw.github.com/gist/1058580/zzz_pow.conf -o /private/etc/apache2/other/zzz_pow.conf
$ sudo apachectl restart
$ curl get.pow.cx | sh

如此一來,Pow 和 Apache 是可以共存了,但因為我有一些小程式是透過 PHP 來運作,放在 localhost 的使用者目錄下跑,但就上述 zzz_pow.conf 的設定:


  ServerName pow
  ServerAlias *.dev
  ServerAlias *.xip.io
 
  ProxyPass / http://localhost:20559/
  ProxyPassReverse / http://localhost:20559/
  ProxyPreserveHost On

Pow 會把所有 localhost 全部導過去,找到了個解法,在 ProxyPass 前加入一行 Match 的指令即可:


  ServerName pow
  ServerAlias *.dev
  ServerAlias *.xip.io
 
  ProxyPassMatch ^/~ !
  ProxyPass / http://localhost:20559/
  ProxyPassReverse / http://localhost:20559/
  ProxyPreserveHost On


Leave a Reply