docs: upadate Chinese installation docs (#7002)

This commit is contained in:
homeward 2022-05-09 13:26:48 +08:00 committed by GitHub
parent 0d1280cde7
commit d74319c2cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 178 additions and 298 deletions

View File

@ -32,42 +32,6 @@ This guide walks you through how you can install and run Apache APISIX in your e
Refer to the [Getting Started](./getting-started.md) guide for a quick walk-through on running Apache APISIX.
## Installing etcd
APISIX uses [etcd](https://github.com/etcd-io/etcd) to save and synchronize configuration. Before installing APISIX, you need to install etcd on your machine.
It would be installed automatically if you choose the Docker or Helm install method while installing APISIX. If you choose a different method or you need to install it manually, follow the steps shown below:
<Tabs
groupId="os"
defaultValue="linux"
values={[
{label: 'Linux', value: 'linux'},
{label: 'macOS', value: 'mac'},
]}>
<TabItem value="linux">
```shell
ETCD_VERSION='3.4.18'
wget https://github.com/etcd-io/etcd/releases/download/v${ETCD_VERSION}/etcd-v${ETCD_VERSION}-linux-amd64.tar.gz
tar -xvf etcd-v${ETCD_VERSION}-linux-amd64.tar.gz && \
cd etcd-v${ETCD_VERSION}-linux-amd64 && \
sudo cp -a etcd etcdctl /usr/bin/
nohup etcd >/tmp/etcd.log 2>&1 &
```
</TabItem>
<TabItem value="mac">
```shell
brew install etcd
brew services start etcd
```
</TabItem>
</Tabs>
## Installing APISIX
APISIX can be installed by the different methods listed below:
@ -133,7 +97,7 @@ You can find other Helm charts on the [apisix-helm-chart](https://github.com/apa
<TabItem value="rpm">
This installation method is suitable for CentOS 7 and Centos 8.
This installation method is suitable for CentOS 7 and Centos 8. If you choose this method to install APISIX, you need to install etcd first. For the specific installation method, please refer to [Installing etcd](#installing-etcd).
### Installation via RPM repository
@ -205,6 +169,42 @@ Run `apisix help` to get a list of all available operations.
</TabItem>
</Tabs>
## Installing etcd
APISIX uses [etcd](https://github.com/etcd-io/etcd) to save and synchronize configuration. Before installing APISIX, you need to install etcd on your machine.
It would be installed automatically if you choose the Docker or Helm install method while installing APISIX. If you choose a different method or you need to install it manually, follow the steps shown below:
<Tabs
groupId="os"
defaultValue="linux"
values={[
{label: 'Linux', value: 'linux'},
{label: 'macOS', value: 'mac'},
]}>
<TabItem value="linux">
```shell
ETCD_VERSION='3.4.18'
wget https://github.com/etcd-io/etcd/releases/download/v${ETCD_VERSION}/etcd-v${ETCD_VERSION}-linux-amd64.tar.gz
tar -xvf etcd-v${ETCD_VERSION}-linux-amd64.tar.gz && \
cd etcd-v${ETCD_VERSION}-linux-amd64 && \
sudo cp -a etcd etcdctl /usr/bin/
nohup etcd >/tmp/etcd.log 2>&1 &
```
</TabItem>
<TabItem value="mac">
```shell
brew install etcd
brew services start etcd
```
</TabItem>
</Tabs>
## Next steps
### Updating Admin API key

View File

@ -1,5 +1,10 @@
---
title: 如何构建 Apache APISIX
title: APISIX 安装指南
keywords:
- APISIX
- APISIX 安装教程
- 部署 APISIX
description: 本文档主要介绍了 APISIX 多种安装方法。
---
<!--
@ -21,45 +26,115 @@ title: 如何构建 Apache APISIX
#
-->
## 步骤 1 安装 Apache APISIX
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
你可以通过 RPM 仓库、Docker、Helm Chart、源码包、源码包LTS 版本)等多种方式来安装 Apache APISIX。请在以下选项中选择其中一种执行
本文将介绍如何在你的环境中安装并运行 APISIX
### 通过 RPM 仓库安装CentOS
关于如何快速运行 Apache APISIX请参考[入门指南](./getting-started.md)。
> 这种安装方式适用于 CentOS 7 和 CentOS 8 操作系统。
## 安装 APISIX
如果尚未安装 OpenResty 的官方 RPM 仓库,请使用以下命令自动安装 OpenResty 和 Apache APISIX 的 RPM 仓库。
你可以选择以下任意一种方式安装 APISIX
<Tabs
groupId="install-method"
defaultValue="docker"
values={[
{label: 'Docker', value: 'docker'},
{label: 'Helm', value: 'helm'},
{label: 'RPM', value: 'rpm'},
]}>
<TabItem value="docker">
使用此方法安装 APISIX你需要安装 [Docker](https://www.docker.com/) 和 [Docker Compose](https://docs.docker.com/compose/).
首先下载 [apisix-docker](https://github.com/apache/apisix-docker) 仓库。
```shell
git clone https://github.com/apache/apisix-docker.git
cd apisix-docker/example
```
然后,使用 `docker-compose` 启用 APISIX。
<Tabs
groupId="cpu-arch"
defaultValue="x86"
values={[
{label: 'x86', value: 'x86'},
{label: 'ARM/M1', value: 'arm'},
]}>
<TabItem value="x86">
```shell
docker-compose -p docker-apisix up -d
```
</TabItem>
<TabItem value="arm">
```shell
docker-compose -p docker-apisix -f docker-compose-arm64.yml up -d
```
</TabItem>
</Tabs>
</TabItem>
<TabItem value="helm">
通过 Helm 安装 APISIX请执行以下命令
```shell
helm repo add apisix https://charts.apiseven.com
helm repo update
helm install apisix apisix/apisix --create-namespace --namespace apisix
```
你可以从 [apisix-helm-chart](https://github.com/apache/apisix-helm-chart) 仓库找到其他组件。
</TabItem>
<TabItem value="rpm">
该安装方法适用于 CentOS 7 和 CentOS 8。如果你选择该方法安装 APISIX需要先安装 etcd。具体安装方法请参考[安装 etcd](#安装-etcd)。
### 通过 RPM 仓库安装
如果当前系统**没有安装 OpenResty**,请使用以下命令来安装 OpenResty 和 APISIX 仓库:
```shell
sudo yum install -y https://repos.apiseven.com/packages/centos/apache-apisix-repo-1.0-1.noarch.rpm
```
如果已安装 OpenResty 的官方 RPM 仓库,请使用以下命令自动安装 Apache APISIX 的 RPM 仓库。
如果已安装 OpenResty 的官方 RPM 仓库,请使用以下命令安装 APISIX 的 RPM 仓库:
```shell
sudo yum-config-manager --add-repo https://repos.apiseven.com/packages/centos/apache-apisix.repo
```
请运行以下命令安装 Apache APISIX。
完成上述操作后使用以下命令安装 APISIX
```shell
# 查看仓库中最新的 apisix 软件包的信息
sudo yum info -y apisix
# 显示仓库中现有的 apisix 软件包
sudo yum --showduplicates list apisix
# 安装最新的 apisix 软件包
sudo yum install apisix
# 安装指定版本(本例中为 2.10.3 版本)的 apisix 软件包
sudo yum install apisix-2.10.3-0.el7
```
### 通过 RPM 包离线安装CentOS
:::tip
下载 APISIX 离线 RPM 包到 `./apisix` 文件夹
你也可以安装指定版本的 APISIX本示例为 APISIX v2.13.1 LTS 版本):
```shell
sudo yum install apisix-2.13.1
```
:::
### 通过 RPM 包离线安装:
将 APISIX 离线 RPM 包下载到 `apisix` 文件夹:
```shell
sudo mkdir -p apisix
@ -68,99 +143,49 @@ sudo yum clean all && yum makecache
sudo yum install -y --downloadonly --downloaddir=./apisix apisix
```
拷贝 `./apisix` 文件夹到目标主机,使用以下命令安装 Apache APISIX。
然后将 `apisix` 文件夹复制到目标主机并运行以下命令:
```shell
sudo yum install ./apisix/*.rpm
```
### 通过 Docker 安装
### 管理 APISIX 服务
详情请参考:[使用 Docker 安装 Apache APISIX](https://hub.docker.com/r/apache/apisix)。
### 通过 Helm Chart 安装
详情请参考:[使用 Helm Chart 安装 Apache APISIX](https://github.com/apache/apisix-helm-chart)。
### 通过源码包安装
注意:如果你想针对特定平台打包 Apache APISIX请更新 [apisix-build-tools](https://github.com/api7/apisix-build-tools)
以下步骤仅用于设置 Apache APISIX 的开发环境。
1. 安装依赖
```shell
curl https://raw.githubusercontent.com/apache/apisix/master/utils/install-dependencies.sh -sL | bash -
```
2. 创建一个名为 `apisix-2.13.0` 的目录。
```shell
APISIX_VERSION='2.13.0'
mkdir apisix-${APISIX_VERSION}
```
3. 下载 Apache APISIX Release 源码包:
```shell
wget https://downloads.apache.org/apisix/${APISIX_VERSION}/apache-apisix-${APISIX_VERSION}-src.tgz
```
您也可以通过 Apache APISIX 官网下载 Apache APISIX Release 源码包。 Apache APISIX 官网也提供了 Apache APISIX、APISIX Dashboard 和 APISIX Ingress Controller 的源码包,详情请参考 [Apache APISIX 官网 - 下载页](https://apisix.apache.org/zh/downloads)。
4. 解压 Apache APISIX Release 源码包:
```shell
tar zxvf apache-apisix-${APISIX_VERSION}-src.tgz -C apisix-${APISIX_VERSION}
```
5. 安装运行时依赖的 Lua 库:
```shell
# 切换到 apisix-${APISIX_VERSION} 目录
cd apisix-${APISIX_VERSION}
# 安装依赖
LUAROCKS_SERVER=https://luarocks.cn make deps
```
**注意**:使用 `make deps` 安装 `lualdap`、`PCRE`、`openssl` 等依赖包失败,错误信息如: `Could not find header file for LDAP/PCRE/openssl`,可使用本方法解决。
解决思路:`luarocks` 支持自定义编译时依赖目录(来自此[链接](https://github.com/luarocks/luarocks/wiki/Config-file-format)),使用第三方工具安装缺失的依赖,并将其文件路径添加到 `luarocks` 的变量表中。这是一种通用的解决方法,适用于在各种常见操作系统(包括但不仅限于 Ubuntu、Centos、macOS遇到的“缺失头文件式安装依赖包失败”问题。
这边暂给出 macOS 上的具体解决步骤,其他操作系统的解决方案类似:
1. 使用 `brew install openldap` 命令将 `openldap` 安装到本地;
2. 使用 `brew --prefix openldap` 命令找到本地安装目录;
3. 将路径添加到项目配置文件中(选择两种方法中的一种即可):
1. 方法一:通过 `luarocks config` 手动设置 `LDAP_DIR` 变量,比如 `luarocks config variables.LDAP_DIR /opt/homebrew/cellar/openldap/2.6.1`
2. 方法二:当然你也可以选择直接更改 luarocks 的默认配置文件,执行 `cat ~/.luarocks/config-5.1.lua` 命令,然后在文件中添加 `openldap` 的安装目录;
3. 参考配置文件示例如下:
variables = {
LDAP_DIR = "/opt/homebrew/cellar/openldap/2.6.1",
LDAP_INCDIR = "/opt/homebrew/cellar/openldap/2.6.1/include",
}
`/opt/homebrew/cellar/openldap/``brew` 在 macOS(Apple Silicon) 上安装 `openldap` 的默认位置。
`/usr/local/opt/openldap/``brew` 在 macOS(Intel) 上安装 `openldap` 的默认位置。
6. 如果您不再需要 Apache APISIX 运行时,您可以执行卸载,如:
APISIX 安装完成后,你可以运行以下命令初始化 NGINX 配置文件和 etcd
```shell
# 卸载依赖
make undeps
apisix init
```
请注意,该操作将完整**删除**相关文件。
使用以下命令启动 APISIX
#### 通过源码包安装 LTS 版本
```shell
apisix start
```
目前 Apache APISIX 的 LTS 版本为 `2.13.0`,将“[通过源码包安装](#通过源码包安装)”中的 `APISIX_VERSION` 设置成该版本号,其他步骤按顺序进行即可。
:::tip
## 步骤 2 安装 etcd
你可以运行 `apisix help` 命令,通过查看返回结果,获取其他操作的命令及描述。
如果你只通过 RPM、Docker 或源代码安装了 Apache APISIX而没有安装 etcd则需要这一步。
:::
你可以通过 Docker 或者二进制等方式安装 etcd。以下命令通过二进制方式在 Linux 上安装 etcd。
</TabItem>
</Tabs>
## 安装 etcd
APISIX 使用 [etcd](https://github.com/etcd-io/etcd) 作为配置中心进行保存和同步配置。在安装 APISIX 之前,需要在你的主机上安装 etcd。
如果你在安装 APISIX 时选择了 Docker 或 Helm 安装,那么 etcd 将会自动安装;如果你选择其他方法或者需要手动安装 APISIX请参考以下步骤安装 etcd
<Tabs
groupId="os"
defaultValue="linux"
values={[
{label: 'Linux', value: 'linux'},
{label: 'macOS', value: 'mac'},
]}>
<TabItem value="linux">
```shell
ETCD_VERSION='3.4.18'
@ -171,195 +196,50 @@ tar -xvf etcd-v${ETCD_VERSION}-linux-amd64.tar.gz && \
nohup etcd >/tmp/etcd.log 2>&1 &
```
以下命令在 Mac 上安装 etcd:
</TabItem>
<TabItem value="mac">
```shell
brew install etcd
# start etcd server
brew services start etcd
```
## 步骤 3 管理 Apache APISIX 服务
</TabItem>
</Tabs>
我们可以在 Apache APISIX 的目录下使用命令初始化依赖、启动服务和停止服务,也可以通过 `apisix help` 命令查看所有命令和对应的功能。
## 后续操作
### 初始化依赖
### 更新 Admin API key
运行以下命令初始化 NGINX 配置文件和 etcd
建议修改 Admin API 的 key保护 APISIX 的安全
```shell
# initialize NGINX config file and etcd
apisix init
```
请参考如下信息更新配置文件:
### 测试配置文件
运行以下命令测试配置文件。 APISIX 将根据 `config.yaml` 生成 `nginx.conf`,并检查 `nginx.conf` 的语法是否正确。
```shell
# generate `nginx.conf` from `config.yaml` and test it
apisix test
```
### 启动 Apache APISIX
运行以下命令启动 Apache APISIX。
```shell
# start Apache APISIX server
apisix start
```
### 停止运行 Apache APISIX
优雅停机 `apisix quit` 和强制停机 `apisix stop` 都可以停止运行 Apache APISIX。建议您优先选择优雅停机的方式停止 Apache APISIX因为这种停止方式能够保证 Apache APISIX 完成了已经接受到的请求之后再停止;而强制停机则是立即停止 Apache APISIX在这种情况下Apache APISIX 接收到但未完成的请求会随着强制停机一并停止。
执行优雅停机的命令如下所示:
```shell
# stop Apache APISIX server gracefully
apisix quit
```
执行强制停机的命令如下所示:
```shell
# stop Apache APISIX server immediately
apisix stop
```
### 查看其他操作
运行 `apisix help` 命令,查看返回结果,获取其他操作的命令和描述。
```shell
# more actions find by `help`
apisix help
```
## 步骤 4 运行测试案例
1. 安装 `perl` 的包管理器 `cpanminus`
详情请参考:[安装包管理器 `cpanmius`](https://metacpan.org/pod/App::cpanminus#INSTALLATION)。
2. 然后通过 `cpanm` 来安装 test-nginx 的依赖:
```shell
sudo cpanm --notest Test::Nginx IPC::Run > build.log 2>&1 || (cat build.log && exit 1)
```
3. 运行 `git clone` 命令,将最新的源码克隆到本地,请使用我们 fork 出来的版本:
```shell
git clone https://github.com/openresty/test-nginx.git
```
4. 有两种方法运行测试:
- 追加当前目录到 perl 模块目录: `export PERL5LIB=.:$PERL5LIB`,然后运行 `make test` 命令。
- 或指定 NGINX 二进制路径:`TEST_NGINX_BINARY=/usr/local/bin/openresty prove -Itest-nginx/lib -r t`。
<!--
#
# In addition to the basic Markdown syntax, we use remark-admonitions
# alongside MDX to add support for admonitions. Admonitions are wrapped
# by a set of 3 colons.
# Please refer to https://docusaurus.io/docs/next/markdown-features/admonitions
# for more detail.
#
-->
:::note 说明
部分测试需要依赖外部服务和修改系统配置。如果想要完整地构建测试环境,可以参考 `ci/linux_openresty_common_runner.sh`
:::
### 问题排查
**配置 NGINX 路径**
出现 `Error unknown directive "lua_package_path" in /API_ASPIX/apisix/t/servroot/conf/nginx.conf` 报错的解决方法如下:
确保将 OpenResty 设置为默认的 NGINX并按如下所示导出路径
* `export PATH=/usr/local/openresty/nginx/sbin:$PATH`
* Linux 默认安装路径:
* `export PATH=/usr/local/openresty/nginx/sbin:$PATH`
* MacOS 通过 homebrew 默认安装路径:
* `export PATH=/usr/local/opt/openresty/nginx/sbin:$PATH`
**运行单个测试用例**
使用以下命令运行指定的测试用例:
```shell
prove -Itest-nginx/lib -r t/plugin/openid-connect.t
```
关于测试用例的更多细节,参见 [测试框架](https://github.com/apache/apisix/blob/master/docs/en/latest/internal/testing-framework.md)
## 步骤 5 修改 Admin API key
您需要修改 Admin API 的 key以保护 Apache APISIX。
请修改 `conf/config.yaml` 中的 `apisix.admin_key` 并重启服务,如下所示:
```yaml
```yaml title="conf/config.yaml"
apisix:
# ... ...
admin_key
-
name: "admin"
key: abcdefghabcdefgh # 将原有的 key 修改为 abcdefghabcdefgh
key: newsupersecurekey # 请修改 key 的值
role: admin
```
当我们需要访问 Admin API 时,就可以使用上面记录的 key 了,如下所示
更新完成后,你可以使用新的 key 访问 Admin API
```shell
curl http://127.0.0.1:9080/apisix/admin/routes?api_key=abcdefghabcdefgh -i
curl http://127.0.0.1:9080/apisix/admin/routes?api_key=newsupersecurekey -i
```
返回结果中的状态码 200 说明访问成功,如下所示:
### 为 APISIX 添加 systemd 配置文件
```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`,如下所示:
```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 为 Apache APISIX 构建 OpenResty
有些功能需要引入额外的 NGINX 模块到 OpenResty 当中。
如果您需要这些功能,您可以构建 APISIX OpenResty。
您可以根据 [api7/apisix-build-tools](https://github.com/api7/apisix-build-tools) 里面的代码,配置自己的构建环境,并完成 APISIX OpenResty 的构建。
## 步骤 7 为 Apache APISIX 添加 systemd 配置文件
如果使用的操作系统为 CentOS且在步骤 2 中通过 RPM 包安装 Apache APISIX配置文件已经自动安装到位你可以直接运行以下命令
如果你是通过 RPM 包安装 APISIX配置文件已经自动安装你可以直接使用以下命令
```shell
systemctl start apisix
systemctl stop apisix
```
如果通过其他方法安装,可以参考 [配置文件模板](https://github.com/api7/apisix-build-tools/blob/master/usr/lib/systemd/system/apisix.service) 进行修改,并将其放置在 `/usr/lib/systemd/system/apisix.service` 路径下。
如果你是通过其他方法安装的 APISIX可以参考[配置文件模板](https://github.com/api7/apisix-build-tools/blob/master/usr/lib/systemd/system/apisix.service)进行修改,并将其添加在 `/usr/lib/systemd/system/apisix.service` 路径下。
如需了解后续 APISIX 的使用,请参考[入门指南](./getting-started.md)获取更多信息