brew install nginx の一部ログ:
In the interest of allowing you to run `nginx` without `sudo`, the default
port is set to localhost:8080.
If you want to host pages on your local machine to the public, you should
change that to localhost:80, and run `sudo nginx`. You'll need to turn off
any other web servers running port 80, of course.
概要
Home brew からインストールしたNginx の待ち受けポートを、デフォルトの8080番から80番に変更、システム起動時に待ち受けさせる。
おおまかな手順としては
- nginx.conf の編集
- nginx をsudo で起動するシェルスクリプトを書く
- nginx plist の編集
- 自動起動できるように、sudo パスワード入力をスキップ
注意事項として、上記手順4にてroot権限が必要になるため、rootとして作業できることが必要。あと、Mac標準のhttpdさんは眠っている前提です。
80番ポートで待たせるためにはsudo が必要らしい。
8080番はJenkins やその他アプリケーションが利用するかもしれない。sudoer 権限で実行できるように設定する。
nginx.conf の編集
http { …
server {
- listen 8080;
+ listen 80;
server_name
#charset koi8-r;
…
}
シェルスクリプトの作成
# !/bin/bash
NGINX_BIN="/usr/local/sbin/nginx"
function on_die() {
sudo $NGINX_BIN -s stop
exit 0
}
trap on_die TERM
sudo $NGINX_BIN $@ &
wait
chmod +x /usr/local/bin/nginx_with_sudo
で実行権限を付与しておきましょう。
plist の編集
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
…
<key>KeepAlive</key>
<false/>
+ <key>UserName</key>
+ <string>USER_NAME</string>
<key>ProgramArguments</key>
- <array>
- <string>/usr/local/opt/nginx/sbin/nginx/
- <string>-g</string>
- <string>daemon off;</string>
- </array>
+ <array>
+ <string>/usr/local/bin/nginx_with_sudo</string>
+ </array>
…
</dict>
</plist>
sudoersファイルの編集
root としてログインsudo su
する。
visudo
コマンドを叩いてsudoersファイルの編集を開始。
Nginxとスクリプトをsudoで実行した時のパスワード入力をスキップさせます。
Cmnd_Alias NGINX=/usr/local/sbin/nginx
Cmnd_Alias NGINX_SCRIPT=/usr/local/bin/nginx_with_sudo
Your_User_Name ALL=NOPASSWD: NGINX, NGINX_SCRIPT
NOPASSWD: ALL
なんかも指定出来てお手軽な感じがしますが、それは穴が大きすぎるとおもいますので、個別に指定して行きましょう。
最後に、作成したスクリプトを起動するか、再起動すればnginx が80番ポートで起動してくれるはずです。
http://localhost:80/
で確認してみましょう。