Custom Search

JITAKU_SVR_Wiki

nginx

最近(2015年初頭)、nginxっていうのを良く耳にする。
新しいWEBサーバ(と言っても5年くらい経つのかな?)でapacheより動作が軽いとかなんとか。

まだまだ圧倒的にWEBサーバはapache、IISの需要が高いので大丈夫だとは思うが…。
でも、知らなくても良いってのとはちょっと違うのでとりあえずやっていく。
(ぶっちゃけ30半ばになる年齢から新しいのは厳しい…。)

今回テストする環境は、CentOS7.0(64bit)で挑戦。
(CentOS7を覚えるのもかなり苦労するな~…)

また、ここで行うテストは、とりあえず動くを目標にし、細かい設定は今後追加予定。

リポジトリ追加

まず、nginx自体がCentOSに標準搭載されていないのでリポジトリを追加する必要がある。
で、出来れば最新版が良いので、/etc/yum.repo.dに以下のファイルを作成する。

CentOSの場合:nginx.repo(任意のファイル名.repo)

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

RHELの場合:nginx.repo(任意のファイル名.repo)

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/
gpgcheck=0
enabled=1

この辺のことは公式サイトに書かれているのでそれを参考に。
http://wiki.nginx.org/InstallJa


インストール

インストールはリポジトリを追加出来てしまえばあとは簡単。

# yum install nginx

(2015年4月時点での最新)

# rpm -qa |grep nginx
nginx-release-centos-7-0.el7.ngx.noarch
nginx-1.6.3-1.el7.ngx.x86_64

設定

上記でも少し書いたが、ここではとりあえず動く、を目標に設定。
最初からサンプルが用意されているので、それを参考に自分で書いたものを紹介。

# cd /etc/nginx/conf.d

# cat oreore.com.conf

server {
        listen              80 default_Server;
        server_name  oreore.com www.oreore.com;

        root                /var/www/html/oreore;
        index               index.html index.htm;

        access_log  /var/log/nginx/oreore_access.log main;
        error_log  /var/log/nginx/oreore_error.log warn;
}

oreore.com.confは見たとおり適当だが、VirtualHostの名前は分かりやすいようにFQDNのついたファイル名を推奨(個人的に)。

/etc/nginx/conf.d配下の*.confを読み込むという様にnginx.confに記述されている。
(ファイルはデフォルトで、/etc/nginx/nginx.conf)

server … とりあえずまだ詳細は不明とする。今はnginxでWEBサーバとして宣言するブロックッて感じで覚えている。
listen … httpのリスンポートを指定
server_name … httpリクエストに対し応答する名前を記述(複数可)
root … apacheで言うDocumentRootと同じ(だと思う)
index … apacheで言うDirectoryIndexと同じ(だと思う)
access_log … アクセスログのファイル名
error_log … エラーログのファイル名

調べた限りの結果

・apacheのrotatelogsの様なものは存在していないみたい。
・NameBase、IPBaseのVirtualHostは存在する。
 →NameBaseをapacheで使用し、IPアドレスでサーバにアクセスした時は一番上に記述されているVirtualHostが反応したが、
  nginxだと、その挙動を無視することも出来るし、デフォルトで応答するVirtualHostの設定も出来る。
・上記のdefault_serverはlistenディレクティブに書くことで反映出来る。

サービス起動

CentOS7でもやることは一緒。

サービスを起動さえる必要がある。
また次回OS起動時に自動でサービスが起動するように設定も出来る。

# systemctl enable nginx.service
→nginxを自動起動登録。

# systemctl list-unit-files |grep nginx
nginx.service enabled
→自動起動確認。enableとなっていればOK。

# systemctl start nginx.service
→サービスを起動する。

# ps -ef |grep nginx
nginx 3460 3458 0 4月16 ? 00:00:00 nginx: worker process
上記の様にプロセスが見つかればOK。

確認

ここまでくればapacheだろうと、nginxだろうと結果は同じ。
ブラウザで確認してみる。

http://web-server/

で、ここでもしnginxが反応しないようであればOSの問題だと思われる。 恐らくこの辺りだと思うが…。

①selinuxの無効化

# setenforce 0
selinuxを一時的に無効。

# vim /etc/sysconfig/selinux

SELINUX=disabled

あとは再起動をしてもselinuxは無効になって起動してくる。

②iptables(firewlld)の停止/無効化。
CentOS7になり、iptablesの名称が変更になった。

サービスの停止

# systemctl stop firewalld.service

自動起動の解除

# systemctl disable firewalld.service

上記で試してみて再度アクセスしてみる。

ログを確認するには

# journalctl -u nginx.service

ここにアクセスログが出なければOSまでパケットが届いていない可能性が高い。

参考

http://nginx.org/ja/docs/http/request_processing.html


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-12-22 (火) 13:59:13 (639d)