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