Macでのテスト用NGINXのセットアップ方法

あなたが開発中のウェブサイトをテストするためにMacだけを使用する必要がありますか?別のサーバーや仮想マシンを構築する必要はありません。MacにNGINXをインストールすると、すぐにコンピュータ上でウェブサーバーを実行できます。

この記事を読んで、MacにNGINXをインストールして設定する方法を学びましょう。いくつかの異なるインストール方法を学び、自分に合った方法を選択できます。また、テストを開始するのに役立つ基本的な設定項目も学びます。

前提条件

このチュートリアルは実践的なデモンストレーションです。一緒に進める場合は、以下のものを用意してください:

  • macOSの最新バージョン。この記事の執筆時点では、サポートされているmacOSバージョンはCatalinaBig SurMontereyの3つです。このチュートリアルではmacOS Big Surを使用しています。
  • MacにNGINXをインストールするには、コンピュータにはXcode Command Line Toolsが必要です。これはソースからのインストールまたはHomebrewを使用してパッケージ(formula)からインストールするためです。

MacでNGINXをインストールする

MacでNGINXをインストールするには、ソースからコンパイルする方法とパッケージマネージャを使用する方法の2つがあります。ただし、どちらの方法が優れているわけではありません。選択する方法は、要件に応じて異なります。

次のセクションでは、両方のNGINXのインストール方法を学びます。

方法1:ソースからのコンパイルとインストール

ソースからNGINXをコンパイルしてインストールすると、NGINXのインストールにモジュールやセキュリティパッチを含める柔軟性があります。たとえば、ストリーミングサーバを設定する場合、リアルタイムメッセージングプロトコル(RTMP)モジュールを含めてNGINXをコンパイルすることができます。

カスタマイズ性を利用するには、より多くの手順が必要で、手動で依存関係をインストールする必要があります。 MacからソースからNGINXをインストールするためには、次の手順に従ってください。

1. Macでターミナルを開きます。

2. 次のコマンドを実行して、ホームフォルダの下に作業ディレクトリを作成します。このディレクトリには、NGINXのインストールに必要なすべてのソースファイルが含まれます。

# ホームディレクトリの下にソースフォルダを作成
mkdir ~/src && cd ~/src

3. 次に、以下のコマンドを実行して、最新のPerl Compatible Regular Expressions (PCRE)をダウンロード(curl)し、展開(tar)します。NGINXのCoreモジュールとRewriteモジュールには、PCREが必要です。この記事作成時点での最新のPCREバージョンは8.45です。

# PCREのソースをダウンロードして展開
curl -OL https://ftp.exim.org/pub/pcre/pcre-8.45.tar.gz
tar -xf pcre-8.45.tar.gz && rm pcre-8.45.tar.gz

4. 各コマンドを実行して、SSLサポートを追加するためにOpenSSLのソースをダウンロード(curl)します。この追加は、NGINXのビルドをカスタマイズする例です。この記事作成時点での最新のOpenSSLバージョンは1.1.1mです。

# OpenSSLのソースファイルをダウンロードして展開
curl -OL http://www.openssl.org/source/openssl-1.1.1m.tar.gz
tar -xf openssl-1.1.1m.tar.gz && rm openssl-1.1.1m.tar.gz

5. 要件をダウンロードした後、以下のコマンドを実行してNGINXのソースをダウンロード(curl)および展開(tar)します。現在の執筆時点での最新の安定版は1.20.2です。

# NGINXのソースファイルをダウンロードおよび展開
curl -OL http://nginx.org/download/nginx-1.20.2.tar.gz
tar -xf nginx-1.20.2.tar.gz && rm nginx-1.20.2.tar.gz
# 作業ディレクトリ内のファイル/フォルダの一覧表示
ls -l

この時点で、以下に示すように合計で3つの新しいディレクトリが作成されます。

Listing the source folders

6. 次に、以下のコマンドを実行してNGINXをコンパイル(make)およびinstallします。

# NGINXのソースフォルダに移動
cd nginx-1.20.2

# NGINXの設定を作成
## パラメータ:
## --with-pcre=../pcre-8.45/:PCREのソースの場所を指定
## --with-http_ssl_module:HTTPSサポートを有効にする
## --with-openssl=../openssl-1.1.1m/:http_ssl_moduleに必要なOpenSSLのソースを指定
./configure --with-pcre=../pcre-8.45/ --with-http_ssl_module --with-openssl=../openssl-1.1.1m/

# NGINXをコンパイル
make
# NGINXをインストール
sudo make install

7. 次に、以下のコマンドを実行してNGINXのパスをシステムの$PATHに追加し、完全なパス/usr/local/nginx/etc/pathsに追記します。この手順の後、完全なパスを指定せずにnginxコマンドを実行できます。

# /etc/paths ファイルに NGINX を追加します
echo /usr/local/nginx/sbin | sudo tee -a /etc/paths

8. CMD+Q を押してターミナルを終了し、新しいターミナルセッションを開いて新しい $PATHS を適用します。

9. 以下の nginx コマンドを実行して NGINX を起動します。NGINX サーバーはインストール後に自動的に起動しないためです。

sudo nginx

10. 最後に、NGINX が実行されていることを確認します。Web ブラウザウィンドウを開き、HTTP://localhost と入力します。以下のようなデフォルトの NGINX ウェルカムメッセージページが表示されるはずです。

ソースから NGINX をインストールすると、デフォルトのリスニングポートは 80 に設定されます。

Accessing the NGINX default web page

Mac でソースから NGINX を root ユーザーとしてインストールした場合、今後発行するすべての nginx コマンドの前に sudo を付ける必要があります。

方法 2: Homebrew を使用して NGINX をインストールする

Homebrew を使用して NGINX をインストールすると、より便利でミスの可能性が低くなります。この方法では依存関係が自動的にインストールされます。NGINX のインストールをカスタマイズする必要がない場合、この方法は最も迅速なオプションで、1つのコマンドのみでインストールできます!

Mac で Homebrew を使用して NGINX をインストールするには、以下の手順を実行します。

1. 新しいターミナルセッションを開きます。

2. 以下の brew コマンドを実行して NGINX をインストールします。

brew install nginx

Homebrew を使用して root ユーザーとして NGINX をインストールすることはできますか? – いいえ(公式にはサポートされていません)。sudo 接頭辞を付けて brew install コマンドを実行しようとすると、以下のエラーメッセージが表示されます。

「Er」または:Homebrewをルートとして実行することは非常に危険であり、もはやサポートされていません。Homebrewはインストール時に特権を降ろさないため、ビルドスクリプトにシステムへの完全なアクセス権限が与えられます。」

3. インストール後、以下のコマンドを実行してNGINXを起動します。このコマンドはNGINXをバックグラウンドデーモンとして実行します。

デフォルトでは、HomebrewはNGINXを/usr/local/Cellar/nginx/<version>にインストールし、/usr/local/opt/にシンボリックリンクを作成します。nginxバイナリは/usr/local/binにシンボリックリンクがあり、このフォルダはすでに$PATHに含まれています。

nginx

バックグラウンドサービスなしでNGINXを実行するには、代わりに以下のコマンドを実行します。このコマンドはNGINXをデーモンとして実行しないようにするグローバルディレクティブを発行します。

nginx -g “da” mon off;”

このモードでは、ターミナルでCTRL+Cを押すことでNGINXを停止できます。

4. 最後に、以下のcurlコマンドを実行して、NGINXが正常に動作していることを確認します。

Homebrewを使用してNGINXをインストールすると、デフォルトのリスニングポートが8080に設定されます。このデフォルトのポート割り当てにより、sudoなしでnginxを実行できます。

curl HTTP://localhost:8080

以下のように、curlコマンドでデフォルトのNGINXウェブページがダウンロードされ、サーバーが動作していることが示されています。

Testing NGINX with curl

テスト用のNGINXのセットアップ

これまでにNGINXをインストールしましたが、まだデフォルトの設定で動作しています。ウェブサイトのテストを開始する前に、いくつかの基本的な変更を検討する必要があります。

コンピュータの起動時にNGINXを自動的に起動させますか?テスト中のウェブサイトのファイルをどこに保存しますか?デフォルトのリスニングポートの割り当てを保持する必要がありますか?

これらは、NGINXのインストール後に設定する必要がある項目の一部です。次のセクションで設定方法を学びます。

次のセクションでは、HomebrewでインストールしたNGINXの設定ファイルの手順を示します(明示的に指示されていない場合は)。

サーバのリスニングポートのカスタマイズ

インストール方法によっては、デフォルトのリスニングポートは80または8080になります。ポート8080は、テストや開発には通常受け入れられます。ただし、他のサービスとの競合がある場合や、単に気分が変わった場合など、ポート番号を変更したい場合もあります。

どんな理由があっても、以下の手順に従ってNGINXのデフォルトのリスニングポートを変更してください。

1. 最初に、以下のコマンドを実行してNGINXが実行されていないことを確認するために、停止シグナル(-s stop)を送信します。nginx -s stop

nginx -s stop

2. 次に、以下のnginxコマンドを実行してNGINXの設定ファイルのパスを確認します。

nginx -t

以下の結果は、設定ファイルが/usr/local/etc/nginx/nginx.confにあることを示しています。

Testing the NGINX configuration file

3. 好みのテキストエディタ(例:nano)で設定ファイルを開きます。

nano /usr/local/etc/nginx/nginx.conf

4. 今、server {}のブロックの中にあるlisten行を見つけてください。以下に示すように、リスニングポートの値は8080です。

NGINX listening port number

5. この例では、listenのポート番号を他のユニークなポート番号に変更してください。例えば、9000に変更します。変更を保存してファイルを終了します。

Changing the listening port number

6. そして、以下のnginxコマンドを再実行して、NGINXを再起動してください。

nginx

7. 最後に、新しいブラウザウィンドウを開き、HTTP://localhost:9000に移動してください。NGINXは今、ポート9000でウェブサイトを提供するはずです。

NGINX running on port 9000

開発ウェブディレクトリを指定する

MacでNGINXをデフォルトでインストールすると、ウェブディレクトリは/usr/share/nginx/html(ソースインストール)または/usr/local/Cellar/nginx/<version>/html(Hombrewインストール)から提供されます。

しかし、もしウェブサイトのファイルが別の場所にある場合はどうすればいいでしょうか?心配しないでください。以下の手順に従って、NGINXを開発用ウェブディレクトリに向けることができます。

1. まず、以下のコマンドを実行してNGINXを停止し、設定ファイルをテキストエディタで開きます。これは、「サーバーリスニングポートのカスタマイズ」セクション(1〜3の手順)と同じように行います。

# NGINXを停止
nginx -s stop
# 設定ファイルを検索
nginx -t
# 設定ファイルを編集モードで開く
nano /usr/local/etc/nginx/nginx.conf

2. テキストエディタで、server {}ブロック内にあるroot html;と書かれた行を検索します。

The default web directory location

3. rootの値を編集し、カスタムフォルダに変更します。この例では、ウェブディレクトリは/Volume/DevData/testwebにあります。変更を保存し、エディタを終了します。

この例では、テストウェブサイトはDimensionsと呼ばれる静的なウェブサイトで、HTML5 Upからダウンロードされました。このサンプルウェブサイトは、Creative Commons Attribution 3.0 ライセンスの下で無料でダウンロードして使用することができます。

Changing the default web directory location

4. 今度は、NGINXサーバーを再起動します。

nginx

5. 最後に、ウェブブラウザを使用してHTTP://localhost:9000のアドレスにアクセスしてください。NGINXは、スクリーンショットのように、カスタムウェブディレクトリからテストウェブサイトを提供しています。

Testing if NGINX serves a custom web directory location

ソースベースのインストールに対するNGINXの自動起動の有効化

選択したインストール方法に関係なく、NGINXはデフォルトでは自動的に起動しません。開発やテストでは、NGINXの自動起動は必要ないかもしれません。しかし、必要な場合は、launchdプロセスを使用して、NGINXを起動時に実行するように設定することができます。

NGINXを自動起動するには、ソースベースまたはHomebrewベースのインストールのいずれかを有効にすることができます。ただし、このデモでは、ソースベースのインストールから始めます。

ソースベースのインストールでNGINXを自動起動するには、以下の手順に従ってください。

1. 下記のtouchコマンドを実行して、NGINXのための新しいプロパティリスト(PLIST)ファイルを作成します。

/Library/LaunchDaemonsの場所には、ルートまたは指定したユーザーの代わりに実行されるグローバルデーモンが保存されます。ファイル名は任意のものにすることができますが、作成するデーモンの名前を含むファイル名が便利です。

sudo touch /Library/LaunchDaemons/ata.nginx.plist

2. その後、PLISTファイルを編集するために開きます。

sudo nano /Library/LaunchDaemons/ata.nginx.plist

3. 以下のコードをコピーしてテキストエディタに貼り付けます。ファイルを保存してエディタを終了します。

要するに、以下のコードは、ata.nginxという名前のデーモンを定義しています。実行するプログラムは/usr/local/nginx/sbin/nginxであり、RunAtLoadの値はコンピュータの起動時にプログラムが実行されることを意味します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>ata.nginx</string>
				<key>Program</key>
				<string>/usr/local/nginx/sbin/nginx</string>
        <key>RunAtLoad</key>
        <true/>
</dict>
</plist>

4. 最後に、以下のlaunchctlコマンドを実行してデーモンをloadします。このコマンドはNGINXをすぐに起動します。そして、この時点からは、NGINXはコンピュータの再起動後に自動的に起動します。

sudo launchctl load -w /Library/LaunchDaemons/ata.nginx.plist

NGINXの自動起動を無効にしたい場合は、以下のコマンドを実行してください。このコマンドにより、NGINXデーモンの自動起動が停止され、無効化されます。

sudo launchctl unload -w /Library/LaunchDaemons/ata.nginx.plist

HomebrewベースのインストールでNGINXの自動起動を有効にする方法

ソースベースのインストールとは異なり、HomebrewベースのNGINXインストールでは、NGINXの自動起動の有効化または無効化のために1つのコマンドを実行するだけで済みます。便利ですね。

以下のコマンドを実行してNGINXの自動起動を有効にしてください。 startコマンドはNGINXを即座に起動し、起動時に登録します。

sudo brew services start nginx

コマンドを実行すると、以下の画像と同様の出力が表示されます。

Starting the NGNIX service

NGINXの自動起動を無効にするには、以下のコマンドを実行してください。コマンドの変更点は、startstopに変更することです。このコマンドはNGINXサーバーを即座に正常に終了させます。

sudo brew services stop nginx

まとめ

以上で完了です!Mac上でNGINXをセットアップすることで、すぐにウェブサーバーをテスト用に稼働させることができます。セットアップの要件に基づいてインストールオプションを選択し、設定をプレーンテキストの設定ファイルで簡単にカスタマイズすることができます。特別なツールは必要ありません。

NGINXは単一のウェブサイトにテストおよび実行を制限しません。複数の開発ドメインとウェブサイトを同時に実行することができ、互いに干渉することはありません。また、冒険心がある場合は、MacでDocker内でNGINXを実行することもできます。

Source:
https://adamtheautomator.com/nginx-on-mac/