虚拟机里面安装的操作系统是: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 -v
ustc是老牌的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.json
2、在文件中加入下面内容
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
# 启动docker服务:
systemctl start docker
# 停止docker服务:
systemctl stop docker
# 重启docker服务:
systemctl restart docker
# 查看docker服务状态:
systemctl status docker
# 设置开机启动docker服务:
systemctl enable docker
#启动容器;如
docker start mysql5.7
#重启容器
docker restart mysql5.7
# 拉取MySQL 5.7镜像
docker pull mysql:5.7
docker run -di --name=mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
-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
#写查看容器名称
docker ps -a
# 登录docker容器中的 MySQL 5.7(名字根据查看容器)
docker exec -it mysql5.7 bash
# 登录容器里面的mysql
mysql -u root -p
输入密码
#退出MySQL,输入两次exit,退到根目录
exit
# 拉取redis镜像
docker pull redis
# 创建redis容器
docker run -di --name=redis -p 6379:6379 redis
#进入redis容器
docker exec -it redis /bin/bash
#进入redis安装目录
cd /usr/local/bin
#连接redis
./redis-cli
docker pull morunchang/fastdfs
运行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
安装FastDFS容器中已经集成了Nginx,需要修改nginx的配置,进入storage的容器内部,修改nginx.conf
docker exec -it storage /bin/bash
打开nginx的配置文件
vi /etc/nginx/conf/nginx.conf
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 test
1.添加仓库执行命令
yum install yum-utils
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
2.执行安装
# 如果已经安装;想重新安装则先卸载
# 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.conf
1、修改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.cnf
2)创建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章节重新安装。
# 拉取镜像
docker pull docker.io/canal/canal-server
#创建容器
docker run -di -p 11111:11111 --name=canal docker.io/canal/canal-server
进入容器,修改核心配置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
#拉取镜像
docker pull elasticsearch:6.5.0
修改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
#创建容器
docker run -di --name=elasticsearch -v /docker/elasticsearch:/elasticsearchtmp -p 9200:9200 -p 9300:9300 elasticsearch:6.5.0
docker exec -it elasticsearch /bin/bash
#修改配置文件;
vi /usr/share/elasticsearch/config/jvm.options
将第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 elasticsearch
IK提供了两个分词算法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 下载
#拉取kibana镜像
docker pull docker.io/kibana:6.5.0
#执行如下命令,开始创建kibana容器
docker run -it -d -e ELASTICSEARCH_URL=http://192.168.12.168:9200 --name=kibana -p 5601:5601 kibana:6.5.0
ELASTICSEARCH_URL=http://192.168.12.168:9200 是指链接的ElasticSearch地址
5601:5601 访问端口号
访问http://192.168.12.168:5601
如下地址进行测试:
GET /_cat/indices?v
PUT /user
PUT /user/_doc/_mapping
{
"properties": {
"name":{
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart",
"store": false
},
"city":{
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart",
"store": false
},
"age":{
"type": "long",
"store": false
},
"description":{
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart",
"store": false
}
}
}
PUT /user/_doc/1
{
"name":"张黑马",
"age":22,
"city":"北京",
"description":"张黑马来自中国北京!"
}
GET /user/_doc/1
在新增几个文档内容:
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":"钱蓝马来自中国广州!"
}
PUT /user/_doc/4
{
"name":"赵红马,被修改了",
"age":22,
"city":"广州",
"description":"赵红马来自中国广州!"
}
使用POST更新某个列的数据;也就是选择性更新,只更新设置了的数据。
#使用POST更新某个域的数据
POST /user/_doc/4/_update
{
"doc":{
"name":"赵红马,又被修改",
"description":"赵红马来自中国广州!"
}
}
DELETE /user/_doc/6
#查询所有
GET /user/_search
排序查询
#搜索排序
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 每页大小
#term:单个词条查询
GET /user/_doc/_search
{
"query":{
"term":{
"city":"广州"
}
}
}
#terms:多个词条查询
GET /user/_doc/_search
{
"query":{
"terms":{
"city":["广州","深圳"]
}
}
}
#range 范围查询允许按照指定范围查找一批数据。例如查询年龄范围、
#gt表示> gte表示=>
#lt表示< lte表示<=
GET /user/_doc/_search
{
"query":{
"range": {
"age": {
"gte": 21,
"lte": 24
}
}
}
}
#exists 存在查询可以用于查找拥有某个域的数据
GET /user/_doc/_search
{
"query": {
"exists":{
"field":"address"
}
}
}
#bool 过滤可以用来合并多个过滤条件查询结果的布尔逻辑,它包含一下操作符:
# must : 多个查询条件的完全匹配,相当于 and。
# must_not : 多个查询条件的相反匹配,相当于 not。
# should : 至少有一个查询条件匹配, 相当于 or。
# 这些参数可以分别继承一个过滤条件或者一个过滤条件的数组:
GET /user/_doc/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"city": {
"value": "广州"
}
}
},
{
"range":{
"age":{
"gte":20,
"lte":30
}
}
}
]
}
}
}
# match_all 查询;可以查询到所有文档,是没有查询条件下的默认语句。
GET /user/_doc/_search
{
"query": {
"match_all": {}
}
}
# match查询是一个标准查询,不管你需要全文本查询还是精确查询基本上都要用到它。
# 如果你使用 match 查询一个全文本字段,它会在真正查询之前用分析器先分析match一下查询字符:
# 字符串匹配
GET /user/_doc/_search
{
"query": {
"match": {
"description": "广州"
}
}
}
# multi_match查询允许你做match查询的基础上同时搜索多个字段,在多个字段中同时查一个
GET /user/_doc/_search
{
"query": {
"multi_match": {
"query": "深圳",
"fields": [
"city",
"description"
]
}
}
}
docker pull rabbitmq:3.8.1-management
docker run -di --name rabbitmq -p 5672:5672 -p 15672:15672 -v /docker/rabbitmq/data:/var/lib/rabbitmq rabbitmq:3.8.1-management
-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
mkdir /servers && cd /servers
#上传“资料/jdk-8u202-linux-x64.tar.gz”到上述文件夹
tar -zxvf jdk-8u202-linux-x64.tar.gz
rm -f jdk-8u202-linux-x64.tar.gz
vi /etc/profile
#跳转到最后一行(shift+g),按o进行编辑,添加如下:
export JAVA_HOME=/servers/jdk1.8.0_202
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#修改完并保存完后;执行如下立即生效
source /etc/profile
cd /servers
#上传 seata-server-0.9.0.tar.gz 文件到上述目录
#解压
tar -zxvf seata-server-0.9.0.tar.gz
#后台方式启动seata
nohup sh /servers/seata/bin/seata-server.sh &
#启动docker
systemctl start docker
#启动mysql
docker start mysql5.7
#启动redis
docker start redis
#启动openresty
/usr/local/openresty/nginx/sbin/nginx
#启动canal
docker start canal
用户名: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
mkdir /servers && cd /servers
#上传“资料/jdk-8u202-linux-x64.tar.gz”到上述文件夹
tar -zxvf jdk-8u202-linux-x64.tar.gz
rm -f jdk-8u202-linux-x64.tar.gz
vi /etc/profile
#跳转到最后一行(shift+g),按o进行编辑,添加如下:
export JAVA_HOME=/servers/jdk1.8.0_202
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#修改完并保存完后;执行如下立即生效
source /etc/profile
cd /servers
#上传 seata-server-0.9.0.tar.gz 文件到上述目录
#解压
tar -zxvf seata-server-0.9.0.tar.gz
#后台方式启动seata
nohup sh /servers/seata/bin/seata-server.sh &
#启动docker
systemctl start docker
#启动mysql
docker start mysql5.7
#启动redis
docker start redis
#启动openresty
/usr/local/openresty/nginx/sbin/nginx
#启动canal
docker start canal