Ubuntu16.04LTSに対して、nginxをソースファイルからインストール後のサービス化やパーミッションの変更手順について説明します。
他のOSに関しては、https://www.nginx.com/resources/wiki/start/topics/examples/initscripts/からご確認下さい。
DAEMON変数に前頁以降でインストールしたnginxのバイナリーファイルのパスを指定して下さい。
PIDには、--pid-path=PATHで指定したpidファイルのパスを指定して下さい。
nginxファイル
#! /bin/sh
### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the nginx web server
# Description: starts nginx using start-stop-daemon
### END INIT INFO
PATH=/opt/bin:/opt/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/nginx/sbin/nginx
NAME=nginx
DESC=nginx
PID=/var/run/nginx/nginx.pid
test -x $DAEMON || exit 0
# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
. /etc/default/nginx
fi
set -e
case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --pidfile $PID \
--exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile $PID \
--exec $DAEMON
echo "$NAME."
;;
restart|force-reload)
echo -n "Restarting $DESC: "
start-stop-daemon --stop --quiet --pidfile \
$PID --exec $DAEMON
sleep 1
start-stop-daemon --start --quiet --pidfile \
$PID --exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
reload)
echo -n "Reloading $DESC configuration: "
start-stop-daemon --stop --signal HUP --quiet --pidfile $PID \
--exec $DAEMON
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
作成したnginxファイルをSFTPなどのファイル転送を利用し、作業ユーザ(infra01)のホームディレクトリに転送します。
nginxファイルのコピーと権限
$ su -
$ cp /home/infra01/nginx /etc/init.d
$ chmod 775 /etc/init.d/nginx
$ exit
nginxの起動スクリプトの動作検証を行います。
$ sudo /etc/init.d/nginx start
$ ps -aux | grep nginx
nginxのmainプロセスとworkerプロセスが起動している事を確認します。
$ sudo /etc/init.d/nginx stop
nginxのmainプロセスとworkerプロセスが存在しない事を確認します。
nginxの起動スクリプトをOSのデフォルトの実行レベルを付与します。
$ cd /etc/init.d
$ sudo /usr/sbin/update-rc.d -f nginx defaults
サーバーを再起動し、/etc/init.d/nginx及びupdate-rc.dのコマンドが有効になっている事を確認します。
ps-aux | grep nginx のコマンドによる確認とwebブラウザからサーバーにアクセスし、nginxのデフォルト頁が表示される事を確認します。
nginxをsystemctlから制御できるようにサービスファイルを定義します。
引用元:NGINX systemd service fileから引用
ファイル内の各種パスは./configureで指定したパスまたはデフォルト値を指定します。
nginx.serviceファイル
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
SFTPなどのファイル転送を利用し、作業用ユーザ(infra01)のホームディレクトリに転送します。
nginx.serviceファイルのコピー
$sudo cp /home/infra01/nginx.service /lib/systemd/system
root権限でインストールしたnginxのリソース一式のオーナーとグループは、rootになっています。
以下の内容をご確認の上インストールしたnginxのオーナー及びグループをnginxにして下さい。
※.上記ディレクトリはapt-getを利用した場合のディレクトリで表記しています。./configureで指定した各パスに置き換えて確認して下さい。