Docker搭建Orange Api网关
Orange介绍orange 是一个基于 openresty 的API Gateway,提供API及自定义规则的监控和管理,如访问统计、流量切分、API重定向、API鉴权、WEB防火墙等功能。Orange可用来替代前置机中广泛使用的Nginx/OpenResty, 在应用服务上无痛前置一个功能丰富的网关系统。
相关文档Orange官方安装文档使用文档
Docker安装OrangeOrange Github
Docker安装Orange安装Mysql1docker run --name orange-database -e MYSQL_ROOT_PASSWORD=your_root_pwd -p 3306:3306 mysql:5.7
进入Mysql容器
1docker exec -it orange-database /bin/bash
创建Orange DB
123CREATE DATABASE orange;CREATE USER 'orange'@'%' IDENTIFIED BY 'orange';GRA ...
centos7安装docker
错误本机CentOS7,安装docker之后出现了“Segmentation Fault or Critical Error encountered. Dumping core and abort”这个错误。
原因安装时使用的 yum install docker,但实际上CentOS7上需要安装docker-io
解决卸载后重装docker-io查询已安装服务
1yum list installed |grep docker
卸载
1yum -y remove docker
安装docker-io
1yum install -y docker-io
启动
1service docker start
查看版本
1docker --version
测试
1docker run hello-world
docker push私有仓库错误
docker push 错误上传镜像报错:server gave HTTP response to HTTPS client
想使用 127.0.0.1:5000 作为仓库地址,比如想让本网段的其他主机也能把镜像推送到私有仓库。你就得把例如 192.168.199.100:5000 这样的内网地址作为私有仓库地址,这时你会发现无法成功推送镜像。
这是因为 Docker 默认不允许非 HTTPS 方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制,或者查看下一节配置能够通过 HTTPS 访问的私有仓库。
Linux系统修改Ubuntu 16.04+, Debian 8+, centos 7等使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)
12345678{ "registry-mirror": [ "https://registry.docker-cn.com" ], "insecure-r ...
安装Redis集群
Redis集群Redis 集群由多个运行在集群模式(cluster mode)下的 Redis 实例组成, 实例的集群模式需要通过配置来开启, 开启集群模式的实例将可以使用集群特有的功能和命令。
开启集群一般需要修改如下配置
12345port 7000cluster-enabled yescluster-config-file nodes.confcluster-node-timeout 5000appendonly yes
cluster-enabled 选项用于开实例的集群模式。cluster-conf-file 选项则设定了保存节点配置文件的路径, 默认值为 nodes.conf 。无须人为修改, 它由 Redis 集群在启动时创建。
集群正常运作至少需要三个主节点, 不过在刚开始试用集群功能时, 强烈建议使用六个节点
安装RedisMac上安装使用brew
1brew install redis
安装后路径为/usr/local/opt/redis
123456789cd /usr/local/opt/redismkdir cluster-testcp /usr/local/ ...
PHP安装mongo扩展
PHP安装mongo扩展,Mac使用brew安装mongo失败,改用pctl安装
使用Laravel中,提示Class 'MongoDB\Driver\Manager' not found,显示需要安装扩展。查询Mac 上安装mongodb教程,都是按照下面命令安装:
1234brew tap homebrew/php#brew install phpxx-mongodbbrew install php72-mongodb
但都提示安装失败。
Brew安装已取消后查看官网文档,了解到这种方式已经取消。
Homebrew 1.5.0 deprecated the » Homebrew/php tap and removed formulae for PHP extensions.
Going forward, macOS users should install the driver with PECL.
Community forks of the » Homebrew/php tap may still contain formale for installing ...
PHP实现滑动验证码
参考源码https://github.com/binwind8/tncode
演示地址http://aso.39gs.com/tncode/index.html
参考上述源码,实现了通过接口访问,验证滑动验证码功能。
原理:后台生成滑动验证码,记录小图偏移量。然后前台用户滑动图片,通过js传递偏移量到后台,如果与后台记录偏移量相同或者在误差允许范围内,则代码验证通过。
偏移量可以记录X轴,也可以记录Y轴验证码X轴 = 浏览器在电脑屏上的X轴 + 验证码在浏览器中的X轴验证码Y轴 = 浏览器在电脑屏上的Y轴 + 验证码在浏览器中的Y轴
Demo本示例通过记录X轴变量实现。
Api接口一获取图片
123456/** * 获取图片校验码接口 */public function getVerificationImage(){ D('VerificationCode')->make();}
Api接口二123456789101112131415/** * 图片校验码校验接口 */ public function ...
PHP-Resque使用
PHP-Resque是现成的框架, 十分方便实现消息队列。
php-resque的设计三种角色在Resque中,一个后台任务被抽象为由三种角色共同完成:
Job | 任务 : 一个Job就是一个需要在后台完成的任务,比如本文举例的发送邮件,就可以抽象为一个Job。在Resque中一个Job就是一个Class。
Queue | 队列 : 也就是上文的消息队列,在Resque中,队列则是由Redis实现的。Resque还提供了一个简单的队列管理器,可以实现将Job插入/取出队列等功能。
Worker | 执行者 : 负责从队列中取出Job并执行,可以以守护进程的方式运行在后台。
那么基于这个划分,一个后台任务在Resque下的基本流程是这样的:在Resque中,有一个很重要的设计:一个Worker,可以处理一个队列,也可以处理很多个队列,并且可以通过增加Worker的进程/线程数来加快队列的执行速度。
流程如下:
将一个后台任务编写为一个独立的Class,这个Class就是一个Job。在需要使用后台程序的地方,系统将Job Class的名称以及所需参数放入队列。以命令行 ...
Docker下部署Kafka
介绍KafkaKafka是一种高吞吐量的分布式发布订阅消息系统。
Kafka系统的角色:
Broker :一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic
topic: 可以理解为一个MQ消息队列的名字
Partition:为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息 都会被分配一个有序的id(offset)。kafka只保证按一个partition中的顺序将消息发给consumer,不保证一个topic的整体 (多个partition间)的顺序。也就是说,一个topic在集群中可以有多个partition,那么分区的策略是什么?(消息发送到哪个分区上,有两种基本的策略,一是采用Key Hash算法,一是采用Round Robin算法)
ZooKeeperZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实 ...
docker管理工具protainer
介绍Portainer(基于 Go) 是一个轻量级的Web管理界面,可让您轻松管理 Docker 主机 或 Swarm 集群。
Portainer 的使用意图是简单部署。 它包含可以在任何 Docker 引擎上运行的单个容器(Docker for Linux 和 Docker for Windows)。
Portainer 允许您管理 Docker 容器、image、volume、network 等。 它与独立的 Docker 引擎和 Docker Swarm 兼容。
官网 https://portainer.io/)GitHub https://github.com/portainer/portainerDoc https://portainer.readthedocs.io/en/stable/
部署
方法一
12$ docker volume create portainer_data$ docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data p ...
使用Docker Machine
Docker Machine 官方的解释是:
Docker Machine是一个工具,用来在虚拟主机上安装Docker Engine,并使用 docker-machine命令来管理这些虚拟主机。
官方给的Docker Machine的具体使用场景:
1. 你目前只有一个老版本的MacOSX(比如10.10.2)或者Windows系统,想在上边运行docker。
2. 想在远程系统上创建Docker主机。
Docker Engine 主要用来接收和处理docker命令请求的。Docker Machine则主要用来管理 docker化的 host
安装在 Linux 上的也安装十分简单,从 官方 GitHub Release 处直接下载编译好的二进制文件即可。
例如,在 Linux 64 位系统上直接下载对应的二进制包。
12$ sudo curl -L https://github.com/docker/machine/releases/download/v0.13.0/docker-machine-`uname -s`-`uname -m` > /usr/local/bin ...