Mac下通过HomeBrew安装Nginx的坑

Homebrew是Mac下一个非常方便的包管理器。
最近用brew自动升级了nginx之后发现原本可以自启动的nginx无法自启动了。
查console,发现是因为权限不够。想起来因为配置的服务器端口是80,小于1024需要root权限。
而brew的安装,是把/usr/local/opt/nginx软连接到真正的nginx目录。

ZGR-MacBook-Pro:~ zgr0629$ ll /usr/local/opt/nginx
lrwxr-xr-x  1 zgr0629  admin    21B Apr 20 16:52 /usr/local/opt/nginx@ -> ../Cellar/nginx/1.6.3
ZGR-MacBook-Pro:~ zgr0629$ 

于是对比了一下老版本nginx的bin文件权限,果然和现在的不一样。
用下面的命令改掉就好了。

sudo chown root:wheel /usr/local/Cellar/nginx/1.6.3/sbin/nginx
sudo chmod u+s /usr/local/Cellar/nginx/1.6.3/sbin/nginx

另外,由于Mac的防火墙无视软连接,只记录真实的地址,所以在防火墙设置里,还需要更新为新的nginx路径。否则其他人无法看到你的主机。

再来补充一个命令,能够方便的重启各种服务。
Github上gapple已经在这里写了一个第三方的命令行,让services命令回来了。

安装

brew tap homebrew/services

使用

brew install mysql
brew services start mysql
brew services stop mysql