ヒトリ歩き

愚痴とかいろいろ書きます

nginxをインストールしてみた

フロントエンドのお仕事をすることになりそうなので、お勉強もかねてnginxをインストールしてみることにします。

nginxとは

nginxは、Webサーバ、リバースプロキシー、キャッシュ、ロードバランサ、メディアストリーミングといった機能を持っています。 C10K問題の解決のために開発され、イベント駆動型で、非同期アーキテクチャにより、高いパフォーマンスでの動作が可能です。

インストールする

今回は、yumではなくrpmを使ってインストールします。 CentOS7にインストールするため、下記のページからインストールするrpmをダウンロードします。
今回は、最新版の1.16.1をインストールすることにします。

nginx.org

インストール先の環境は、CentOS7です。

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

では、rpmをダウンロードしてインストールします。

$ sudo wget https://nginx.org/packages/rhel/7/x86_64/RPMS/nginx-1.16.1-1.el7.ngx.x86_64.rpm
$ sudo rpm -ivh nginx-1.16.1-1.el7.ngx.x86_64.rpm
$ nginx -v
nginx version: nginx/1.16.1

rpmでインストールできるので、簡単ですね。

nginxを起動してみる

nginxを起動してみます。

$ sudo nginx

プロセスを確認すると、masterとworkerがいます。

$ ps aux | grep nginx
root      7011  0.0  0.1  46444   976 ?        Ss   13:34   0:00 nginx: master process nginx
nginx     7012  0.0  0.3  46856  1928 ?        S    13:34   0:00 nginx: worker process

masterとworker

nginxは、masterプロセスと複数のworkerプロセスを持っています。
キャッシュを有効にしている場合は、cache loaderとcache managerプロセスも起動時に一緒に立ち上がります。
masterプロセスは、主にコンフィグファイルの読み込みと検査、workerプロセスの管理をします。
workerプロセスは、HTTPリクエストに対する処理を行います。 workerプロセスの数は、nginx.confのworker_processesで固定の数を設定するか、利用可能なCPUコア数に合わせて自動的に調整するように設定することが可能です。

nginx.conf を確認すると1 となっていました。

user  nginx;
worker_processes  1;

試しに、worker_processesの値を2に変更しリロードしてみると、workerプロセスが2 個になりました。

root      7011  0.0  0.3  46520  1972 ?        Ss   13:34   0:00 nginx: master process nginx
nginx     7585  0.0  0.4  46984  2064 ?        S    14:45   0:00 nginx: worker process
nginx     7586  0.0  0.4  46984  2064 ?        S    14:45   0:00 nginx: worker process

nginxを停止するには

nginxを停止するには、nginx -s quit で停止します。
nginx -s は、そのほかに設定ファイルの再読み込みをすることができます。

SIGNAL 説明
quit シャットダウン
reload 設定ファイルのリロード
reopen ログファイルの再オープン
stop 強制終了

Webサーバの設定は?

Webサーバの設定は、/etc/nginx/conf.d/default.conf に定義されています。
http://サーバのIPアドレス:80 または、http://localhost:80 にブラウザからアクセスすれば 「Welcom to nginx!」が表示されるはずです。

Webサーバの定義は、httpコンテキストにserverディレクティブを追加します。
インストールした直後は、/etc/nginx/nginx.conf のhttpコンテキストのincludeディレクティブに定義されたパスのコンフィグファイルが組み込まれることで、80ポートでページが表示されます。

include /etc/nginx/conf.d/*.conf;

Webサーバに関する設定は、マニュアルを見れば良さそうです。

docs.nginx.com

最後に

設定ファイルに関して、apacheよりも定義が分かりやすいのかなと感じました。 まだ、業務では使ったことがないので、使い出して分からないことが出てきたら調べて、またブログに書こうと思います。