环境(linux虚拟机)

  • 准备工作

    • virtualboxvagrant版本不兼容会出现很多未知问题(坑),官方网站也没有介绍哪个版本对应兼容,我这里分享一个兼容性不错的版本
    • virtualbox5.2.8
    • vagrant2.1.1
    • ubuntu/xenial64下载地址
    • boxes 下载地址
    • 具体安装细节请参考Ubuntu安装docker准备篇
    • vagrant 操作虚拟机常用命令

       1. 显示当前版本
       # vagrant --version  
       2. 列出所有Box
       # vagrant box list
       3. 添加一个Box
       # vagrant box add [options] <name, url, or path>
       3.1 可以从https://app.vagrantup.com/boxes/search下载各种Vagrant映像文件       
       # vagrant box add ubuntu/trusty64
       3.2 通过指定的URL添加远程box
       # vagrant box add https://atlas.hashicorp.com/ubuntu/boxes/trusty64
       3.3 添加一个本地box      
       # vagrant box add {box_name} {file_path}  
       4. 初始化一个新VM
       # vagrant init ubuntu/trustry64
       5. 启动一个VM
       # vagrant up
       6. 启用SSH登陆VM
       # vagrant ssh
       7. 查看VM当前的状态
       # vagrant status
       8. 关闭VM
       # vagrant halt
       9. 从box列表移除
       # vagrant box remove [name]
       10. 重启虚拟机
       # vagrant reload
       11. 挂起虚拟机
       # vagrant suspend   
       12. 唤醒虚拟机
       # vagrant resum
  • 假设你已经安装好虚拟机(以ubuntu为例)
  • 安装docker

  • 假设你已经安装好docker
  • 我们使用docker安装kong

    • kong官网
    • Kong采用插件机制进行功能定制,插件集(可以是0或N个)在API请求响应循环的生命周期中被执行。插件使用Lua编写,目前已有几个基础功能:HTTP基本认证、密钥认证、CORS(Cross-Origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、API请求限流、请求转发以及Nginx监控。
    • kong插件地址
    • kong文档地址

      kong安装

    • kong 安装详细

      # 创建kong-net网络
      docker network create kong-net
      # 安装postgres
      docker run -d --name kong-database \
                  -p 5432:5432 \
                  -e "POSTGRES_USER=kong" \
                  -e "POSTGRES_DB=kong" \
                  -e "POSTGRES_PASSWORD=kong" \
                  postgres:9.6
      #运行临时Kong容器迁移数据库
      docker run --rm \
      --link kong-database:kong-database \
      -e "KONG_DATABASE=postgres" \
      -e "KONG_PG_HOST=kong-database" \
      -e "KONG_PG_USER=kong" \
      -e "KONG_PG_PASSWORD=kong" \
      -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
      kong/kong-gateway kong migrations bootstrap
      # 启动Kong容器
      docker run -d --name kong \
      --link kong-database:kong-database \
      -e "KONG_DATABASE=postgres" \
      -e "KONG_PG_HOST=kong-database" \
      -e "KONG_PG_PASSWORD=kong" \
      -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
      -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
      -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
      -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
      -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
      -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \
      -p 8000:8000 \
      -p 8443:8443 \
      -p 8001:8001 \
      -p 8444:8444 \
      kong/kong-gateway

      注意

  • 我们是用本地访问虚拟机中docker容器,所以需要注意端口对应
docker虚拟机本地
port800080008000
port800180018001
port844384438443
port844484448444
  • 修改Vagrantfile文件并重启虚拟机
  • Kong(8000端口) 是请求进入端口,用户发送请求先到 Kong 项目的 8000 端口,kong根据配置的规则转发到真实的后台服务地址。
  • Kong(8001端口) 是管理端口,插件设置、API的增删改查、以及负载均衡等一系列的配置都是通过8001端口进行管理。

    # 本地端口host对应虚拟机端口guest
      config.vm.network "forwarded_port", guest: 8000, host: 8000
      config.vm.network "forwarded_port", guest: 8001, host: 8001
      config.vm.network "forwarded_port", guest: 8444, host: 8444
      config.vm.network "forwarded_port", guest: 8443, host: 8443
      config.vm.network "forwarded_port", guest: 8080, host: 8080
    # 设置虚拟机静态Ip便于访问(注意IP端要和本地IP在一个网段)
      config.vm.network "private_network", ip: "192.168.56.2"
    # 设置虚拟机和本地的共享目录
      config.vm.synced_folder "D:/dev/study/php/vagrant/code", "/data/www/"    

    测试访问

  • 最后、浏览器访问IP:8000,如果出现{"message":"no API found with those values"} 说明安装成功。
Last modification:February 24, 2022
如果觉得我的文章对你有用,请随意赞赏