Commit 64efd378 authored by shengnan hu's avatar shengnan hu
Browse files

commit test

parent 9491af7a
Pipeline #266 passed with stage
in 1 minute and 41 seconds
## Centos安装 Docker
从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。
Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。
本文介绍 Docker CE 的安装使用。
移除旧的版本:
```shell
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
```
安装一些必要的系统工具:
```shell
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
```
添加软件源信息:
```shell
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
```
更新 yum 缓存:
```shell
# centos 7
sudo yum makecache fast
# CentOS 8没有fast这个命令
sudo yum makecache
```
安装 Docker-ce:
```shell
sudo yum -y install docker-ce
```
查看已安装docker版本
```shell
docker version
```
启动 Docker 后台服务
```shell
sudo systemctl start docker
```
开机启动
```shell
sudo systemctl enable docker
```
## 镜像加速
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决。
可以使用阿里云的docker镜像地址:https://7qyk8phi.mirror.aliyuncs.com
新版的 Docker 使用 `/etc/docker/daemon.json`(Linux,没有请新建)。
请在该配置文件中加入:
(没有该文件的话,请先建一个)
```json
{
"registry-mirrors": ["https://7qyk8phi.mirror.aliyuncs.com"]
}
```
重启docker
```shell
sudo systemctl daemon-reload
sudo systemctl restart docker
```
### 检查加速器是否生效
配置加速器之后,如果拉取镜像仍然十分缓慢,请手动检查加速器配置是否生效,在命令行执行 `docker info`,如果从结果中看到了如下内容,说明配置成功。
```shell
Registry Mirrors:
https://7qyk8phi.mirror.aliyuncs.com/
```
### 下载docker-compose
```shell
#运行此命令以下载 Docker Compose 的当前稳定版本
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#对二进制文件应用可执行权限
sudo chmod +x /usr/local/bin/docker-compose
#测试安装
docker-compose --version
#若有docker-compose version 1.29.2, build 5becea4c,则安装成功
```
> 如果不清楚如何安装docker-compose的,可以看下《centos安装docker》文档
1.在文件编辑器上,使用全局替换的方式,将文件夹下的所有 `192.168.1.46`替换为服务器的ip
2.将本目录所有文件及文件夹打包上传到服务器,效果如图所示
![服务器上目录结构](../img/开发环境搭建/服务器上目录结构.png)
3.执行授权命令
```
chmod -R 777 ./rocketmq/broker/logs
chmod -R 777 ./rocketmq/broker/store
chmod -R 666 ./minio/data
chmod -R 777 ./elasticsearch/data
```
4.启动容器
> ps: 容器一共要下载7G左右的数据,请耐心等待
```
docker-compose up -d --build
```
5.各个端访问路径及其密码
请自行192.168.1.46替换为服务器ip
- mysql: 使用数据库连接工具进行连接, 端口3306 账号及密码 root/root
- minio: http://192.168.1.46:9000 账号及密码 admin/admin123456
- redis: 端口6379,没有密码
- nacos: http://192.168.1.46:8848/nacos 账号及密码 nacos/nacos
- kibana: http://192.168.1.46:5601
- rocketmq-dashboard:http://192.168.1.46:8180
6.访问minio管理页面,右下角有个加号,创建存储区域(create bucker) 名为`mall4cloud`
![image-20210616090042502](../img/中间件安装/minio新建桶.png)
若要前端可以读取图片,需要设置权限
![image-20210629112059876](../img/中间件安装/minio设置权限.png)
![](../img/中间件安装/minio设置权限-2.png)
7.创建es索引
新建索引
根据自己本地ip地址打开控制台,如下界面
http://192.168.1.46:5601/app/dev_tools#/console
![image-20210621114010421](../img/中间件安装/es新建索引-1.png)
需创建`order``product`两个索引
复制下述命令到左框,点击执行后即可
命令的内容参考本目录下`../es/order.md` `../es/product.md`
![image-20210621131013166](../img/中间件安装/es新建索引-2.png)
#################################################
######### common argument #############
#################################################
# tcp bind ip
canal.ip =
# register ip to zookeeper
canal.register.ip =
canal.port = 11111
canal.metrics.pull.port = 11112
# canal instance user/passwd
# canal.user = canal
# canal.passwd = E3619321C1A937C46A0D8BD1DAC39F93B27D4458
# canal admin config
#canal.admin.manager = 127.0.0.1:8089
canal.admin.port = 11110
canal.admin.user = admin
canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441
# admin auto register
#canal.admin.register.auto = true
#canal.admin.register.cluster =
#canal.admin.register.name =
canal.zkServers =
# flush data to zk
canal.zookeeper.flush.period = 1000
canal.withoutNetty = false
# tcp, kafka, rocketMQ, rabbitMQ
canal.serverMode = rocketMQ
# flush meta cursor/parse position to file
canal.file.data.dir = ${canal.conf.dir}
canal.file.flush.period = 1000
## memory store RingBuffer size, should be Math.pow(2,n)
canal.instance.memory.buffer.size = 16384
## memory store RingBuffer used memory unit size , default 1kb
canal.instance.memory.buffer.memunit = 1024
## meory store gets mode used MEMSIZE or ITEMSIZE
canal.instance.memory.batch.mode = MEMSIZE
canal.instance.memory.rawEntry = true
## detecing config
canal.instance.detecting.enable = false
#canal.instance.detecting.sql = insert into retl.xdual values(1,now()) on duplicate key update x=now()
canal.instance.detecting.sql = select 1
canal.instance.detecting.interval.time = 3
canal.instance.detecting.retry.threshold = 3
canal.instance.detecting.heartbeatHaEnable = false
# support maximum transaction size, more than the size of the transaction will be cut into multiple transactions delivery
canal.instance.transaction.size = 1024
# mysql fallback connected to new master should fallback times
canal.instance.fallbackIntervalInSeconds = 60
# network config
canal.instance.network.receiveBufferSize = 16384
canal.instance.network.sendBufferSize = 16384
canal.instance.network.soTimeout = 30
# binlog filter config
canal.instance.filter.druid.ddl = true
canal.instance.filter.query.dcl = false
canal.instance.filter.query.dml = false
canal.instance.filter.query.ddl = false
canal.instance.filter.table.error = false
canal.instance.filter.rows = false
canal.instance.filter.transaction.entry = false
canal.instance.filter.dml.insert = false
canal.instance.filter.dml.update = false
canal.instance.filter.dml.delete = false
# binlog format/image check
canal.instance.binlog.format = ROW,STATEMENT,MIXED
canal.instance.binlog.image = FULL,MINIMAL,NOBLOB
# binlog ddl isolation
canal.instance.get.ddl.isolation = false
# parallel parser config
canal.instance.parser.parallel = true
## concurrent thread number, default 60% available processors, suggest not to exceed Runtime.getRuntime().availableProcessors()
#canal.instance.parser.parallelThreadSize = 16
## disruptor ringbuffer size, must be power of 2
canal.instance.parser.parallelBufferSize = 256
# table meta tsdb info
canal.instance.tsdb.enable = true
canal.instance.tsdb.dir = ${canal.file.data.dir:../conf}/${canal.instance.destination:}
canal.instance.tsdb.url = jdbc:h2:${canal.instance.tsdb.dir}/h2;CACHE_SIZE=1000;MODE=MYSQL;
canal.instance.tsdb.dbUsername = canal
canal.instance.tsdb.dbPassword = canal
# dump snapshot interval, default 24 hour
canal.instance.tsdb.snapshot.interval = 24
# purge snapshot expire , default 360 hour(15 days)
canal.instance.tsdb.snapshot.expire = 360
#################################################
######### destinations #############
#################################################
canal.destinations = example
# conf root dir
canal.conf.dir = ../conf
# auto scan instance dir add/remove and start/stop instance
canal.auto.scan = true
canal.auto.scan.interval = 5
# set this value to 'true' means that when binlog pos not found, skip to latest.
# WARN: pls keep 'false' in production env, or if you know what you want.
canal.auto.reset.latest.pos.mode = false
canal.instance.tsdb.spring.xml = classpath:spring/tsdb/h2-tsdb.xml
#canal.instance.tsdb.spring.xml = classpath:spring/tsdb/mysql-tsdb.xml
canal.instance.global.mode = spring
canal.instance.global.lazy = false
canal.instance.global.manager.address = ${canal.admin.manager}
#canal.instance.global.spring.xml = classpath:spring/memory-instance.xml
canal.instance.global.spring.xml = classpath:spring/file-instance.xml
#canal.instance.global.spring.xml = classpath:spring/default-instance.xml
##################################################
######### MQ Properties #############
##################################################
# aliyun ak/sk , support rds/mq
canal.aliyun.accessKey =
canal.aliyun.secretKey =
canal.aliyun.uid=
canal.mq.flatMessage = true
canal.mq.canalBatchSize = 50
canal.mq.canalGetTimeout = 100
# Set this value to "cloud", if you want open message trace feature in aliyun.
canal.mq.accessChannel = local
canal.mq.database.hash = true
canal.mq.send.thread.size = 30
canal.mq.build.thread.size = 8
##################################################
######### Kafka #############
##################################################
kafka.bootstrap.servers = 127.0.0.1:9092
kafka.acks = all
kafka.compression.type = none
kafka.batch.size = 16384
kafka.linger.ms = 1
kafka.max.request.size = 1048576
kafka.buffer.memory = 33554432
kafka.max.in.flight.requests.per.connection = 1
kafka.retries = 0
kafka.kerberos.enable = false
kafka.kerberos.krb5.file = "../conf/kerberos/krb5.conf"
kafka.kerberos.jaas.file = "../conf/kerberos/jaas.conf"
##################################################
######### RocketMQ #############
##################################################
rocketmq.producer.group = canal-topic
rocketmq.enable.message.trace = false
rocketmq.customized.trace.topic =
rocketmq.namespace =
rocketmq.namesrv.addr = 192.168.1.46:9876
rocketmq.retry.times.when.send.failed = 3
rocketmq.vip.channel.enabled = false
rocketmq.tag =
##################################################
######### RabbitMQ #############
##################################################
rabbitmq.host =
rabbitmq.virtual.host =
rabbitmq.exchange =
rabbitmq.username =
rabbitmq.password =
rabbitmq.deliveryMode =
#################################################
## mysql serverId , v1.0.26+ will autoGen
# canal.instance.mysql.slaveId=0
# enable gtid use true/false
canal.instance.gtidon=false
# position info
canal.instance.master.address=192.168.1.46:3306
canal.instance.master.journal.name=mysql-binlog.000001
canal.instance.master.position=0
canal.instance.master.timestamp=
canal.instance.master.gtid=
# rds oss binlog
canal.instance.rds.accesskey=
canal.instance.rds.secretkey=
canal.instance.rds.instanceId=
# table meta tsdb info
canal.instance.tsdb.enable=false
#canal.instance.tsdb.url=jdbc:mysql://127.0.0.1:3306/canal_tsdb
#canal.instance.tsdb.dbUsername=canal
#canal.instance.tsdb.dbPassword=canal
#canal.instance.standby.address =
#canal.instance.standby.journal.name =
#canal.instance.standby.position =
#canal.instance.standby.timestamp =
#canal.instance.standby.gtid=
# username/password
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal
canal.instance.connectionCharset = UTF-8
# enable druid Decrypt database password
canal.instance.enableDruid=false
#canal.instance.pwdPublicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALK4BUxdDltRRE5/zXpVEVPUgunvscYFtEip3pmLlhrWpacX7y7GCMo2/JM6LeHmiiNdH1FWgGCpUfircSwlWKUCAwEAAQ==
# table regex
canal.instance.filter.regex=mall4cloud_product.spu:*,mall4cloud_product.category:*,mall4cloud_product.brand:*,mall4cloud_product.spu_tag_reference:*,mall4cloud_multishop.shop_detail:*,mall4cloud_product.spu_extension:*,mall4cloud_product.sku:*,mall4cloud_product.sku_stock:*,mall4cloud_order.order:*
# table black regex
canal.instance.filter.black.regex=mysql\\.slave_.*
# table field filter(format: schema1.tableName1:field1/field2,schema2.tableName2:field1/field2)
#canal.instance.filter.field=test1.t_product:id/subject/keywords,test2.t_company:id/name/contact/ch
# table field black filter(format: schema1.tableName1:field1/field2,schema2.tableName2:field1/field2)
#canal.instance.filter.black.field=test1.t_product:subject/product_image,test2.t_company:id/name/contact/ch
# mq config
canal.mq.topic=canal-topic
# dynamic topic route by schema or table regex
#canal.mq.dynamicTopic=mytest1.user,mytest2\\..*,.*\\..*
canal.mq.partition=0
# hash partition config
#canal.mq.partitionsNum=3
#canal.mq.partitionHash=test.table:id^name,.*\\..*
#canal.mq.dynamicTopicPartitionNum=test.*:4,mycanal:6
#################################################
version: "3.5"
services:
mall4cloud-mysql:
image: mysql:8.0
container_name: mall4cloud-mysql
restart: always
environment:
- MYSQL_ROOT_PASSWORD=root
ports:
- 3306:3306
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/conf.d:/etc/mysql/conf.d
- ./mysql/initdb:/docker-entrypoint-initdb.d
mall4cloud-minio:
image: minio/minio:RELEASE.2021-06-17T00-10-46Z
container_name: mall4cloud-minio
restart: always
command: server /data
ports:
- 9000:9000
volumes:
- ./minio/data:/data
environment:
- MINIO_ROOT_USER=admin
- MINIO_ROOT_PASSWORD=admin123456
mall4cloud-redis:
image: redis:6.2
container_name: mall4cloud-redis
restart: always
ports:
- 6379:6379
mall4cloud-nacos:
image: nacos/nacos-server:v2.2.0-slim
container_name: mall4cloud-nacos
restart: always
depends_on:
- mall4cloud-mysql
ports:
- 8848:8848
- 9848:9848
- 9849:9849
environment:
- JVM_XMS=256m
- JVM_XMX=256m
- MODE=standalone
- PREFER_HOST_MODE=hostname
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=192.168.1.46
- MYSQL_SERVICE_DB_NAME=mall4cloud_nacos
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=root
volumes:
- ./nacos/logs:/home/nacos/logs
mall4cloud-seata:
image: seataio/seata-server:1.6.1
container_name: mall4cloud-seata
restart: always
depends_on:
- mall4cloud-mysql
- mall4cloud-nacos
ports:
- 8091:8091
- 7091:7091
environment:
- SEATA_IP=192.168.1.46
volumes:
- ./seata/application.yml:/seata-server/resources/application.yml
mall4cloud-elasticsearch:
image: elasticsearch:7.17.5
container_name: mall4cloud-elasticsearch
restart: always
ports:
- 9200:9200
- 9300:9300
environment:
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms512m -Xmx512m
volumes:
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- ./elasticsearch/data:/usr/share/elasticsearch/data
- ./elasticsearch/plugins:/usr/share/elasticsearch/plugins
mall4cloud-kibana:
image: kibana:7.17.5
container_name: mall4cloud-kibana
restart: always
ports:
- 5601:5601
links:
- mall4cloud-elasticsearch:elasticsearch
depends_on:
- mall4cloud-elasticsearch
mall4cloud-canal:
image: canal/canal-server:v1.1.6
container_name: mall4cloud-canal
restart: always
ports:
- 11111:11111
volumes:
- ./canal/conf/example:/home/admin/canal-server/conf/example
- ./canal/conf/canal.properties:/home/admin/canal-server/conf/canal.properties
- ./canal/logs:/home/admin/canal-server/logs
mall4cloud-rocketmq-namesrv:
image: apache/rocketmq:4.9.4
container_name: mall4cloud-rocketmq-namesrv
restart: always
ports:
- 9876:9876
volumes:
- ./rocketmq/namesrv/logs:/home/rocketmq/logs
- ./rocketmq/namesrv/store:/home/rocketmq/store
environment:
JAVA_OPT_EXT: "-Duser.home=/home/rocketmq -Xms512M -Xmx512M -Xmn128M"
command: ["sh","mqnamesrv"]
networks:
rocketmq:
aliases:
- mall4cloud-rocketmq-namesrv
mall4cloud-rocketmq-broker:
image: apache/rocketmq:4.9.4
container_name: mall4cloud-rocketmq-broker
restart: always
ports:
- 10909:10909
- 10911:10911
volumes:
- ./rocketmq/broker/logs:/home/rocketmq/logs
- ./rocketmq/broker/store:/home/rocketmq/store
- ./rocketmq/broker/conf/broker.conf:/etc/rocketmq/broker.conf
environment:
JAVA_OPT_EXT: "-Duser.home=/home/rocketmq -Xms512M -Xmx512M -Xmn128M -XX:-AssumeMP"
command: ["sh","mqbroker","-c","/etc/rocketmq/broker.conf","-n","mall4cloud-rocketmq-namesrv:9876","autoCreateTopicEnable=true"]
depends_on:
- mall4cloud-rocketmq-namesrv
networks:
rocketmq:
aliases:
- mall4cloud-rocketmq-broker
mall4cloud-rocketmq-dashboard:
image: apacherocketmq/rocketmq-dashboard:1.0.0
container_name: mall4cloud-rocketmq-dashboard
restart: always
ports:
- 8180:8080
environment:
JAVA_OPTS: "-Drocketmq.namesrv.addr=mall4cloud-rocketmq-namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
depends_on:
- mall4cloud-rocketmq-namesrv
networks:
rocketmq:
aliases:
- mall4cloud-rocketmq-console
networks:
rocketmq:
name: rocketmq
driver: bridge
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict"></entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
<!--用户可以在这里配置远程扩展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
诿
巿
耀
婿
湿
轿
忿
簿
屿
廿
竿
贿
尿
饿
殿
沿
鹿
姿
齿
寿
稿
亿
访
鸿
绿
穿
退
宿
\ No newline at end of file
也
使
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment