目次Category
やってみよう、入門記事です。
本記事の内容
本記事の内容は以下の通りです。
nginxとは
nginxはOSS(Open Source Software)のWebサーバです。
高速処理や並列処理、小メモリでの実行などの特徴があります。
静的コンテンツの配信やリクエストの振り分けが得意とされています。
以下のような機能があります。
- HTTPサーバ
- メール(SMTP、POP3、IMAP)やTCP/UDPなどに対するリバースプロキシ
- ロードバランサ
- HTTPキャッシュ
公式サイト
http://nginx.org/
設定などについて詳しくは以下のサイトを参照ください。
https://www.nginx.com/resources/wiki/start/index.html
Webサーバのリクエスト処理アーキテクチャ
Webサーバにおいて、クライアントからの接続要求に対する処理アーキテクチャとしては大きく次の3種類があります。
nginxはイベント駆動モデルを採用しています。
マルチプロセスモデル
1つのリクエストに対して1つのプロセスを立ち上げます。
マルチスレッドモデル
1つのリクエストに対して1つのスレッドを立ち上げます。
イベント駆動モデル
1つのプロセスによって複数のリクエストを処理します。
Apache HTTP Serverがリクエスト処理においてデフォルトでプロセス指向(prefork MPM)のアプローチを用いている(2.4系からはevent MPMがデフォルト)一方で、nginxは非同期のイベント駆動アプローチを用いています。
そのため、nginxは小メモリ、コンテキストスイッチのオーバーヘッドが少ない、プロセス・スレッドの同時実行数の問題がないといった特徴を持ち、C10K問題を解決できるWebサーバとしても注目されています。
Windowsでの環境構築
ダウンロード
以下のダウンロードページからダウンロードします。
http://nginx.org/en/download.html
「nginx/Windows-x.x.x」をダウンロードします。
インストール
ダウンロードしたファイルを展開し、任意の場所に配置します。
Webサーバの起動と起動確認
展開したディレクトリ直下のnginx.exeをダブルクリックで実行します。
またはコマンドプロンプトからインストールディレクトリに移動して「nginx」を実行します。
※ファイアウォールの設定を求められる場合には適宜許可設定します
ブラウザで以下のURLにアクセスします。
http://localhost
「Welcome to nginx!」が表示されれば成功です。
【Webページが表示されない場合】
タスクの確認
タスクマネージャを起動します。
「nginx.exe」の起動を確認します。
LISTENINGの確認
コマンドプロンプトから「netstat -ano | findstr 0.0.0.0:80」を実行します。
デフォルトの80番ポートでLISTENINGで待ち受けしているか確認します。
プロセス番号も合わせて確認します。
他のWebサーバとの競合
ApacheやIISなどの他のWebサーバとポート番号がバッティングしていないか確認します。
※\logs\nginx.pidファイルに起動プロセス番号が記録されています
※\conf\nginx.confファイルで待ち受けポート番号を変更できます
macOSでの環境構築
インストール
Homebrewを使用したインストールについて説明します。
Homebrewのインストールには事前にCommand Line Tools for Xcodeが必要になります。
Homebrewのインストール
HomebrewはmacOS向けのパッケージ管理ツールです。
以下のコマンドでインストールできます。
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
インストール後、環境に問題がないか以下のコマンドで確認しておきます。
$ brew doctor
Your system is ready to brew.
Homebrewについて、詳しくは以下の公式サイトを参照ください。
https://brew.sh/index_ja.html
【Xcodeをインストールしていない場合】
XcodeをAppStoreからダウンロードしてインストールします。
Xcodeを起動してライセンス使用許諾契約に同意しておきます。
以下のコマンドでCommand Line Toolsがインストールされます。
$ xcode-select --install
xcode-select: note: install requested for command line developer tools
nginxのインストール
ターミナルから以下のコマンドを実行します。
Homebrewを使用すると/usr/localにインストールされます。
$ brew install nginx
インストールを確認します。
$ nginx -v
nginx version: nginx/x.x.x
Webサーバの起動と起動確認
ターミナルから「nginx」コマンドで起動後、ブラウザから以下のURLにアクセスします。$ sudo nginx
http://localhost:8080
「Welcome to nginx!」が表示されれば成功です。
※デフォルトのポート番号は8080です
RHEL/CentOSでの環境構築
yumを使ったビルド版のインストールについて説明します。
ダウンロード&インストール
プレビルドされたパッケージについて以下に説明があります。
http://nginx.org/en/linux_packages.html
以下のファイルを作成、リポジトリ登録を行います。
/etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1
“OS”にOSの種類を指定します。”rhel”または”centos”に置き換えます。
“OSRELEASE”にバージョンを指定します。”6″や”7″に置き換えます。
CentOSのバージョン7の場合は下記になります。
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
上記内容のファイルを作成後、yumを使ってリポジトリからインストールします。
$ sudo yum install nginx
yumからのインストール時に「Public key for nginx-xxx.rpm is not installed」というエラーが表示される場合は、以下で公開鍵の登録を行ってください。
$ sudo rpm --import http://nginx.org/keys/nginx_signing.key
インストールを確認します。
$ nginx -v
nginx version: nginx/x.x.x
Webサーバの起動と起動確認
コンソールから「nginx」コマンドで起動後、ブラウザから以下のURLにアクセスします。$ sudo nginx
http://localhost
「Welcome to nginx!」が表示されれば成功です。
【CentOS7でWebページが表示されない場合】
Firewalldの設定でHTTP通信がデフォルトでは許可されていません。
以下にてHTTP通信を許可することができます。
「/etc/firewalld/zones/public.xml」に設定されています。
サービスにhttpを追加します。
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.
</description>
<service name="dhcpv6-client"/>
<service name="ssh"/>
<service name="http"/>
</zone>
Firewalldを再起動します。
$ sudo systemctl restart firewalld
nginxの主要コマンド
コマンド実行について
Windows : コマンドプロンプトから(インストールディレクトリに移動して)実行します。
macOS : ターミナルから実行します。
RHEL/CentOS : コンソールから実行します。
(#のコマンドは管理者権限が必要です)
起動
# nginx
※Windowsの場合、別のコマンドプロンプトウィンドウで実行する場合は「start nginx」
通常停止
# nginx -s quit
高速停止
# nginx -s stop
再起動
# nginx -s reload
設定ファイルのチェック
# nginx -t
バージョンの確認
$ nginx -v
バージョンと詳細設定の確認
$ nginx -V
ヘルプの表示
$ nginx -h
nginxの主要ファイル
主なファイルおよびディレクトリは以下になります(デフォルト)。
※Windowsの場合はインストールディレクトリからの相対パスとして記載しています
nginx.conf
HTTPなどアクセス関連の設定ファイルです。
Windows
\conf\nginx.conf
macOS
/usr/local/etc/nginx/nginx.conf
RHEL/CentOS
/etc/nginx/nginx.conf
mime.types
MIME Typeの設定ファイルです。
Windows
\conf\mime.types
macOS
/usr/local/etc/nginx/mime.types
RHEL/CentOS
/etc/nginx/mime.types
types {
text/html html htm shtml;
text/css css;
・・・
}
設定ファイル管理ディレクトリ
サーバ関連の設定ファイルが格納されたディレクトリです。
Windows
なし
macOS
なし
RHEL/CentOS
/etc/nginx/conf.d/
default.conf
デフォルトの設定ファイルです。
Windows
※「\conf\nginx.conf」に記載
macOS
※「/usr/local/etc/nginx/nginx.conf」に記載
RHEL/CentOS
/etc/nginx/conf.d/default.conf
server {
listen 8 0;
server_name localhost;
・・・
location / {
root /usr/share/nginx/html;
・・・
}
待ち受けポート番号を変更したい場合はlistenの値を変更します。
ドキュメントルートを変更したい場合はrootの値を変更します。
ドキュメントルートディレクトリ
Webコンテンツの格納ディレクトリです。
Windows
\html\
macOS
/usr/local/var/www/
RHEL/CentOS
/usr/share/nginx/html/
nginx.pid
nginxのプロセスIDが書き込まれるファイルです。
Windows
\logs\nginx.pid
macOS
/usr/local/var/run/nginx.pid
RHEL/CentOS
/var/run/nginx.pid
access.log
アクセスログファイルです。
Windows
\logs\access.log
macOS
/usr/local/var/log/nginx/access.log
RHEL/CentOS
/var/log/nginx/access.log
error.log
エラーログファイルです。
Windows
\logs\error.log
macOS
/usr/local/var/log/nginx/error.log
RHEL/CentOS
/var/log/nginx/error.log
参考サイト
<公式サイト>
nginx
https://nginx.org/
<Wikipedia>
nginx
https://ja.wikipedia.org/wiki/Nginx
以上です。おつかれさまでした。