环境(linux虚拟机)
准备工作
virtualbox
和vagrant
版本不兼容会出现很多未知问题(坑),官方网站也没有介绍哪个版本对应兼容,我这里分享一个兼容性不错的版本- 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
- 具体安装细节以及权限问题解决请参考Ubuntu安装docker
- 假设你已经安装好docker
我们使用docker安装kong
- kong官网
- Kong采用插件机制进行功能定制,插件集(可以是0或N个)在API请求响应循环的生命周期中被执行。插件使用Lua编写,目前已有几个基础功能:HTTP基本认证、密钥认证、CORS(Cross-Origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、API请求限流、请求转发以及Nginx监控。
- 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 | 虚拟机 | 本地 | |
---|---|---|---|
port | 8000 | 8000 | 8000 |
port | 8001 | 8001 | 8001 |
port | 8443 | 8443 | 8443 |
port | 8444 | 8444 | 8444 |
- 修改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"}
说明安装成功。
Comment here is closed