nginxのインストール

nginxのインストール方法は、大きく分けて2つあります。

  1. Linuxサーバがインタネット接続可能な状態で、apt-getコマンドによるインストール
  2. Linuxサーバがインタネット接続不可能な状態で、ソースファイルtar.gzからmake コマンドによるインストール

インストール入門(Ubuntu)では、1.apt-getを利用した方法について説明します。
ソースコードからのインストール高度なインストール方法や設定については、後日リリースする予定です。

パッケージの取得元

apt-getでubuntu自体のアップデートやパッケージのインストールができます。
前提条件の図にあるように、 nginxパッケージをapt-getで取得する経路は3つあります。

  1. ubuntuインストール時のubuntuのミラーサイトhttp://jp.archive.ubuntu.com/ubuntu/
    ubuntuインストーラを日本のミラーサイトから取得した場合になります。
    /etc/apt/sources.listに定義されています。
    nginxパッケージもxenial-updates/mainの配下パッケージとして管理されています。
    2017年4月26年時点で、ubuntu16.04を利用した場合には、nginx1.10.0-0がインストールされます。
  2. nginxのパッケージ公開サイトhttp://nginx.org/packages/ubuntu/
    apt-getのデフォルトでは、本公開サイトがレポジトリとして登録されていません。
    2017年4月26年時点で、ubuntu16.04を利用した場合には、nginx1.12.0がインストールされます。
    本サイトでは、apt-getを利用する場合には、この方法を強く推奨します。
  3. PPA(Personal Package Archive)サイトを利用する方法
    Personalとあるように個人で開発したアプリケーションが取得できるような機能です。
    前提条件の図の3番目のサイトに示しましたが、 PPA自体の性質上nginx.incがPPAに常に最新版を2.の方法と同時期に同期する保証がないため本経路は採用しません。

2.のnginxからパッケージを取得する方法について説明します。

nginxのインストール手順

ubuntuサーバからインターネット経由でOSと互換性の取れた最新のパッケージをnginx公式サイトから取得し、
サーバにインストールする方法について説明します。

  1. Teratermを起動し、ubuntuサーバにssh経由でアクセスします。
    ログインするアカウントは前頁で作成した「infra01」を利用します。作業用のログも有効にします。
    Teratermのログファイルを参考にして下さい。
  2. nginx用レポジトリファイルの作成
    apt-getのnginx用レポジトリの作成
    $ cd /etc/apt/sources.list.d
    $ sudo touch nginx.list
    								
    ファイルのグループの変更と権限の変更
    $ sudo chgrp infrateam nginx.list
    $ sudo chmod g+wr nginx.list
    $ ls -la
     -rw-rw-r-- 1 root infrateam    0  4月 26 00:43 nginx.list
    								
    nginxのレポジトリ追加
    $ echo deb http://nginx.org/packages/ubuntu/ yakkety nginx >> nginx.list
    $ echo deb-src http://nginx.org/packages/ubuntu/ yakkety nginx >> nginx.list
    								

    「yakkety」は、ubuntuのコードネームです。
    本書では、ubuntu16.04を利用しているためコードネームは、「yakkety」になります。
    コードネームは、http://nginx.org/packages/ubuntu/dists/に公開されたコードネームと一致させます。
    貴方のubuntuサーバのコードネーム(英小文字)を利用して下さい。

    nginxのレポジトリ確認
    $ cat nginx.list
    deb http://nginx.org/packages/ubuntu/ yakkety nginx
    deb-src http://nginx.org/packages/ubuntu/ yakkety nginx
    $ cd
    								

    最後の「cd」コマンドはユーザディレクトリ(/home/infra01)に移動します。
    主要なファイルやディレクトリ作業が終了次第、作業の区切れとしてカレントディレクトリをユーザディレクトリに戻します。

  3. nginxパッケージの公開鍵の登録
    apt-keyは、debiansサイトにapt-keyについて詳しく説明しています。
    apt-keyの実行
    $ curl http://nginx.org/keys/nginx_signing.key | sudo apt-key add -
    								
  4. nginxのパッケージ取得
    apt-get updateの実行
    $ sudo apt-get update
    取得:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [102 kB]
    ヒット:2 http://jp.archive.ubuntu.com/ubuntu xenial InRelease
    取得:3 http://jp.archive.ubuntu.com/ubuntu xenial-updates InRelease [102 kB]
    取得:4 http://jp.archive.ubuntu.com/ubuntu xenial-backports InRelease [102 kB]
    取得:5 http://nginx.org/packages/ubuntu yakkety InRelease [2,835 B]
    取得:6 http://nginx.org/packages/ubuntu yakkety/nginx Sources [3,439 B]
    取得:7 http://nginx.org/packages/ubuntu yakkety/nginx i386 Packages [5,606 B]
    318 kB を 17秒 で取得しました (18.5 kB/s)
    								
  5. nginxのインストール
    apt-get installの実行
    $ sudo apt-get install nginx
    パッケージリストを読み込んでいます... 完了
    依存関係ツリーを作成しています
    状態情報を読み取っています... 完了
    以下のパッケージが新たにインストールされます:
      nginx
    アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 12 個。
    841 kB 中 0 B のアーカイブを取得する必要があります。
    この操作後に追加で 2,864 kB のディスク容量が消費されます。
    (データベースを読み込んでいます ... 現在 199984 個のファイルとディレクトリがインストールされています。)
    .../nginx_1.12.0-1~yakkety_i386.deb を展開する準備をしています ...
    ----------------------------------------------------------------------
    
    Thanks for using nginx!
    
    Please find the official documentation for nginx here:
    * http://nginx.org/en/docs/
    
    Commercial subscriptions for nginx are available on:
    * http://nginx.com/products/
    
    ----------------------------------------------------------------------
    nginx (1.12.0-1~yakkety) を展開しています...
    :
    :
    nginx version: nginx/1.12.0
    								
  6. nginxの起動
    nginxの起動
    $ sudo nginx
    								
  7. nginxの起動確認
    nginxの起動確認
    $ ps -aux | grep nginx
    root      5203  0.0  0.0   7248   540 ?        Ss   11:38   0:00 nginx: master process nginx
    nginx     5204  0.0  0.1   7416  2232 ?        S    11:38   0:00 nginx: worker process
    								

    設定ファイルが初期設定の場合には、masterプロセスとworkerプロセスが1つず起動しています。

  8. ブラウザからの接続確認
    ubuntuサーバとは別のPCからウェブブラウザを起動し、URLに「http://ubuntuサーバのIPアドレス」を指定します。
    nginxのwelcome頁
    本頁は、「/usr/share/nginx/html」に格納されたindex.htmlファイルです。
  9. 設定ファイルの場所
    主な設定ファイルは「/etc/nginx/nginx.conf」と「/etc/nginx/conf.d/default.conf」ファイルです。
  10. ログファイルの場所
    ログファイルは「/var/log/nginx」ディレクトリに格納されます。

以上でインストール作業は終了です。次頁のサービス化の設定作業を開始して下さい。

作業手順で起こりえる事象

上記内容を動作確認をした際に想定外の事象があったので参考のために説明します。

remove間違い

インストール作業が中途半端に失敗した場合には、パッケージのアンインストールをします。
アンインストール後本頁の手順を最初から確認して、sudo apt-get install nginxを再実行します。

nginxのアンインストール
$ apt-get remove nginx
$ apt-get remove nginx-common
							

2行目が忘れてしまうコマンドで1回以上インストールした場合には、nginx-commonパッケージがインストールされています。
これを1行目だけのコマンドだけの実行の場合、次のエラーが再インストール時に出力されます。

nginx-commonのremove漏れによるエラー
dpkg: アーカイブ /var/cache/apt/archives/nginx_1.12.0-1~yakkety_i386.deb の処理中に エラーが発生しました (--unpack):
 '/etc/default/nginx' を上書きしようとしています。これはパッケージ nginx-common 1.10.0-0ubuntu0.16.04.4 にも存在します
dpkg-deb: エラー: サブプロセス ペースト がシグナル (Broken pipe) によって強制終了されました
処理中にエラーが発生しました:
 /var/cache/apt/archives/nginx_1.12.0-1~yakkety_i386.deb