vdeep

*

vdeepはプログラミング、IT、Web技術、ライフハックの事などなどを管理人okutaniがつぶやくブログです。月間13万PV〜。

CentOS7にnginxを導入&初期設定まとめ

      2017/01/31

LINEで送る
Pocket

centos7-nginx
こんにちは、okutani(@okutani_t)です。本記事では、高速で軽量なオープンソースのWebサーバー『nginx』の導入方法について解説しています。

WebサーバーはApacheが有名ですが、最近では大量のアクセスをさばけるnginxが人気のようです。

その理由として、ロードバランサーの機能やリバースプロキシ機能を有している、イベント駆動モデルを採用しているといった点です。

nginxをリバースプロキシとして、Apachへルーティングする、といったように組み合わせて使うこともできます。

そういったnginxの詳しい解説は、次のサイトあたりを一読してみてください。

参考これから始める人のためのnginx (1):高速・軽量・高機能……Nginxの基礎知識 (1/2) – @IT

参考nginxの紹介

余談ですが、あのYahoo!もnginxを使っているみたいです。たまたまこんな画面をお目にかかれました。

今回はVagrant上でCentOS7を利用し、nginxを導入しています。Vagrantの利用方法については「『Vagrant Cloud』を利用してVagrantのBoxを追加してみよう | vdeep」あたりを参考にしてください。以下のバージョンのCentOS上で動作を確認しています。

$ cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)

導入後、nginxでPHPとRuby on Railsを使えるように設定しています(こちらは次回記事)。そちらも合わせて参考にしてください。

では、さっそくCentOS7にnginxを導入していきましょう。

参考CentOS7にNginx1.9をインストールする方法 – Qiita

スポンサーリンク

CentOS7にnginxのインストール

nginxのインストールをおこないます。今回はリポジトリファイルを自分で作成し、最新版のnginxをインストールしました。

下記公式サイトへアクセスし、執筆現在の最新バージョンである「nginx-1.9.12」をクリック。

LINKnginx news

centos7-nginx2

Pre-Built Packages内の「Linux ~ mainline version」を選択。ちなみに、stableは安定版です。

centos7-nginx3

英語でも説明が書いてありますが、下記のコードをコピーしてCentOS7用に書き換えます。

centos7-nginx4

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1

↓CentOS7用に書き換え

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=0

baseurlをCentOS7に書き換えて、enabledを0にすることで、yumコマンド時にnginx.repoを探索対象から外し明示的に指定するようにしました。

上記で書き換えた内容を「/etc/yum.repos.d/nginx.repo」に記述していきます。

$ sudo vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=0

また、公式サイトからわざわざコピーせずに、下記のコマンドを直接実行してもOKです。この場合も、上記と同じように「/etc/yum.repos.d/nginx.repo」を適宜書き換えてください。

$ sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

バージョンを確認します。

$ sudo yum info --enablerepo=nginx nginx
利用可能なパッケージ
名前                : nginx
アーキテクチャー    : x86_64
エポック            : 1
バージョン          : 1.9.12
リリース            : 1.el7.ngx
容量                : 629 k
リポジトリー        : nginx/x86_64
要約                : High performance web server
URL                 : http://nginx.org/
ライセンス          : 2-clause BSD-like license
説明                : nginx [engine x] is an HTTP and reverse proxy server, as
                    : well as a mail proxy server.

インストールを実行。

$ sudo yum -y install --enablerepo=nginx nginx

導入確認。

$ nginx -v
nginx version: nginx/1.9.12

また、次のコマンドで設定情報を詳しく見ることができます。

$ nginx -V

nginxの初期設定

nginxの初期設定をおこなっていきます。

設定は「/etc/nginx/conf.d」にあるdefault.confを編集して進めていきます。

$ cd /etc/nginx/conf.d
$ ls
default.conf

まずはじめに、default.confを念のためバックアップ。

$ sudo cp default.conf default.conf.orig

今回は試しにlocalhostと、自身で設定したvdeep.netとバーチャルホストを利用できるようにするため、次のようにdefault.confに記述してみました。

$ sudo vi default.conf
server {
    listen 80;
    server_name localhost;
location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}
server {
    listen 80;
    server_name vdeep.net;
    location / {
        root    /var/www/vdeep.net;
        index   index.html index.htm;
    }
}

ポート番号を80、ルートを「/usr/share/nginx/html」「/var/www」以下にそれぞれ設定。

ここら辺の設定は「CentOS 6.5でnginxを動かす為の最低限の設定 – Qiita」「Nginx応用編①バーチャルホストを設定する。Linuxサーバ構築手順まとめ | エンジニア転職求人情報×IT人材紹介@SAK」あたりを参考にしました。

本記事では詳しく紹介しませんが、example.com.confなどと設定ファイルを新規作成し、バーチャルホストを設定する方法もあります。手順は次のとおりです。

$ mkdir /etc/nginx/sites-available
$ mkdir /etc/nginx/sites-enabled
$ vi /etc/nginx/sites-available/example.com.conf
$ ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
$ vi /etc/nginx/nginx.conf
http {
...省略...
  + include sites-enabled/*.conf;
}

sites-enabledのシンボリックリンクを削除するだけで公開、非公開がかんたんに設定できます。こちらの方がスマートな感じですね。

今回は検証用として、default.confにまとめて記述する方法で話を進めていきます。

設定ファイルを作成したら、次のコマンドで文法をチェックしておきます。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

「/var/www」以下にルートで設定したディレクトリ、index.htmlをそれぞれ作成。

$ sudo mkdir -p /var/www/vdeep.net
$ sudo vi /var/www/vdeep.net/index.html
hello nginx!

localhostの「/usr/share/nginx/html/index.html」はデフォルトで用意されているので、今回はそのまま利用します。

これで初期設定が整いました。

nginxの起動・停止など

ここでまとめてnginxの起動や停止の方法を一通り載せておきます。

nginxの起動は以下コマンドです。

$ sudo systemctl start nginx

停止は以下。

$ sudo systemctl stop nginx

再起動は以下。なお、nginx起動中に.confファイルを編集した場合は、このコマンドでnginxを再起動して設定を反映させるので、よく使います。

$ sudo systemctl restart nginx

OS起動時に自動起動させるには以下コマンドです。

$ sudo systemctl enable nginx

自動起動を停止するには以下。

$ sudo systemctl disable nginx

nginx起動状態の確認は以下コマンド。

$ sudo systemctl status nginx

nginxを起動させておき、きちんとファイルが表示されるか確認しておきましょう。

表示確認

適宜、hostsファイルを書き換えて、「http://localhost」「http://vdeep.net」をブラウザで表示。本記事ではVagrantfileで設定したIP「192.168.33.33」を利用して、hostの設定をおこないました。

192.168.33.33 localhost
192.168.33.33 vdeep.net

nginxを起動した状態で、ブラウザから「http://192.168.33.33」もしくは「http://localhost」へアクセス。

centos7-nginx5

次に「http://vdeep.net」へアクセスしてみます。

centos7-nginx6

上記のように表示されれば成功です。本ブログvdeep.netがあるにもかかわらず、hostsファイルで見る先がnginxに向いているため、このように表示されています。もしうまくいかない場合は、DNSのキャッシュをクリアしてみるなどしてみてください。

また、curlコマンドを使っても確認できます。

$ curl 'http://localhost'

すぐに確認したい場合はcurlを使うと楽ですね。

アクセス・エラーログの確認

次のようにすれば、直近3つのアクセス・エラーログが確認できます。

$ sudo tail -n3 /var/log/nginx/access.log
$ sudo tail -n3 /var/log/nginx/error.log

「/var/log/nginx」にログファイルがあると覚えておきましょう。

まとめ

CentOS7にnginxを導入する方法について解説しました。

本記事でおこなった初期設定は簡易的なものなので、実際は運用するプロジェクトに合わせて適宜追加する必要があります。

基本的に以下の書籍を参考にしているため、詳しく知りたい場合は一読しておくと良いかと思います。

次回記事

nginxでPHPを利用する場合は以下の記事を参考にしてください。

CentOS7+nginxでPHPを利用する方法(PHP-FPM)
こんにちは、okutani(@okutani_t)です。前回の「CentOS7にnginxを導入&初期設定...
2016-08-16 15:21
はてブ

Ruby on Railsで使いたい場合は以下の記事をどうぞ。

CentOS7+nginxでRuby on Railsを利用する(Unicorn)
こんにちは、okutaniです。前回、「CentOS7にnginxを導入&初期設定まとめ | vdeep」...
2016-09-03 20:45
はてブ

この記事が気に入ったら
いいね ! しよう

Twitter で
LINEで送る
Pocket

okutani (@okutani_t) のヒトコト
それほどWebサーバーの知識はなかったのですが、参考書や解説しているサイトをぐるぐる見て設置することができました。Webに対する理解が深まった気がします。

 - nginx

スポンサーリンク

PC用AdSense

PC用AdSense

Share
  • このエントリーをはてなブックマークに追加

  こちらの関連記事もどうぞ

nginxでhttps!自己署名証明書でSSL設定してみよう

こんにちは、okutani(@okutani_t)です。本記事では、「nginx …

CentOS7+nginxでPHPを利用する方法(PHP-FPM)

こんにちは、okutani(@okutani_t)です。前回の「CentOS7に …

nginxでベーシック認証をかける方法

こんにちは、okutani(@okutani_t)です。本記事ではオープンソース …

CentOS7+nginxでRuby on Railsを利用する(Unicorn)

こんにちは、okutaniです。前回、「CentOS7にnginxを導入&初期設 …

vdeepのトップページへ戻る画像です。風船の形をした島を女の子が掴んでいます。