Skip to content

Commit

Permalink
docs: update based on review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
yzeng25 committed Jul 12, 2021
1 parent eebbd6f commit 6be2875
Showing 1 changed file with 47 additions and 27 deletions.
74 changes: 47 additions & 27 deletions docs/zh/latest/how-to-build.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ title: 如何构建 Apache APISIX

## 步骤1:安装依赖

Apache APISIX 的运行环境需要依赖 Nginx 和 etcd,所以在安装 Apache APISIX 前,请根据您使用的操作系统安装对应的依赖。我们提供了 **CentOS7****Fedora 31 & 32****Ubuntu 16.04 & 18.04****Debian 9 & 10****MacOS X** 的依赖安装操作步骤,详情请参考[安装依赖](install-dependencies.md)
Apache APISIX 的运行环境需要依赖 Nginx 和 etcd,所以在安装 Apache APISIX 前,请根据您使用的操作系统安装对应的依赖。我们提供了 **CentOS7****Fedora 31 & 32****Ubuntu 16.04 & 18.04****Debian 9 & 10****MacOS** 的依赖安装操作步骤,详情请参考[安装依赖](install-dependencies.md)

通过 Docker 或 Helm Chart 安装 Apache APISIX 时,已经包含了所需的 Nginx 和 etcd,请参照各自对应的文档。

Expand All @@ -45,6 +45,8 @@ Apache APISIX 的运行环境需要依赖 Nginx 和 etcd,所以在安装 Apach
wget https://downloads.apache.org/apisix/2.7/apache-apisix-2.7-src.tgz
```

您也可以通过 Apache APISIX 官网下载 Apache Release 源码包。 Apache APISIX 官网也提供了 Apache APISIX、APISIX Dashboard 和 APISIX Ingress Controller 的源码包,详情请参考[Apache APISIX 官网-下载页](https://apisix.apache.org/zh/downloads)

3. 解压 Apache Release 源码包:

```shell
Expand Down Expand Up @@ -76,9 +78,9 @@ sudo yum install -y https://github.com/apache/apisix/releases/download/2.7/apisi

详情请参考:[使用 Helm Chart 安装 Apache APISIX](https://github.com/apache/apisix-helm-chart)

## 步骤3:管理 APISIX 服务
## 步骤3:管理 Apache APISIX 服务

我们可以在 APISIX 的目录下使用命令初始化依赖、启动服务和停止服务,也可以通过 `make help` 命令查看所有命令和对应的功能。
我们可以在 Apache APISIX 的目录下使用命令初始化依赖、启动服务和停止服务,也可以通过 `make help` 命令查看所有命令和对应的功能。

### 初始化依赖

Expand All @@ -89,30 +91,30 @@ sudo yum install -y https://github.com/apache/apisix/releases/download/2.7/apisi
make init
```

### 启动 APISIX
### 启动 Apache APISIX

运行以下命令启动 APISIX。
运行以下命令启动 Apache APISIX。

```shell
# start APISIX server
# start Apache APISIX server
make run
```

### 停止运行 APISIX
### 停止运行 Apache APISIX

优雅停机 `make quit` 和强制停机 `make stop`都可以停止运行 APISIX。建议您优先选择优雅停机的方式停止 APISIX,因为这种停止方式能够保证 APISIX 完成了已经接受到的请求之后再停止;而强制停机则是立即停止 APISIX,在这种情况下,APISIX 接收到但未完成的请求会随着强制停机一并停止。
优雅停机 `make quit` 和强制停机 `make stop`都可以停止运行 Apache APISIX。建议您优先选择优雅停机的方式停止 Apache APISIX,因为这种停止方式能够保证 Apache APISIX 完成了已经接受到的请求之后再停止;而强制停机则是立即停止 Apache APISIX,在这种情况下,Apache APISIX 接收到但未完成的请求会随着强制停机一并停止。

执行优雅停机的命令如下所示:

```shell
# stop APISIX server gracefully
# stop Apache APISIX server gracefully
make quit
```

执行强制停机的命令如下所示:

```shell
# stop APISIX server immediately
# stop Apache APISIX server immediately
make stop
```

Expand All @@ -135,17 +137,21 @@ make help
sudo cpanm --notest Test::Nginx IPC::Run > build.log 2>&1 || (cat build.log && exit 1)
```

3. 然后 clone 最新的源码,请使用我们 fork 出来的版本:
3. 运行 `git clone` 命令,将最新的源码克隆到本地,请使用我们 fork 出来的版本:

```shell
git clone https://github.com/iresty/test-nginx.git
```

4. 通过 `perl``prove` 命令来加载 test-nginx 的库,并运行 `/t` 目录下的测试案例集:
* 追加当前目录到perl模块目录: `export PERL5LIB=.:$PERL5LIB`
* 直接运行:`make test`
* 指定 Nginx 二进制路径:`TEST_NGINX_BINARY=/usr/local/bin/openresty prove -Itest-nginx/lib -r t`
* 部分测试需要依赖外部服务和修改系统配置。如果想要完整地构建测试环境,可以参考 `ci/linux_openresty_common_runner.sh`

- 追加当前目录到perl模块目录: `export PERL5LIB=.:$PERL5LIB`,然后运行 `make test` 命令。

- 或指定 Nginx 二进制路径:`TEST_NGINX_BINARY=/usr/local/bin/openresty prove -Itest-nginx/lib -r t`

:::note 说明
部分测试需要依赖外部服务和修改系统配置。如果想要完整地构建测试环境,可以参考 `ci/linux_openresty_common_runner.sh`
:::

### 问题排查

Expand All @@ -155,11 +161,11 @@ make help

确保将 Openresty 设置为默认的 Nginx,并按如下所示导出路径:

* export PATH=/usr/local/openresty/nginx/sbin:$PATH
* `export PATH=/usr/local/openresty/nginx/sbin:$PATH`
* Linux 默认安装路径:
* export PATH=/usr/local/openresty/nginx/sbin:$PATH
* MacOS X 通过 homebrew 默认安装路径:
* export PATH=/usr/local/opt/openresty/nginx/sbin:$PATH
* `export PATH=/usr/local/openresty/nginx/sbin:$PATH`
* MacOS 通过 homebrew 默认安装路径:
* `export PATH=/usr/local/opt/openresty/nginx/sbin:$PATH`

**运行单个测试用例**

Expand All @@ -169,9 +175,9 @@ make help
prove -Itest-nginx/lib -r t/plugin/openid-connect.t
```

## 步骤5:修改 Admin API token
## 步骤5:修改 Admin API key

您需要修改 Admin API 的 token,以保护 Apache APISIX。
您需要修改 Admin API 的 key,以保护 Apache APISIX。

请修改 `conf/config.yaml` 中的 `apisix.admin_key` 并重启服务,如下所示:

Expand All @@ -181,35 +187,49 @@ apisix:
admin_key
-
name: "admin"
key: abcdefghabcdefgh # 将原有的token修改为abcdefghabcdefgh
key: abcdefghabcdefgh # 将原有的 key 修改为abcdefghabcdefgh
role: admin
```
当我们需要访问 Admin API 时,就可以使用上面记录的 key 作为 token 了。
当我们需要访问 Admin API 时,就可以使用上面记录的 key 了,如下所示:
```shell
curl http://127.0.0.1:9080/apisix/admin/routes?api_key=abcdefghabcdefgh -i
```

返回结果中的状态码 200 说明访问成功,如下所示:

```shell
HTTP/1.1 200 OK
Date: Fri, 28 Feb 2020 07:48:04 GMT
Content-Type: text/plain
... ...
{"node":{...},"action":"get"}
```

在这个时候,如果您输入的 key 与 `conf/config.yaml``apisix.admin_key` 的值不匹配,例如,我们已知正确的 key 是 `abcdefghabcdefgh`,但是我们选择输入一个错误的 key,例如 `wrong-key`,如下所示:

curl http://127.0.0.1:9080/apisix/admin/routes?api_key=abcdefghabcdefgh-invalid -i
```shell
curl http://127.0.0.1:9080/apisix/admin/routes?api_key=wrong-key -i
```

返回结果中的状态码 `401` 说明访问失败,原因是输入的 `key` 有误,触发 `Unauthorized` 错误,如下所示:

```shell
HTTP/1.1 401 Unauthorized
Date: Fri, 28 Feb 2020 08:17:58 GMT
Content-Type: text/html
... ...
{"node":{...},"action":"get"}
```

## 步骤6:为 APISIX 构建 OpenResty
## 步骤6:为 Apache APISIX 构建 OpenResty

有些功能需要引入额外的 Nginx 模块到 OpenResty 当中。如果您需要这些功能,你可以用[这个脚本](https://raw.githubusercontent.com/api7/apisix-build-tools/master/build-apisix-openresty.sh)构建 OpenResty。

## 步骤7:为 APISIX 添加 systemd 配置文件
## 步骤7:为 Apache APISIX 添加 systemd 配置文件

如果您使用的操作系统是 CentOS 7,且在步骤 2 中通过 RPM 包安装 APISIX,配置文件已经自动安装到位,你可以直接运行以下命令:
如果您使用的操作系统是 CentOS 7,且在步骤 2 中通过 RPM 包安装 Apache APISIX,配置文件已经自动安装到位,你可以直接运行以下命令:

```shell
systemctl start apisix
Expand Down

0 comments on commit 6be2875

Please sign in to comment.