CentOS7にnginxを導入&初期設定まとめ
2017/01/31
こんにちは、okutani(@okutani_t)です。本記事では、高速で軽量なオープンソースのWebサーバー『nginx』の導入方法について解説しています。
WebサーバーはApacheが有名ですが、最近では大量のアクセスをさばけるnginxが人気のようです。
その理由として、ロードバランサーの機能やリバースプロキシ機能を有している、イベント駆動モデルを採用しているといった点です。
nginxをリバースプロキシとして、Apachへルーティングする、といったように組み合わせて使うこともできます。
そういったnginxの詳しい解説は、次のサイトあたりを一読してみてください。
参考これから始める人のためのnginx (1):高速・軽量・高機能……Nginxの基礎知識 (1/2) – @IT
参考nginxの紹介
余談ですが、あのYahoo!もnginxを使っているみたいです。たまたまこんな画面をお目にかかれました。
おやっ #Yahoo #nginx pic.twitter.com/4yFAp0B696
— oku◝(●˙꒳˙●)◜tani (@okutani_t) 2016年6月27日
今回は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
Pre-Built Packages内の「Linux ~ mainline version」を選択。ちなみに、stableは安定版です。
英語でも説明が書いてありますが、下記のコードをコピーしてCentOS7用に書き換えます。
[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」へアクセス。
次に「http://vdeep.net」へアクセスしてみます。
上記のように表示されれば成功です。本ブログ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を利用する場合は以下の記事を参考にしてください。
Ruby on Railsで使いたい場合は以下の記事をどうぞ。
Web開発のお仕事を募集しています
フリーランスのエンジニアとして、Webシステム開発のお仕事依頼を随時募集しています(現在の業務量によってお受けできない場合もあります)。
「Ruby on Rails」「JavaScript(jQuery, Reactなど)」「HTML + CSS」を用いたシステム開発、「Heroku」等を用いたサーバー構築・運用、「Git」や「GitHub」を利用したソーシャルコーディングなどに対応しています。
ご依頼を検討している方は、下記リンク本ブログからのお問い合わせ、もしくはokutaniのポートフォリオからご連絡ください。
LINKお問い合わせ
スポンサーリンク