跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

Linux怎么安装Apache APISIX Linux云原生网关部署详解

Apache APISIX 官方不提供 apt/rpm 包,因其强依赖定制版 OpenResty 和 etcd 配置中心,系统包版本过旧或缺失模块(如 lua-resty-core)会导致安装失败;etcd 必须提前启动并监听正确地址(如 http://127.0.0.1:2379),APISIX 启动时会健康检查,连不上则超时退出;Web 控制台(apisix-dashboard)为独立服务,需单独部署且与 APISIX 网络互通,配置 APISIX_BASE_URL 指向其 admin API 地址。 Apache APISIX 在 Linux 上能直接跑起来,但默认不带 Web 控制台,且依赖 OpenResty 和 etcd —— 这两点是安装失败最常见的根源。 为什么不能直接 apt install apisix APISIX 官方不提供系统级包(deb/rpm),它依赖定制版 OpenResty(含 LuaRocks、luajit 等),而 Ubuntu/Debian 自带的
openresty
包通常版本过旧或缺失模块。直接用系统包管理器装
apisix
会报错:
lua-resty-core not found
或
failed to load resty.etcd
。 必须用官方推荐方式:通过
apisix-build-tools
构建,或下载预编译二进制包 etcd 不是可选依赖——它是 APISIX 的配置中心和运行时数据源,必须提前部署并可达 控制台(
apisix-dashboard
)是独立服务,需单独拉起,端口默认
9000
,不与网关共用
9080
etcd 必须先启动且配置正确 APISIX 启动时会连接 etcd 做健康检查;若连不上,会卡在
waiting for etcd
并最终超时退出,日志里只显示
etcd endpoint http://127.0.0.1:2379 is not ready
,不提示具体原因。 etcd 必须监听
http://127.0.0.1:2379
(或你配置的地址),不能只绑
localhost
或 IPv6 地址 确认
etcd
已启用 v3 API:
ETCD_ENABLE_V2=false
是安全的,APISIX 只用 v3 如果用 systemd 管理 etcd,确保
systemctl status etcd
显示 active (running),且
curl -s http://127.0.0.1:2379/health | jq .
返回
{"health":"true"}
APISIX 配置文件
conf/config.yaml
中的
etcd.endpoints
必须写成数组形式:
["http://127.0.0.1:2379"]
,不能是字符串 启动后 9080 没响应?检查这三处 APISIX 默认监听
9080
(HTTP)和
9443
(HTTPS),但启动成功不等于路由就通——它默认不加载任何路由规则,是“空网关”状态。 Docker Desktop(linux) 当前 Docker 最新稳定版本之一,主要针对稳定性和兼容性进行了修复优化,适合生产环境与日常开发使用。该版本继续强化 AI 开发支持、容器日志管理以及 Docker Engine 的安全能力,对 Windows/macOS/Linux 平台兼容性进行了进一步优化。 下载 执行
curl http://127.0.0.1:9080/apisix/admin/routes -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'
,应返回空数组
[]
;如果报
401 Unauthorized
,说明 admin key 没配或被覆盖
conf/config.yaml
中的
admin_key
必须显式配置,否则默认禁用 admin API;生产环境务必改掉默认值
edd1c9f034335f136f87ad84b625c8f1
首次启动后,要手动加一条测试路由才能看到流量转发效果,例如用 admin API 注册一个 echo 路由:
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: your-key' -X PUT -d '{"uri":"/hello","upstream":{"type":"roundrobin","nodes":{"127.0.0.1:8080":1}}}'
dashboard 单独部署且端口不互通
apisix-dashboard
是 Node.js 应用,和 APISIX 进程完全分离;它通过 HTTP 调用 APISIX 的 admin API 获取数据,因此两者网络必须连通,且 dashboard 配置里的
APISIX_BASE_URL
必须指向 APISIX admin 地址(默认
http://127.0.0.1:9080/apisix/admin
)。 不要把 dashboard 和 APISIX 装在不同机器上再用 localhost 互访——这是新手最常犯的错 dashboard 的
.env
文件中
APISIX_BASE_URL
若写成
http://localhost:9080/...
,在容器或远程访问时会请求 dashboard 所在机器的 9080 端口,而非 APISIX 所在机器 dashboard 默认前端端口
9000
,但它的后端代理(proxy)默认也走
localhost:9080
;若 APISIX 在另一台机器,必须改
proxy.conf.json
并重启 dashboard dashboard 登录账号密码在首次启动时生成,查看日志里类似
username: admin, password: 24a5e...
的行,不是固定 admin/admin 真正麻烦的从来不是装上,而是 etcd 连通性、admin key 权限、以及 dashboard 和 APISIX 之间的网络视角是否一致——这三个点对齐了,后续加插件、配 TLS、接 Prometheus 就只是配置项堆叠。

相关文章