Nginx 実践入門 ー詳しい語句説明とともに

# 概要

Nginxの入門です。

今回はNginx（エンジン　エックス）を使い、詳しい語句説明と共に

ローカルで Hello Nginx と出力してみます。

僕自信も勉強中のため、分からないところが幾度とあります。

詳しい方、FBやご教授いただけると大変嬉しいです。

この投稿は簡略版になっていますので、全投稿を見たい方は[Nginx実践入門](http://naggi-blog.com/2016/10/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/nginx/)まで

#Nginxとは

Igor Sysoev氏が開発した、高速・軽量のオープンソースwebアプリケーションサーバーです。

現在、とても人気が高く、Netflix・Wordpress.comやFacebookなどが使ってます。

##モダンなWebサーバー

開発者のSysoev氏いわく、Nginxはモダンなwebアプリケーションサーバーである。

### モダンなWebサーバーとは

予測可能な形でスケーラブル
高速かつ柔軟
簡単に使える
一般化されていて、様々なものに対応可能
保全性が高い
クラウドや仮想環境に対応している
と考えています。

##目的

開発当時はApacheがWebサーバーでは有名でしたが、軽量で高速のオープンソースのWebサーバーと言うのはものはなかったので作ったそうです。

他にもリバースプロキシや、C10K問題の解決など、様々な特性があります。

#ダウンロード

Nginxのダウンロードはとても簡単です。

他にもたくさんの記事がありますので、お使いのOSに合わせて検索してみてください。

以下は、Mac OSのHomebrewでインストールする場合です。

`$ brew update #Homebrewをupdateします。
$ brew install nginx`
なお。

command not found　と表示された方は 「Homebrew インストール」でグーグル検索しましょう。

`$ nginx -v`
で、nginxのversionが表示されれば成功です。

Nginx起動

いよいよ、わくわくですね。

# Nginxの起動もとっても簡単

`$ sudo nginx`
と打つだけです。

成功すれば何も表示されません。

では本当にプロセスは走っているのか、確認したい方は

`$ ps -ax | grep nginx`
psコマンドを打ってください。

`55379 ?? 0:00.00 nginx: master process nginx
55389 ?? 0:00.00 nginx: worker process
55409 ttys002 0:00.00 grep nginx`
大体、上記のようになっていれば成功です。

##その他のコマンド

停止

`$ sudo nginx -s quit`
リロード

`$ sudo nginx -s reload`
 

#ブラウザで表示

さて、現在、Nginxのサーバーが走っている状態だと思います。

現時点では設定ファイル(nginx.conf)はデフォルトのままですが、

Nginxが用意してくれている、index.htmlを表示してみましょう。

と言ってもブラウザ開くだけなのですが・・・

以下のリンクにアクセスしてください。

http://localhost:8080/

![Screenshot 2016-10-26 11.43.46.png](https://qiita-image-store.s3.amazonaws.com/0/114543/42cc1e24-8343-bef2-ef2e-cdc8eaefdfad.png)


このような嬉しい文章が表示されていれば成功です！


# ファイルを作る

語句説明が思ったより長くなってしまいました。

さて、いよいよ、ご自身で作ったファイルを動かしてみましょう。

書類(Documents)フォルダにindex.htmlというファイルを作ってください。

僕はコマンドでしますが、慣れてる方でいいと思います。

`
Documents username$ touch index.html
Documents username$ ls
index.html
`
ではindex.htmlファイルに

`<h1>Hello Nginx!</h1>`
と記述をしてみましょう。

#Hello Nginx

先程、作ったファイルをNginxを使ってブラウザに表示させましょう！

/usr/local/nginx/conf, /etc/nginx, もしくは /usr/local/etc/nginx

にある、nginx.confファイルの設定を変えなければいけません。

設定を変えるのは、

実際に動かしたいファイルの親フォルダを指定する

rootディレクティブ

ですね。

では、実際に

`root   html;`
こちらを

`root   /Users/ユーザー名/Documents;`
に変更してみましょう。

これだけで動くはずなのですが、もうすることがあります。

インフラ関連では必ず考えないといけない、権限です。

現在、index.htmlはユーザーのホーム以下にあります。

ですが、Nginxのプロセスの所有者はデフォルトではnginxになっているはずです。

なので、このままでは、

`403 forbidden、Permission denied`とエラーがでまるはずです。

ではNginxのプロセスの所有者を変更してみましょう。

###user

core コンテキストでは userディレクティブと呼ばれるものがあります。

これはプロセスの所有者を決定するものです。



`#user  nobody;`
デフォルトではこのようにコメントアウトされていると思います。

ここを以下のようにご自身のユーザー名とグループ名で置き換えてあげましょう。

`user ユーザー名　グループ名;`
ちなみに、ユーザー名とグループ名は以下のように調べることができます。

```
$ whoami #ユーザー名を調べる
naggigoishi　#僕の場合の出力
$ groups naggigoishi # naggigoishiのグループ名を調べる
staff com.apple.sharepoint.group.1 everyone localaccounts _appserverusr admin _appserveradm _lpadmin _appstore _lpoperator _developer com.apple.access_ftp com.apple.access_screensharing com.apple.access_ssh com.apple.sharepoint.group.1 everyone localaccounts _appserverusr admin _appserveradm _lpadmin _appstore _lpoperator _developer com.apple.access_ftp com.apple.access_screensharing com.apple.access_ssh #僕の場合の出力
#staffというのが僕の所属しているグループ名です。
```


さて、変更ができましたら、

`$ sudo nginx -s reload`
で、リロードをしてあげて、

http://localhost:8080

にアクセスしてください。

Hello Nginxと出力されたら成功です！


#　最後に

お疲れ様でした！

ひとまず、Nginxを使い htmlファイルを表示させることが出来ました！

デフォルトのファイルのコードの説明は[こちら](http://naggi-blog.com/2016/10/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/nginx-2/
)にあります