【月間10万PV達成】ブログの作り方を無料公開中!

Nginxとは?インストールや設定ファイルの仕組みを解説【CentOS】

Nginxのインストール

Nginx(エンジンエックス)は、Webサーバの選択肢として必ず候補に挙がってくるくらい有名になりました。

Nginxとは、いったい何なのでしょうか?

Apacheと比べて、どのような違いがあるのでしょうか?

今回は、そんなNginxの概要やインストール方法、設定ファイルの仕組みまでを紹介します。

この記事を読むだけで、Nginxのすべてがわかるよ!

Nginxとは

【Nginx】ロゴ

Nginx(エンジンエックス)とは、Webアプリケーションと連携するために利用されるWebサーバの1つです。

RubyやPHPなどで開発したWebアプリケーションを、インターネット上に公開するために必要になります。

Webサーバがないと、Webアプリケーションがあっても使えないよ!
WebサーバとはWebサーバとは何か?仕組みやソフトウェアの種類をわかりやすく解説!

NginxとApacheの違い

【NginxとApache】ロゴ

Webサーバといえば、Nginx以外にも「Apache(アパッチ)」という大きな存在があります。

NginxとApacheの違いは、何なのでしょうか?

実は、Apacheの「クライアント1万台問題(C10K問題)」を解消するために作られたWebサーバが、Nginxなんです。

クライアント1万台問題(C10K問題)とは

クライアント1万台問題(C10K問題)とは、約1万台ものアクセスがApacheサーバに集中し、ハードウェア性能に関係なく、レスポンス性能が大きく下がる問題です。

この原因は、「クライアントのリクエストの数だけプロセス(スレッド)を作る」という、Apacheの駆動方式が原因でした。

Apacheは大量の同時アクセスに弱かったんだね!

駆動方式の違い

さきほどの「C10K問題」を解決するために作られたWebサーバが「Nginx」です。

Apacheは、アクセスの数だけプロセス(スレッド)を作る方式になっていますが、Nginxはイベント駆動方式になっています。

Nginxのイベント駆動は、CPUの数と同じ数のプロセスを用意し、受け取ったリクエストを順番に高速で処理していく仕組みです。

プロセスを作らない分、コンテキストスイッチ(1つのCPUが複数のプロセスを切り替えながら処理すること)なども減り、結果メモリの使用量を抑えられます。

ちなみに、Apacheのメリットはこんな感じ。

  • 動的コンテンツなどの重たい処理が得意
  • PHPとの相性がいい
  • そこまで知識がなくても簡単に連携できる

また逆に、Nginxは動的コンテンツなどの処理は苦手なので、重たい処理はアプリケーションサーバに任せるなどの対策が必要です。

Nginxは受け取ったリクエストを、右から左へどんどん投げていくイメージ!

Nginxのインストール(CentOS7)

では、さっそくCentOS7にNginxをインストールしていきます。

CentOS7のデフォルトリポジトリにNginxは存在しないので、Nginxを提供しているリポジトリを別に追加します。

リポジトリを追加
$ sudo yum localinstall -y http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
Nginxをインストール
$ sudo yum install -y nginx

上の2つが正常にインストールできれば、「Complete!」と表示されるよ!
yumとはyumとは?コマンドの使い方やリポジトリの指定、追加、一覧、rpmの違いなど

Nginxのコマンド

Nginxの状態確認

Nginxの起動状態を確認したいときは、以下のコマンドを実行します。表示されるログで「停止中」か「起動中」かを確認できます。

停止時
$ systemctl status nginx
● nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: http://nginx.org/en/docs/
起動時
$ systemctl status nginx
● nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-04-22 05:44:30 UTC; 3s ago
     Docs: http://nginx.org/en/docs/
  Process: 5048 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
 Main PID: 5049 (nginx)
   CGroup: /system.slice/nginx.service
           ├─5049 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
           └─5050 nginx: worker process

Nginxの起動

Nginxを起動したいときは、以下のコマンドを実行します。

Nginxを起動
$ sudo systemctl start nginx

Nginxの停止

Nginxを停止させたいときは、以下のコマンドを実行します。

Nginxを停止
$ sudo systemctl stop nginx

Nginxの再起動

Nginxを再起動したいときは、以下のコマンドを実行します。

Nginxを再起動
$ sudo systemctl restart nginx

Nginxの自動起動設定

CentOSが再起動したときに、自動でNginxが起動するように設定します。

「disabled(無効)」から「enabled(有効)」に変われば設定完了です。

Nginxを自動起動するように設定
# Nginxの自動起動設定を確認
$ systemctl is-enabled nginx
disabled

# Nginxを自動起動に設定
$ sudo systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

# Nginxの自動起動設定を確認
$ systemctl is-enabled nginx
enabled

Nginxにアクセス

Nginxの初期画面

Nginxを起動したら、サーバのIPアドレスをブラウザに入力してアクセスしてみましょう。上のような画面が表示されていれば、アクセスは成功。

Linux環境構築」を読んでLinux環境を作った方は、「http://192.168.33.10」でアクセスできるはずです。

Linux環境構築【Linux環境構築】VagrantとVirtualBoxとは?使い方を初心者向けに解説!

Nginxの設定ファイル

Nginxをインストールした段階では、「Welcome to nginx!」という初期画面が表示されますが、このまま使い続ける人は少ないはずです。

おそらく、Nginxの設定ファイルを書き変えて、オリジナルのアプリケーションと連携させることが最終目標になると思います。

ですが、その前にNginxが初期画面を表示するまでの仕組みを、1つずつ確認していきましょう。

基本的な仕組みを理解していなければ、高度な設定をする際に詰まってしまう原因になるからです。

Nginxの設定ファイルの場所

Nginxの設定ファイルが置いてある場所は「/etc/nginx」です。

これは、yumでインストールした各サーバの設定ファイルは、「/etc」ディレクトリの下に作られるという決まりがあるからです。

Nginxもこれに従い、「/etc/nginx」ディレクトリがインストールと同時に自動生成されるのです。

Linuxのディレクトリ構成Linuxのディレクトリ構成(構造)とは?Windowsフォルダとの違いを覚える!

ディレクティブとは

ここから先に出てくるNginxの設定ファイル内の「server」や「listen」、「location」などの項目を「ディレクティブ」といいます。

Nginxの設定はこのディレクティブを指定し、続けてどのような動きをさせたいのかを記述することで、設定していきます。

ディレクティブは、必要になったタイミングで覚えよう!

設定ファイルが読み込まれる順番

Nginxの設定ファイルはデフォルトで2つあり、以下の順番で読み込まれます。

  1. /etc/nginx/nginx.conf
  2. /etc/nginx/conf.d/default.conf

これは、「nginx.conf」ファイルを確認することで説明できます。

nginx.confを確認
$ cat /etc/nginx/nginx.conf
user  nginx;
worker_processes  1;
            :
            :
    include /etc/nginx/conf.d/*.conf;
}

ここで注目してほしいのは、「include /etc/nginx/conf.d/*.conf;」という記述です。

「include」ディレクティブで、読み込むファイルを指定しています。

ここでは「/etc/nginx/conf.d/*.conf」のパターンにマッチするファイルを読み込むという意味になります。

つまり、さきほど紹介した「/etc/nginx/conf.d/default.conf」も、このパターンに見事マッチしますね。

これが、Nginxの設定ファイルの読み込み順の仕組みです。

ドキュメントルートの場所

Nginxにブラウザからアクセスすると「Welcome to nginx!」という初期画面が表示されましたが、これはデフォルトのドキュメントルートにHTMLファイルが置かれているからです。

ドキュメントルートとは、Webサーバにアクセスがあった際に参照するディレクトリのことです。

ドキュメントルートやHTMLファイルについては、「/etc/nginx/conf.d/default.conf」を開くことで確認できます。

default.confを確認
$ cat /etc/nginx/conf.d/default.conf
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
              :
              :
}

「root /usr/share/nginx/html;」でドキュメントルートを指定し、「index index.html index.htm;」でデフォルトで参照するファイルが指定されています。

つまり、Nginxにアクセスがあると、「/usr/share/nginx/html」ディレクトリの「index.html(なければ「index.htm」)」を参照する設定になっているのです。

初期画面のファイルを確認

Nginxの初期画面として表示されたHTMLファイルのパスがわかれば、中を開いて確認することもできますね。

index.htmlを確認
$ cat /usr/share/nginx/html/index.html

まとめ:NginxとWebアプリを連携させよう!

Nginxのインストール方法や、初期画面が表示される設定ファイルの仕組みを紹介しました。

これで、Nginxの基本は十分です。

次は、Webアプリケーションとの連携にチャレンジしてみましょう!

Railsアプリと連携させたい方は「Nginxの設定」を読んで、Pumaとのソケット通信にも挑戦してみてくださいね。

またね、キツネ(@kitaaaa_kitsune)でした!

未経験からWebエンジニアになるには【Webエンジニアとは】未経験からエンジニアになるには【初心者のステップ】 【Nginx入門】Apacheとの違いやWebサーバ構築について紹介【まとめ】【Nginx入門】自作アプリをWebサーバに構築!Apacheとの違いも紹介!
テキストのコピーはできません。