如何在 Mac 上设置 NGINX 进行测试

您需要测试您正在开发的网站,但只有您的 Mac 可以使用吗? 您不需要构建单独的服务器或虚拟机来测试您的网站。 一个快速的选择是在 Mac 上安装 NGINX,然后您就可以在您的计算机上运行一个 Web 服务器了。

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

先决条件

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

在Mac上安装NGINX

有两种方法可以在Mac上安装NGINX – 通过编译源代码或使用软件包管理器。但其中一种安装方法并不比另一种更好。你选择的方法将取决于你的需求。

在接下来的几节中,你将学习如何执行两种NGINX安装方法。

方法1:编译并从源代码安装

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

自定义性需要更多步骤,并包括手动安装依赖项。按照以下步骤在Mac上从源代码安装NGINX。

1. 在您的Mac上打开终端。

2. 运行以下命令在您的主文件夹下创建一个工作目录。此目录将包含您安装NGINX所需的所有源文件。


```bash
# 在您的主目录下创建一个源文件夹

mkdir ~/src && cd ~/src

“`
3. 接下来,运行以下命令下载(使用curl)并提取(使用tar)最新的Perl Compatible Regular Expressions (PCRE)。NGINX的CoreRewrite模块需要PCRE。截至本文撰写时,最新的PCRE版本是8.45


```bash
# 下载并提取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


```bash
# 下载并提取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)和install 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. 接下来,执行以下命令将NGNIX路径添加到系统$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前缀。

方法2:使用Homebrew安装NGINX

使用Homebrew安装NGINX更加方便,而且错误少。该方法会自动安装依赖项。如果您不需要自定义NGINX安装,则此方法是最快的选择,只需一个命令即可安装!

要在Mac上使用Homebrew安装NGINX,请按照以下步骤进行。

1. 打开一个新的终端会话。

2. 运行下面的brew命令来安装NGINX。

brew install nginx

您能以Homebrew的root身份安装NGINX吗?- 不行(官方不支持)。brew安装命令拒绝以sudo前缀运行。如果您尝试,将会收到下面的错误消息。

“错误”或:以 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 “daemon 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)以确保NGNIX未运行。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

7. 最后,打开一个新的浏览器窗口并导航到 HTTP://localhost:9000。如下所示,NGINX 现在应在端口 9000 上提供网站服务。

NGINX running on port 9000

指向您的开发网站目录

默认情况下,Mac 上 NGINX 的安装将网站目录从 /usr/share/nginx/html(源安装)或 /usr/local/Cellar/nginx/<version>/html(Homebrew 安装)提供。

但是,如果您的网站文件在其他位置,例如在另一个驱动器上怎么办?不用担心。按照以下步骤将 NGINX 指向您的开发网站目录。

1. 首先,运行以下命令停止 NGINX 并在文本编辑器中打开配置文件,就像在“自定义服务器监听端口”部分(步骤一至步骤三)中所做的那样。

# 停止 NGINX
nginx -s stop
# 运行测试以查找配置文件
nginx -t
# 打开配置文件以进行编辑
nano /usr/local/etc/nginx/nginx.conf

2. 在文本编辑器中,搜索 server {} 块内的 root html; 行。

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. 最后,使用您的网络浏览器浏览地址HTTP://localhost:9000。NGINX现在正在从您的自定义Web目录中提供您的测试网站,就像下面的屏幕截图一样。

Testing if NGINX serves a custom web directory location

为基于源代码的安装启用NGINX自动启动

无论您选择的安装方法如何,NGINX默认情况下都不会自动启动。在开发或测试中,NGINX自动启动可能不是必需的。但如果需要,您可以使用launchd进程配置NGINX在启动时运行。

系统: 你可以启用 NGINX 自启动,无论是基于源码安装还是基于 Homebrew 安装。但在这个演示中,我们从源码安装开始。

要使源码安装的 NGINX 自启动,请按照以下步骤操作。

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

/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的安装的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是一个确保在短时间内运行Web服务器进行测试的方法。您可以根据设置要求选择安装选项,并通过纯文本配置文件快速自定义其设置 – 不需要特殊工具。

NGINX不限制测试和运行仅限于单个网站。您可以同时运行多个开发域和网站而互不干扰。或者,如果您感到有冒险精神,也可以在Mac中运行NGINX在Docker中

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