1. 环境准备与依赖包管理在开始部署前我们需要确保CentOS 7服务器满足APISIX运行的基本条件。离线环境意味着所有依赖包必须提前下载并传输到目标服务器。以下是关键步骤系统资源检查执行ulimit -n确认文件描述符限制建议调整为65536echo ulimit -SHn 65536 /etc/profile source /etc/profile离线包目录规划创建统一的软件包存放目录如/root/apisix-soft/按功能分类存放核心组件etcd-v3.5.8-linux-amd64.tar.gzAPISIX安装包apisix-3.9.1-0.el7.x86_64.rpmDashboard安装包apisix-dashboard-3.9.1-0.el7.x86_64.rpm依赖库openldap-2.4.44-22.el7.x86_64.rpm、cyrus-sasl-2.1.26-23.el7.x86_64.rpm传输策略优化对于大文件如etcd包建议使用split命令分卷压缩传输后再合并# 发送端拆分 split -b 100M etcd-v3.5.8-linux-amd64.tar.gz etcd-part- # 接收端合并 cat etcd-part-* etcd-merged.tar.gz2. etcd 3.5.8部署与配置作为APISIX的配置中心etcd的稳定性直接影响网关服务。以下是生产级配置要点2.1 二进制安装tar -xvf etcd-v3.5.8-linux-amd64.tar.gz mv etcd-v3.5.8-linux-amd64 /app/etcd cp -a /app/etcd/etcd /app/etcd/etcdctl /usr/bin/2.2 配置文件详解创建/etc/etcd/etcd.conf关键参数说明ETCD_NAMEetcd-node1 # 集群中需唯一 ETCD_DATA_DIR/var/lib/etcd # 建议使用独立磁盘分区 ETCD_LISTEN_CLIENT_URLShttp://0.0.0.0:2379 ETCD_ADVERTISE_CLIENT_URLShttp://当前节点IP:2379 ETCD_INITIAL_CLUSTER_TOKENetcd-cluster-prod # 生产环境建议修改2.3 systemd服务配置创建/usr/lib/systemd/system/etcd.service[Unit] Descriptionetcd distributed key-value store Afternetwork.target [Service] EnvironmentFile/etc/etcd/etcd.conf ExecStart/usr/bin/etcd Restarton-failure LimitNOFILE65536 [Install] WantedBymulti-user.target启动并验证systemctl daemon-reload systemctl start etcd etcdctl endpoint health # 应返回healthy3. APISIX 3.9.1离线安装3.1 RPM包强制安装rpm -Uvh /root/apisix-soft/*.rpm --nodeps --force3.2 关键配置修改编辑/usr/local/apisix/conf/config.yamlapisix: node_listen: - 8000 - 8443 ssl # 生产环境建议启用HTTPS deployment: role: traditional role_traditional: config_provider: etcd etcd: host: - http://etcd节点IP:2379 prefix: /apisix-prod # 与etcd配置一致 plugin_attr: prometheus: export_addr: ip: 0.0.0.0 port: 90913.3 服务管理apisix init # 初始化配置 apisix start # 测试启动 systemctl enable --now apisix # 生产环境推荐4. Dashboard部署与集成4.1 RPM安装yum install -y /root/apisix-soft/apisix-dashboard-3.9.1-0.el7.x86_64.rpm4.2 配置文件调整修改/usr/local/apisix/dashboard/conf/conf.yamlconf: listen: host: 0.0.0.0 port: 9000 allow_list: - 0.0.0.0/0 # 按需限制IP范围 etcd: endpoints: - http://etcd节点IP:2379 prefix: /apisix-prod # 与APISIX配置一致 authentication: secret: 随机生成32位字符串 # 使用openssl rand -hex 16生成 users: - username: admin password: $2a$10$NlLMjvCODdA8... # 使用bcrypt加密后的密码4.3 服务启动方案方案一nohup后台运行nohup manager-api -p /usr/local/apisix/dashboard/ /var/log/manager-api.log 21 方案二systemd服务推荐创建/usr/lib/systemd/system/apisix-dashboard.service[Unit] DescriptionAPISIX Dashboard Afternetwork.target [Service] ExecStart/usr/local/apisix/dashboard/manager-api -p /usr/local/apisix/dashboard/ Restartalways [Install] WantedBymulti-user.target5. 典型问题排查指南5.1 PID冲突问题现象启动时报nginx: [emerg] bind() to 0.0.0.0:8000 failed# 解决方案 ps -ef | grep nginx | grep -v grep | awk {print $2} | xargs kill -9 rm -f /usr/local/apisix/logs/nginx.pid5.2 Dashboard网络错误排查步骤确认etcd集群健康状态etcdctl endpoint status --write-outtable清空浏览器缓存或使用隐私模式访问检查Dashboard日志tail -f /usr/local/apisix/dashboard/logs/error.log5.3 证书配置可选如需启用HTTPS在config.yaml添加apisix: ssl: listen: 8443 cert: /path/to/cert.pem key: /path/to/key.pem6. 生产环境优化建议日志轮转配置logrotate定期切割日志cat /etc/logrotate.d/apisix EOF /usr/local/apisix/logs/*.log { daily rotate 30 compress missingok notifempty sharedscripts postrotate [ -f /usr/local/apisix/logs/nginx.pid ] kill -USR1 cat /usr/local/apisix/logs/nginx.pid endscript } EOF防火墙规则开放必要端口firewall-cmd --permanent --add-port{8000,8443,9000,2379}/tcp firewall-cmd --reload监控集成通过Prometheus插件暴露指标curl http://127.0.0.1:9091/apisix/prometheus/metrics