前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在腾讯云服务器通过源码安装方式部署Apache APISIX网关

在腾讯云服务器通过源码安装方式部署Apache APISIX网关

原创
作者头像
您这种情况持续多久了
发布2024-03-18 13:46:15
1870
发布2024-03-18 13:46:15

0x001 简介

本文介绍了在Ubuntu2022.04 LTS基础上通过源码安装部署APISIX 2.3.2 LTS网关的操作方案。APISIX是基于Openresty开发的一款高性能网关。深圳支流科技于2019年10捐赠给Apache基金会。2020年7月15日从Apache基金会毕业成为顶级项目。国内大厂都有使用到APISIX[1]。

0x002 前置条件和环境要求

笔者假定读者已掌握基础的Linux使用知识,并且拥有良好的网络。以下操作步骤均在以下环境操作并得到验证。

软件名

版本

备注

Ubuntu Server

22.04 LTS 64位

已使用apt-get 更新并重启过

APISIX

3.2.2 LTS

\

Docker

25.0.4

控制面板

Etcd

3.5.4

APISIX存储配置文件

0x003 安装部署Openresty

参考以下步骤安装Openresty。测试时本机未安装Nginx以及其他Web服务器软件。

1. 先安装以下工具软件,使用的镜像中已安装

代码语言:javascript
复制
sudo apt-get -y install --no-install-recommends wget gnupg ca-certificates lsb-release

2. 导入Openresty软件包的GPG公钥,此命令执行时需要确保当前所在目录下有对应权限写入。

代码语言:javascript
复制
wget -O - https://openresty.org/package/pubkey.gpg | sudo gpg --dearmor -o /usr/share/keyrings/openresty.gpg

3. 添加APT软件源,此命令不会有回显。没有任何报错即是成功

代码语言:javascript
复制
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/openresty.gpg] http://openresty.org/package/ubuntu $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/openresty.list > /dev/null

4. 更新apt软件源

代码语言:javascript
复制
sudo apt-get update

5. 安装软件,注意openresty-zlib-dev、openresty-pcre-dev、openresty-openssl111-dev等三个软件包是开发库。后续APISXI安装时需要依赖这三个库。

代码语言:javascript
复制
sudo apt-get -y install openresty openresty-zlib-dev openresty-pcre-dev openresty-openssl111-dev

此时访问您的云服务器公网IP:80端口看到此界面时代表openresty以及安装成功。

0x004 安装Etcd

1. 输入以下命令,锁定etcd版本

代码语言:javascript
复制
ETCD_VERSION='3.5.4'

2. 下载软件包,耐心等待下载完成。如果有失败可以删除下载文件后再重试。如确实无法下载的可本地下载再上传到服务器(https://github.com/etcd-io/etcd/releases/download/v3.5.4/etcd-v3.5.4-linux-amd64.tar.gz)。

代码语言:javascript
复制
wget https://github.com/etcd-io/etcd/releases/download/v${ETCD_VERSION}/etcd-v${ETCD_VERSION}-linux-amd64.tar.gz

3. 下载完成后解压并进入解压的目录

代码语言:javascript
复制
tar -xvf etcd-v${ETCD_VERSION}-linux-amd64.tar.gz && cd etcd-v${ETCD_VERSION}-linux-amd64

4. 运行以下命令启动etcd,注意这里的172.16.48.10是服务器的内网IP。需要根据自己的实际情况进行修改。配置此IP方便docker控制板访问,和其他服务器的apisix连接此etcd。

代码语言:javascript
复制
nohup ./etcd --listen-client-urls http://172.16.48.10:2379 --advertise-client-urls http://172.16.48.10:2379 >/tmp/etcd.log 2>&1 &

5. 查看/tmp/etcd.log是否启动成功

代码语言:javascript
复制
cat /tmp/etcd.log

没有报错即启动成功。

0x005 安装APISXI

1. 安装依赖,等待完成

代码语言:javascript
复制
sudo apt-get install -y curl make gcc g++ cpanminus libpcre3 libpcre3-dev libldap2-dev unzip openresty-zlib-dev openresty-pcre-dev openresty-openssl111-dev

没有报错即安装成功

2. 安装依赖的luarocks。无法下载到执行的话,轻下载到本地上传到服务器执行。

代码语言:javascript
复制
curl https://raw.githubusercontent.com/apache/apisix/master/utils/linux-install-luarocks.sh -sL | bash -

以下即执行完成

3. 下载APISIX源码

代码语言:javascript
复制
APISIX_VERSION='3.2.2'
mkdir apisix-${APISIX_VERSION}
git clone --depth 1 --branch ${APISIX_VERSION} https://github.com/apache/apisix.git apisix-${APISIX_VERSION}

以上即是完成,切换到apisix-3.2.2目录下

4. 构建安装,make help可看到支持的选项

代码语言:javascript
复制
make help

运行安装运行时依赖,如有超时可以再此运行此命令

代码语言:javascript
复制
make deps

以下即安装完毕

4. 修改配置文件中的etcd地址

代码语言:javascript
复制
vim conf/config-default.yaml

找到第626行

此处修改为0x004第4部的内网地址

运行以下命令初始etcd数据

代码语言:javascript
复制
make init

运行ulimit -n 66535 再运行以下命令即不在有告警。

代码语言:javascript
复制
make run

注意:

此时的APISIX运行在9080、9443端口上。测试以下地址即可确认是否正确启动。

0x006 安装Docker并拉取控制面板

以下是极速版安装docker

代码语言:javascript
复制
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL http://mirrors.tencentyun.com/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] http://mirrors.tencentyun.com/docker-ce/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin  

创建以下配置文为conf.yaml

代码语言:javascript
复制
conf:
  listen:
    host: 0.0.0.0
    port: 9000
  etcd:
    endpoints: 
      - 172.16.48.10:2379
authentication:
  secret:
    r9h052aasasasax
  expire_time: 3600
  users:
    - username: admin
      password: admin
plugins:
  - api-breaker
  - authz-casbin
  - authz-casdoor
  - authz-keycloak
  - aws-lambda
  - azure-functions
  - basic-auth
  # - batch-requests
  - clickhouse-logger
  - client-control
  - consumer-restriction
  - cors
  - csrf
  - datadog
  # - dubbo-proxy
  - echo
  - error-log-logger
  # - example-plugin
  - ext-plugin-post-req
  - ext-plugin-post-resp
  - ext-plugin-pre-req
  - fault-injection
  - file-logger
  - forward-auth
  - google-cloud-logging
  - grpc-transcode
  - grpc-web
  - gzip
  - hmac-auth
  - http-logger
  - ip-restriction
  - jwt-auth
  - kafka-logger
  - kafka-proxy
  - key-auth
  - ldap-auth
  - limit-conn
  - limit-count
  - limit-req
  - loggly
  # - log-rotate
  - mocking
  # - node-status
  - opa
  - openid-connect
  - opentelemetry
  - openwhisk
  - prometheus
  - proxy-cache
  - proxy-control
  - proxy-mirror
  - proxy-rewrite
  - public-api
  - real-ip
  - redirect
  - referer-restriction
  - request-id
  - request-validation
  - response-rewrite
  - rocketmq-logger
  - server-info
  - serverless-post-function
  - serverless-pre-function
  - skywalking
  - skywalking-logger
  - sls-logger
  - splunk-hec-logging
  - syslog
  - tcp-logger
  - traffic-split
  - ua-restriction
  - udp-logger
  - uri-blocker
  - wolf-rbac
  - zipkin
  - elasticsearch-logge
  - openfunction
  - tencent-cloud-cls
  - ai
  - cas-auth

运行docker命令创建容器

代码语言:javascript
复制
sudo docker pull apache/apisix-dashboard
sudo docker run -d --name dashboard \
           -p 9000:9000        \
           -v `pwd`/conf.yaml:/usr/local/apisix-dashboard/conf/conf.yaml \
           apache/apisix-dashboard

0x007 通过控制面板配置路由

访问9000端口,输入admin\admin登录。即上面配置的username和password

创建路由,配置将公网IP地址的访问转发本地80端口上

访问地址:9080即可再次看到运行在80的openresty的内容

0x008 总结

更多详细的配置请看参考资料部分,[5]为APISIX的详细配置文件,[6]为控制面板配置

0x009 参考资料

[1] https://github.com/apache/apisix?tab=readme-ov-file#who-uses-apisix-api-gateway

[2] https://openresty.org/en/linux-packages.html

[3] https://apisix.apache.org/docs/apisix/3.2/installation-guide/

[4] https://github.com/apache/apisix/blob/master/utils/linux-install-luarocks.sh

[5] https://github.com/apache/apisix/blob/master/conf/config-default.yaml

[6] https://github.com/apache/apisix-dashboard/blob/master/api/conf/conf.yaml

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x002 前置条件和环境要求
  • 0x003 安装部署Openresty
  • 0x004 安装Etcd
  • 0x005 安装APISXI
  • 0x006 安装Docker并拉取控制面板
  • 0x007 通过控制面板配置路由
  • 0x008 总结
  • 0x009 参考资料
相关产品与服务
API 网关
腾讯云 API 网关(API Gateway)是腾讯云推出的一种 API 托管服务,能提供 API 的完整生命周期管理,包括创建、维护、发布、运行、下线等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档