サービスからnginxを操作する

本カテゴリーではubuntu16.04にapt-getを利用してインストールしたnginx 1.12.0を起動、停止、リロードなどのコマンドについて説明します。

インストール入門(Ubuntu)の最終頁まで実施している事を前提とします。

/usr/sbin/nginx

apt-getを利用してnginxをインストールした場合には、nginx本体(nginxのコマンド)は、/usr/sbin/nginxになります。
インストール直後にルートユーザ、管理者ユーザ、一般ユーザが、nginxコマンドを実行できた理由は何故でしょうか。

システム環境変数PATHの定義
$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
								参考文献:https://help.ubuntu.com/community/EnvironmentVariables
								

ubuntuではシステム環境変数を/etc/enviromentファイルに定義しています。 このファイルに指定された環境変数は、システムを利用する全てのアカウントに適用されます。 enviromentファイルのPATHには、上記のように「/usr/sbin」が指定されています。 そのため、「nginx」コマンドはどのアカウント、カレントディレクトリでも実行ができます。
ただし、apt-getはsudoでroot権限でnginxをインストールしています。 nginxの各種ディレクトリは、root権限が付与されているので、一般ユーザアカウントで起動するとアクセス権限エラーが出力されます。 sudo apt-get でインストールしたnginxは sudo を利用して操作する必要があります。

サービス設定時の操作

インストール入門 サービス化において、 サービスの設定をした場合の操作方法は以下となります。

サービスの状態確認

実行コマンド
$ sudo systemctl status nginx
						
サービス起動時
● nginx.service - The NGINX HTTP and reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since 金 2017-05-05 13:30:28 JST; 2min 4s ago
  Process: 1009 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 964 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
 Main PID: 1026 (nginx)
   CGroup: /system.slice/nginx.service
           tq1026 nginx: master process /usr/sbin/ngin
           mq1027 nginx: worker proces

 5月 05 13:30:27 yourServer systemd[1]: Starting The NGINX HTTP and reverse proxy server...
 5月 05 13:30:28 yourServer nginx[964]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
 5月 05 13:30:28 yourServer nginx[964]: nginx: configuration file /etc/nginx/nginx.conf test is successful
 5月 05 13:30:28 yourServer systemd[1]: nginx.service: Failed to read PID from file /run/nginx.pid: Invalid argument
 5月 05 13:30:28 yourServer systemd[1]: Started The NGINX HTTP and reverse proxy server.
								
サービス停止時
● nginx.service - The NGINX HTTP and reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since 金 2017-05-05 13:33:38 JST; 2s ago
  Process: 1477 ExecStop=/bin/kill -s QUIT $MAINPID (code=exited, status=0/SUCCESS)
  Process: 1009 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 964 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
 Main PID: 1026 (code=exited, status=0/SUCCESS)

 5月 05 13:30:27 yourServer systemd[1]: Starting The NGINX HTTP and reverse proxy server...
 5月 05 13:30:28 yourServer nginx[964]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
 5月 05 13:30:28 yourServer nginx[964]: nginx: configuration file /etc/nginx/nginx.conf test is successful
 5月 05 13:30:28 yourServer systemd[1]: nginx.service: Failed to read PID from file /run/nginx.pid: Invalid argument
 5月 05 13:30:28 yourServer systemd[1]: Started The NGINX HTTP and reverse proxy server.
 5月 05 13:33:38 yourServer systemd[1]: Stopping The NGINX HTTP and reverse proxy server...
 5月 05 13:33:38 yourServer systemd[1]: Stopped The NGINX HTTP and reverse proxy server.								
 								

起動時には「Acitve:」項目が 「active(running)」に、停止時には「inactive(dead)」になっています。
また、コンソールの最終行が起動時には、「Startd The NGINX HTTP」が出力され、
停止時には、最終行が「Stooped The NGINX Http」が出力されています。

サービスの開始

実行コマンド
$ sudo systemctl start nginx
						

sudo systemctl status nginx で確実にサービスが開始した事を確認します。

サービスの停止

実行コマンド
$ sudo systemctl stop nginx
						

sudo systemctl status nginx で確実にサービスが停止した事を確認します。