虚拟机里面安装的操作系统是:CentOS 7 64位。
#如果要查看使用的端口,使用netstat命令;则需要安装工具 yum -y install net-tools #安装网桥工具命令,可以使用 brctl 命令 yum install bridge-utils #查看系统已使用的端口 netstat -aptn #关闭防火墙 systemctl stop firewalld #设置开机不启动防火墙 systemctl disable firewalld.service #如果启动之后无法使用模拟终端(MobaXterm,xshell,secureCRT)连接的话; #可以在虚拟机中先访问系统,然后执行如下命令 systemctl stop NetworkManager systemctl restart network.service #输入如下命令可以查看当前虚拟机的Ip ip address iptables -t nat -F以下是在CentOS7中安装Docker的步骤:
# 1、yum 包更新到最新 sudo yum update # 2、作用:安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # 3、 设置yum源 # 3.1、方案一:使用ustc的(推荐) sudo yum-config-manager --add-repo http://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo # 3.2、方案二:使用阿里云(可能失败) sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 4、 安装docker;出现输入的界面都按 y sudo yum install -y docker-ce # 5、 查看docker版本 docker -vustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。
https://lug.ustc.edu.cn/wiki/mirrors/help/docker
1、 编辑文件/etc/docker/daemon.json
# 执行如下命令: mkdir /etc/docker vi /etc/docker/daemon.json2、在文件中加入下面内容
{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] }-p 代表端口映射,格式为 宿主机映射端口:容器运行端口
-e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的远程登陆密码(如果是在容器中使用root登录的话,那么其密码为空)
# 创建mysql5.7容器 docker run -di --name=mysql5.7 -v /docker/mysql:/mysqltmp -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7运行tracker
docker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh运行storage
docker run -d --name storage --net=host -e TRACKER_IP=192.168.12.168:22122 -e GROUP_NAME=group1 morunchang/fastdfs sh storage.sh 使用的网络模式是**–net=host**, 192.168.12.168 是宿主机的IP; 使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。group1是组名,即storage的组;存放文件的如果想要增加新的storage服务器,再次运行该命令,注意更换 新组名安装FastDFS容器中已经集成了Nginx,需要修改nginx的配置,进入storage的容器内部,修改nginx.conf
docker exec -it storage /bin/bash打开nginx的配置文件
vi /etc/nginx/conf/nginx.conf 修改大概在36行的监听端口为80;在 M00 配置项中添加以下内容 add_header Cache-Control no-store;修改后效果:
# 退出容器 exit #重启容器 docker restart storage #开启开机启动 docker update --restart=always tracker docker update --restart=always storage安装lua相关依赖库的支持,执行如下命令:
yum install gcc gcc-c++ libtermcap-devel ncurses-devel libevent-devel readline-devel #执行上述命令的时候;如果出现Is this ok [y/d/N]: #请输入 y在线下载或使用资料/lua/lua-5.3.5.tar.gz中下载的安装包lua-5.3.5.tar.gz
#在线下载 cd /usr/local curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz #解压 tar zxf lua-5.3.5.tar.gz #编译安装 cd lua-5.3.5 make linux test1.添加仓库执行命令
yum install yum-utils yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo2.执行安装
# 如果已经安装;想重新安装则先卸载 # yum -y remove openresty # 安装 yum install openresty安装过程中出现:Is this ok [y/d/N]: 或者 是否继续?[y/N]: 的时候都输入 y
安装成功后 会在默认的目录如下:/usr/local/openresty
在安装了OpenResty之后;默认已经安装好了nginx,安装目录为/usr/local/openresty/nginx
修改/usr/local/openresty/nginx/conf/nginx.conf,将配置文件使用的根设置为root,目的就是将来要使用lua脚本的时候 ,直接可以加载在root下的lua脚本。
vi /usr/local/openresty/nginx/conf/nginx.conf1、修改nginx.conf文件中的第2行中的 #user nobody; 为 user root;如下:
修改后:
2、修改同一个文件/usr/local/openresty/nginx/conf/nginx.conf的第36行,将 80 端口修改为 9090
保存上述文件的修改。
#启动nginx /usr/local/openresty/nginx/sbin/nginx访问:http://192.168.12.168:9090
1)修改/etc/my.cnf 需要开启主 从模式,开启binlog模式。
执行如下命令,编辑mysql配置文件
#进入容器 docker exec -it mysql5.7 /bin/bash # 如果使用不了vi命令;则可以执行如下两个命令安装(中间有下载失败的也不影响) # 但是在创建mysql容器的时候,已经设置了目录挂载,所以只需要将容器中的Mysql配置文件复制到挂载目录,然#后在宿主机上进行修改即可;所以下面两条安装命令是可以不执行的 # apt-get update # apt-get install vim # 复制配置文件到挂载目录 cp /etc/mysql/mysql.conf.d/mysqld.cnf /mysqltmp # 退出容器 exit; # 在宿主机编辑 vi /docker/mysql/mysqld.cnf修改上述的mysqld.cnf配置文件,在文件的最后,添加如下配置:
log-bin=/var/lib/mysql/mysql-bin server-id=12345修改完宿主机 /docker/mysql/mysqld.cnf 文件后,需要将文件覆盖回容器中 /etc/mysql/mysql.conf.d/mysqld.cnf
#进入容器 docker exec -it mysql5.7 /bin/bash #覆盖 cp -rf /mysqltmp/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf2)创建mysql账号 用于测试使用,使用root账号创建用户并授予权限
-- 连接mysql,用户名root,密码123456 mysql -u root -p -- 创建mysql账号,用户名canal,密码canal create user canal@'%' IDENTIFIED by 'canal'; GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT,SUPER ON *.* TO 'canal'@'%'; FLUSH PRIVILEGES; exit;3)退出到虚拟机操作系统,重启mysql容器
docker restart mysql5.7如果以前开启过mysql的binlog;那么日志会很多;可以先删除;删除之后canal必须重新安装。
打开mysql图形管理工具navicat;然后输入:
reset master因为给大家的虚拟机里面的mysql在配置开启了binlog之后操作了很多,所以日志会有很多。避免大家开启canal监听之后收到一大堆的无用数据库操作数据。所以才需要执行上述的删除日志操作。
顺带把安装好的canal删除了 docker rm canal
再按照8.3章节重新安装。
进入容器,修改核心配置canal.properties 和instance.properties,canal.properties 是canal自身的配置。
#进入容器 docker exec -it canal /bin/bash vi canal-server/conf/canal.properties修改canal.properties的id,不能和mysql的server-id重复;这里只对 canal.id由原来的1修改为1001; 如下图:
instance.properties是需要同步数据的数据库连接配置;设置数据库连接参数等信息。
#退出容器 exit; #查看mysql 容器的ip信息 docker inspect mysql5.7 #进入canal容器 docker exec -it canal /bin/bash #修改canal数据库连接信息 vi canal-server/conf/example/instance.properties上述的文件中有个canal.instance.filter.regex,(这个值我们这里没有修改)表示解析关注的表;默认是全部表,其值有多种配置,如下:
mysql 数据解析关注的表,Perl正则表达式. 多个正则之间以逗号(,)分隔,转义符需要双斜杠(\\) 常见例子: 1. 所有表:.* or .*\\..* 2. canal schema下所有表: canal\\..* 3. canal下的以canal打头的表:canal\\.canal.* 4. canal schema下的一张表:canal.test1 5. 多个规则组合使用:canal\\..*,mysql.test1,mysql.test2 (逗号分隔) 注意:此过滤条件只针对row模式的数据有效(ps. mixed/statement因为不解析sql,所以无法准确提取tableName进行过滤)配置完成后,设置开机启动,并记得重启canal。
#设置开启docker则启动,暂无必要,可以不设置 #docker update --restart=always canal docker restart canal修改vi /etc/security/limits.conf ,追加如下内容 (nofile是单个进程允许打开的最大文件个数 soft nofile 是软限制 hard nofile是硬限制 )
* soft nofile 65536 * hard nofile 65536 * soft nproc 4096 * hard nproc 4096修改vi /etc/sysctl.conf,追加如下内容 (限制一个进程可以拥有的VMA(虚拟内存区域)的数量 )
vm.max_map_count=655360执行下面命令 修改内核参数马上生效
sysctl -p重新启动虚拟机,再次启动容器,发现已经可以启动并远程访问
reboot将第22、 23行的内容修改为如下:
默认配置如下:
-Xms1g -Xmx1g内存占用太多了,调小一些:
-Xms512m -Xmx512m修改es配置开启远程连接,代码如下:
登录容器
docker exec -it elasticsearch /bin/bash #修改配置文件; vi /usr/share/elasticsearch/config/elasticsearch.yml在上述的 elasticsearch.yml文件中将 cluster.name的值修为 changgou ;然后再文件内容后追加如下内容:
bootstrap.system_call_filter: false http.cors.enabled: true http.cors.allow-origin: "*"修改后如下图:
#重启docker docker restart elasticsearch访问: http://192.168.12.168:9200/
如果要开启docker后自动启动容器
docker update --restart=always 容器名称或者容器id
将 资料\elasticsearch\elasticsearch-analysis-ik-6.5.0.zip 文件上传到虚拟机中。
cd /docker/elasticsearch mkdir ik && cd ik #上述 elasticsearch-analysis-ik-6.5.0.zip 上传完成后;解压文件并重命名 # 下载解压工具 yum -y install unzip unzip elasticsearch-analysis-ik-6.5.0.zip #删除压缩包 rm -f elasticsearch-analysis-ik-6.5.0.zip cd .. docker cp ./ik elasticsearch:/usr/share/elasticsearch/plugins #重启es容器 docker restart elasticsearchIK提供了两个分词算法ik_smart 和 ik_max_word 其中 ik_smart 为最少切分,ik_max_word为最细粒度划分。在Chrome浏览器中打开REST Client插件(安装文档见资料文件夹中的 Advanced-REST-client_v3.1.9.zip)。
请求地址:http://192.168.12.168:9200/_analyze?pretty=true
请求方式:post
请求参数:{“analyzer”: “ik_smart”,“text”: “我是程序员”}
具体执行界面如下:
ik分词器的es各种版本可以从 https://github.com/medcl/elasticsearch-analysis-ik 下载
ELASTICSEARCH_URL=http://192.168.12.168:9200 是指链接的ElasticSearch地址
5601:5601 访问端口号
访问http://192.168.12.168:5601如下地址进行测试:
在新增几个文档内容:
PUT /user/_doc/2 { "name":"李白马", "age":23, "city":"上海", "description":"李白马来自中国上海!" } PUT /user/_doc/3 { "name":"王紫马", "age":21, "city":"深圳", "description":"王紫马来自中国深圳!" } PUT /user/_doc/4 { "name":"赵红马", "age":22, "city":"广州", "description":"赵红马来自中国广州!" } PUT /user/_doc/5 { "name":"钱蓝马", "age":25, "city":"广州", "description":"钱蓝马来自中国广州!" }使用POST更新某个列的数据;也就是选择性更新,只更新设置了的数据。
#使用POST更新某个域的数据 POST /user/_doc/4/_update { "doc":{ "name":"赵红马,又被修改", "description":"赵红马来自中国广州!" } }排序查询
#搜索排序 GET /user/_search { "query":{ "match_all": {} }, "sort":{ "age":{ "order":"desc" } } }分页查询
#分页实现 GET /user/_search { "query":{ "match_all": {} }, "sort":{ "age":{ "order":"desc" } }, "from": 0, "size": 2 }from 起始索引号
size 每页大小
-d 后台运行容器;
–name 指定容器名;
-p 指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号);
-v 映射目录或文件;
-e 指定环境变量;如果有需要可以指定一些默认的信息(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)
http://192.168.12.168:15672
用户名:guest
密码:guest
在windows系统中先安装openssl;之后打开 命令行 执行如下:
# 生成公钥私钥 keytool -genkeypair -alias changgou -keyalg RSA -keypass 123456 -keystore changgou.jks -storepass 123456 # 利用openssl导出公钥 keytool -list -rfc --keystore changgou.jks | openssl x509 -inform pem -pubkey用户名:guest
密码:guest
在windows系统中先安装openssl;之后打开 命令行 执行如下:
# 生成公钥私钥 keytool -genkeypair -alias changgou -keyalg RSA -keypass 123456 -keystore changgou.jks -storepass 123456 # 利用openssl导出公钥 keytool -list -rfc --keystore changgou.jks | openssl x509 -inform pem -pubkey