概要
Nginxの入門です。
今回はNginx(エンジン エックス)を使い、詳しい語句説明と共に
ローカルで Hello Nginx と出力してみます。
僕自信も勉強中のため、分からないところが幾度とあります。
詳しい方、FBやご教授いただけると大変嬉しいです。
この投稿は簡略版になっていますので、全投稿を見たい方は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を表示してみましょう。
と言ってもブラウザ開くだけなのですが・・・
以下のリンクにアクセスしてください。
このような嬉しい文章が表示されていれば成功です!
ファイルを作る
語句説明が思ったより長くなってしまいました。
さて、いよいよ、ご自身で作ったファイルを動かしてみましょう。
書類(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
で、リロードをしてあげて、
にアクセスしてください。
Hello Nginxと出力されたら成功です!
最後に
お疲れ様でした!
ひとまず、Nginxを使い htmlファイルを表示させることが出来ました!
デフォルトのファイルのコードの説明はこちらにあります