nginxのサービス化

apt-getでインストールしたnginxサーバの再起動時にnginxが再起動するように設定します。

nginxのサービス化手順

  1. 前準備で説明した「infra01」アカウントで、
    webサーバにTeratermからリモートログインします。
  2. /lib/systemd/system/nginx.serviceファイルの作成
    apt-getのnginx用レポジトリの作成
    $ cd /lib/systemd/system
    $ sudo touch nginx.service
    $ sudo vi nginx.service
    								

    viの挿入モードに切り替えるためiを押下します。
    nginx本家サイト NGINX systemd service fileより

    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.pid
    ExecStartPre=/usr/sbin/nginx -t
    ExecStart=/usr/sbin/nginx
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s QUIT $MAINPID
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    								

    コピー&ペーストで上記内容をnginx.serviceファイル記述します。:wqでセーブします。

  3. サービスの起動
    サービスの起動
    $ sudo systemctl start nginx
    Failed to start nginx.service: Unit nginx.service is masked.
    								

    必ず失敗する。

    サービスの確認
    $ sudo systemctl status nginx
    ●nginx.service
      Loaded(/dev/null)
      Active:inacitve(dead) since 日付
    								

    サービスを起動に失敗している

    unmask後にstart
    $ sudo systemctl unmask nginx
    $ sudo systemctl start nginx
     								
    status確認
    $ sudo systemctl status nginx
    inx.service - The NGINX HTTP and reverse proxy server
       Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
       Active: inactive (dead) since 木 2017-04-27 05:39:18 JST; 4min 38s ago
      Process: 1549 ExecStop=/bin/kill -s QUIT $MAINPID (code=exited, status=0/SUCCE
      Process: 989 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
      Process: 933 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
     Main PID: 992 (code=exited, status=0/SUCCESS)
    
     4月 27 05:11:19 ubuntuのホスト名 systemd[1]: Starting The NGINX HTTP and reve
     4月 27 05:11:20 ubuntuのホスト名 nginx[933]: nginx: the configuration file /
     :
     :以下割愛
     								

    1行目の先に設定したnginx.serviceのファイルがロードしてサービスがenabled状態になっています

  4. 動作確認
    サーバ再起動
    $ sudo shutdown -r now
    								
    サーバ再起動後にブラウザから「http://サーバーのIPアドレス名」のURLでアクセスし、デフォルト画面が表示されことを確認します。

2017年4月26時点のUbuntu16.04 nginx1.12.0 のバージョン,nginx本家サイト NGINX systemd service file をベースに構成しています。他のディストリビューションの方は対応するnginxサイトの頁を確認して下さい。