在Mac上为测试设置NGINX

你需要测试正在开发的网站,但只有你的 Mac 来工作吗?您无需构建单独的服务器或虚拟机来测试您的网站。一个快速的选择是在 Mac 上安装 NGINX,然后您应该在您的电脑上运行一个 Web 服务器。

请留在这里,学习如何在 Mac 上安装和设置 NGINX。您将学习几种不同的安装 NGINX 的方法,因此您可以选择适合您的方法。您还将学习一些基本的配置项,帮助您开始测试。

先决条件

本教程将进行实际演示。如果您想跟着做,请确保您具备以下条件:

在Mac上安装NGINX

您可以通过编译源代码或使用软件包管理器的两种方法在Mac上安装NGINX。但是,这两种安装方法都没有优劣之分,您选择哪种方法将取决于您的需求。

在接下来的部分中,您将学习如何执行这两种NGINX安装方法。

方法一:编译和安装源代码

从源代码编译和安装NGINX可以让您在NGINX安装中包含模块或安全补丁的灵活性。例如,如果您设置了流媒体服务器,可以编译NGINX以包含实时消息传递协议(RTMP)模块。

自訂性需要更多步驟,並包括手動安裝相依性。按照以下步驟在 Mac 上從源代碼安裝 NGINX。

1. 在您的 Mac 上打開終端機。

2. 執行下面的命令在您的主目錄下創建一個工作目錄。這個目錄將包含您安裝 NGINX 所需的所有源代碼文件。

# 在您的主目錄下創建一個源代碼文件夾
mkdir ~/src && cd ~/src

3. 接下來,運行以下命令下載(curl)和提取(tar)最新的Perl Compatible Regular Expressions (PCRE)。NGINX的核心重寫模塊需要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. 運行下面的每個命令下載(curl)OpenSSL 源代碼以添加 SSL 支持。這是自定義 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. 下載完成需求後,執行以下命令以下載(curl)和提取(tar)NGINX源碼。撰寫時的最新穩定版本為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

此時,您應該有三個新的目錄,如下所示。

Listing the source folders

6. 現在,執行以下命令來編譯(make)並安裝NGINX。

# 進入NGINX源代碼文件夾
cd nginx-1.20.2

# 創建NGINX配置
## 參數:
## --with-pcre=../pcre-8.45/:指定PCRE源位置
## --with-http_ssl_module:啟用HTTPS支持
## --with-openssl=../openssl-1.1.1m/:指定OpenSSL源。 http_ssl_module所需
./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命令而無需指定完整路徑。

# 將 NGINX 追加到 /etc/paths 檔案中
echo /usr/local/nginx/sbin | sudo tee -a /etc/paths

8. 按下 CMD+Q 退出終端並打開一個新的終端會話以應用新的 $PATHS

9. 執行以下 nginx 命令來啟動 NGINX,因為 NGINX 服務器在安裝後不會自動啟動。

sudo nginx

10. 最後,確認 NGINX 是否運行。打開一個網頁瀏覽器窗口,輸入地址 HTTP://localhost。您應該看到類似以下的默認 NGINX 歡迎消息頁面。

從源代碼安裝 NGINX 設置了默認監聽端口 80。

Accessing the NGINX default web page

因為您以 root 身份從源代碼在 Mac 上安裝了 NGINX,所以您需要在發出每個 nginx 命令之前添加 sudo 前綴。

方法二:使用 Homebrew 安裝 NGINX

使用 Homebrew 安裝 NGINX 更加方便且不容易出錯。此方法會自動安裝依賴項。如果您不需要自定義 NGINX 安裝,這個方法是最快的選擇,只需一個命令即可安裝!

要在 Mac 上使用 Homebrew 安裝 NGINX,請按照以下步驟進行。

1. 打開一個新的終端會話。

2. 執行下面的 brew 命令來安裝 NGINX。

brew install nginx

您能以 root 身份使用 Homebrew 安裝 NGINX 嗎? – 不行(官方不支持)。brew install 命令拒絕使用 sudo 前綴運行。如果您嘗試,將收到以下錯誤消息。

“Er” 或:以 root 身份运行 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. 首先,運行以下命令發送停止信號(-s stop)以確保NGINX未運行。 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

指向您的開發Web目錄

在Mac上默認情況下,NGINX的安裝從/usr/share/nginx/html(源安裝)或/usr/local/Cellar/nginx/<version>/html(Hombrew安裝)提供Web目錄。

但如果您的網站文件存放在其他位置,也許在另一個驅動器上怎麼辦?別擔心。按照下面的步驟將NGINX指向您的開發Web目錄。

1. 首先,運行以下命令停止NGINX並在文本編輯器中打開配置文件,就像在“自定義服務器監聽端口”部分中所做的一樣(步驟一到步驟三)。

# 停止NGINX
nginx -s stop
# 執行測試以找到配置文件
nginx -t
# 打開配置文件進行編輯
nano /usr/local/etc/nginx/nginx.conf

2. 在文本編輯器中,搜索說root html;的行在server {}塊內。

The default web directory location

3. 編輯 root 值並將其更改為您的自定義文件夾。 在此示例中,Web 目錄位於 /Volume/DevData/testweb。保存更改並退出編輯器。

此示例中的測試網站是一個名為Dimensions的靜態網站,從HTML5 Up下載。 此示例網站可免費下載和使用,但需遵循創作共用署名 3.0 許可協議

Changing the default web directory location

4. 現在,重新啟動 NGINX 伺服器。

nginx

5. 最後,使用您的 Web 瀏覽器瀏覽地址 HTTP://localhost:9000。NGINX 現在正從您的自定義 Web 目錄提供您的測試網站,如下面的截圖所示。

Testing if NGINX serves a custom web directory location

啟用 NGINX 自動啟動以供基於源碼的安裝

無論您選擇的安裝方法如何,NGINX 預設不會自動啟動。 在開發或測試中,NGINX 自動啟動可能不是必需的。 但如果需要,您可以配置 NGINX 在啟動時運行使用 launchd 進程。

你可以启用 NGINX 自启动,无论是基于源码还是基于 Homebrew 的安装方式。但在此演示中,我们从源码安装开始。

要在源码安装中启用 NGINX 自启动,请按照以下步骤进行。

1. 运行下面的 touch 命令创建一个用于 NGINX 的新 属性列表(PLIST) 文件。

/Library/LaunchDaemons 位置存储全局守护程序,代表 root 用户或指定用户运行。文件名可以随意取,但最好包含创建的守护程序的名称。

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-Based 安裝啟用 NGINX 自啟動

與基於源碼的安裝不同,對於基於 Homebrew 的 NGINX 安裝,您只需運行一個命令即可啟用或禁用 NGINX 的自啟動行為。是不是很方便呢?

運行下面的命令以啟用 NGINX 的自啟動。start 命令會立即啟動 NGINX 並註冊它以在啟動時啟動。

sudo brew services start nginx

運行該命令後,您將獲得與下面圖片類似的輸出。

Starting the NGNIX service

要禁用 NGINX 的自啟動狀態,運行下面的命令。如您所見,更改命令的唯一部分是從 start 更改為 stop。此命令還會優雅地立即退出 NGINX 伺服器。

sudo brew services stop nginx

結論

就是這樣!在 Mac 上設置 NGINX 是一種確保在短時間內進行測試的可靠方式。根據您的設置要求,您可以選擇不同的安裝選項,並且通過純文本配置文件快速自定義其設置,無需使用特殊工具。

NGINX 不僅限於測試和運行單個網站。您可以同時運行多個開發域和網站,而不會相互干擾。或者,如果您感到冒險,您也可以在 Mac 上運行 NGINX in Docker

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