环境(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安装
- 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,如果出现 说明安装成功。