Linux系统中安装各种常用中间件

发布于:2025-03-22 ⋅ 阅读:(12) ⋅ 点赞:(0)

Linux安装docker

安装docker

定制软件源
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装最新版docker
yum list docker-ce --showduplicates | sort -r
yum install -y docker-ce
systemctl enable docker
systemctl start docker

设置加速源


sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://2y6e4cdr.mirror.aliyuncs.com"]
}
EOF


设置开机自启动

systemctl enable docker
systemctl daemon-reload
systemctl start docker

Docker安装MySQL

1、拉取MySQL镜像

docker pull mysql

2、查看镜像

使用以下命令来查看是否已安装了 mysql镜像

docker images

3、运行MySQL容器

docker run -p 3306:3306 --name mysql --restart=always --privileged=true \
-e TZ=Asia/Shanghai \
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root -d mysql:latest

参数描述:

docker run : 在docker中启动一个容器实例
-d : 该容器在后台运行
-p 3306:3306 : 容器与主机映射端口为,3306(主机端口,即外部连接mysql使用的端口号):3306(容器端口号)
--name mysql : 容器运行后的名称
-v /mysqldata/mysql/log:/var/log/mysql : 将容器/var/log/mysql目录下的数据,备份到主机的/mysqldata/mysql/log目录下
-v /mysqldata/mysql/data:/var/lib/mysql : 将容器/var/lib/mysql目录下的数据,备份到主机的 /mysqldata/mysql/data目录下
-v /mysqldata/mysql/conf:/etc/mysql/conf.d : 将容器/etc/mysql目录下的数据,备份到主机的/etc/mysql/conf.d中
-e MYSQL_ROOT_PASSWORD=root : 设置当前mysql实例的密码为root
mysql:8.0 : 需要运行的容器名称以及版本号

Docker安装Nacos

1、拉取nacos

docker pull nacos/nacos-server

2、运行

docker run -d \
--name nacos \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.8.130 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root -e MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=5000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true" \
nacos/nacos-server


3、停止

docker stop nacos

#查看正在运行的容器

docker ps -a

删除Nacos容器

docker rm <container_id>

查看镜像

docker images

删除镜像

需先停止容器》删除容器》删除镜像

docker rmi 镜像名

查看日志

docker logs -f mysql

安装Docker后出现无法联网
#开启网络*

nmcli networking on

Docker安装RocketMQ

安装NameServer

docker pull rocketmqinc/rocketmq

创建namesrv数据存储路径

mkdir -p  /docker/rocketmq/data/namesrv/logs   /docker/rocketmq/data/namesrv/store

运行namesrv

docker run -d \
--restart=always \
--name mqnamesrv \
-p 9876:9876 \
-v /docker/rocketmq/data/namesrv/logs:/root/logs \
-v /docker/rocketmq/data/namesrv/store:/root/store \
-e "MAX_POSSIBLE_HEAP=100000000" \
-e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m" \
--ulimit nofile=65535:65535 \
--ulimit nproc=65535:65535 \
rocketmqinc/rocketmq \
sh mqnamesrv


  • 参数说明
参数 说明
-d 以守护进程的方式启动
- -restart=always docker重启时候容器自动重启
- -name mqnamesrv 把容器的名字设置为mqnamesrv
-p 9876:9876 把容器内的端口9876挂载到宿主机9876上面
-v /docker/rocketmq/nameserver/logs:/root/logs 目录挂载
-v /docker/rocketmq/nameserver/store:/root/store 目录挂载
-e “MAX_POSSIBLE_HEAP=100000000” 设置容器的最大堆内存为100000000
apache/rocketmq 使用的镜像名称
sh mqnamesrv 启动namesrv服务

安装broker

创建broker数据存储路径

mkdir -p  /docker/rocketmq/data/broker/logs   /docker/rocketmq/data/broker/store /docker/rocketmq/conf

创建配置文件

vi /docker/rocketmq/conf/broker.conf
# 所属集群名称,如果节点较多可以配置多个
brokerClusterName = DefaultCluster
#broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = broker-a
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 48
#有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制;
brokerRole = ASYNC_MASTER
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
# 设置broker节点所在服务器的ip地址  这里改成你虚拟机IP或云服务器IP
brokerIP1 = 192.168.8.128
# 磁盘使用达到95%之后,生产者再写入消息会报错 CODE: 14 DESC: service not available now, maybe disk full
diskMaxUsedSpaceRatio=95

运行broker

docker run -d  \
--restart=always \
--name mqbroker \
--link mqnamesrv:namesrv \
--privileged=true \
-p 10911:10911 \
-p 10912:10912 \
-p 10909:10909 \
-v  /docker/rocketmq/data/broker/logs:/root/logs \
-v  /docker/rocketmq/data/broker/store:/root/store \
-v /docker/rocketmq/conf/broker.conf:/opt/rocketmq/conf/broker.conf \
-e "NAMESRV_ADDR=192.168.8.130:9876" \
-e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m" \
-e "MAX_POSSIBLE_HEAP=200000000" \
--ulimit nofile=65535:65535 \
--ulimit nproc=65535:65535 \
rocketmqinc/rocketmq \
sh mqbroker -c /opt/rocketmq/conf/broker.conf 

参数说明

-d	以守护进程的方式启动
- -restart=always	docker重启时候容器自动重启
- -name mqbroker	把容器的名字设置为rmqbroker
- --link mqnamesrv:namesrv	和mqnamesrv容器通信
-p 10911:10911 | 把容器的非vip通道端口挂载到宿主机
-p 10909:10909 | 把容器的vip通道端口挂载到宿主机
-e “NAMESRV_ADDR=namesrv:9876”	指定namesrv的地址为本机namesrv的ip地址:9876
-e “MAX_POSSIBLE_HEAP=200000000” rocketmqinc/rocketmq sh mqbroker	指定broker服务的最大堆内存
rocketmqinc/rocketmq	使用的镜像名称
sh mqbroker -c /opt/docker/rocketmq/broker.conf	指定配置文件启动broker节点

安装控制台

docker pull pangliang/rocketmq-console-ng

启动控制器

以下IP改成自己的服务器IP或虚拟机IP 项目访问地址为》》IP:8080

docker run -d --restart=always --name rmqadmin -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.8.128 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 pangliang/rocketmq-console-ng

docker安装seata

安装镜像

docker pull seataio/seata-server:1.4.2

添加配置文件

#创建文件夹,将register.conf和file.conf放在 /mydata/seata/conf 下面
mkdir -p /mydata/seata/conf
mkdir -p /mydata/seata/logs

在nacos创建配置文件seataServer.properties

transport.type=TCP
transport.server=NIO
transport.heartbeat=true
transport.enableClientBatchSendRequest=false
transport.threadFactory.bossThreadPrefix=NettyBoss
transport.threadFactory.workerThreadPrefix=NettyServerNIOWorker
transport.threadFactory.serverExecutorThreadPrefix=NettyServerBizHandler
transport.threadFactory.shareBossWorker=false
transport.threadFactory.clientSelectorThreadPrefix=NettyClientSelector
transport.threadFactory.clientSelectorThreadSize=1
transport.threadFactory.clientWorkerThreadPrefix=NettyClientWorkerThread
transport.threadFactory.bossThreadSize=1
transport.threadFactory.workerThreadSize=default
transport.shutdown.wait=3
service.vgroupMapping.gangge=default
service.default.grouplist=127.0.0.1:8091
service.enableDegrade=false
service.disableGlobalTransaction=false
client.rm.asyncCommitBufferLimit=10000
client.rm.lock.retryInterval=10
client.rm.lock.retryTimes=30
client.rm.lock.retryPolicyBranchRollbackOnConflict=true
client.rm.reportRetryCount=5
client.rm.tableMetaCheckEnable=false
client.rm.tableMetaCheckerInterval=60000
client.rm.sqlParserType=druid
client.rm.reportSuccessEnable=false
client.rm.sagaBranchRegisterEnable=false
client.tm.commitRetryCount=5
client.tm.rollbackRetryCount=5
client.tm.defaultGlobalTransactionTimeout=60000
client.tm.degradeCheck=false
client.tm.degradeCheckAllowTimes=10
client.tm.degradeCheckPeriod=2000
store.mode=db
store.publicKey=
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.cj.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?serverTimezone=UTC
store.db.user=root
store.db.password=root
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000
store.redis.mode=single
store.redis.single.host=127.0.0.1
store.redis.single.port=6379
store.redis.sentinel.masterName=
store.redis.sentinel.sentinelHosts=
store.redis.maxConn=10
store.redis.minConn=1
store.redis.maxTotal=100
store.redis.database=0
store.redis.password=
store.redis.queryLimit=100
server.recovery.committingRetryPeriod=1000
server.recovery.asynCommittingRetryPeriod=1000
server.recovery.rollbackingRetryPeriod=1000
server.recovery.timeoutRetryPeriod=1000
server.maxCommitRetryTimeout=-1
server.maxRollbackRetryTimeout=-1
server.rollbackRetryTimeoutUnlockEnable=false
client.undo.dataValidation=true
client.undo.logSerialization=jackson
client.undo.onlyCareUpdateColumns=true
server.undo.logSaveDays=7
server.undo.logDeletePeriod=86400000
client.undo.logTable=undo_log
client.undo.compress.enable=true
client.undo.compress.type=zip
client.undo.compress.threshold=64k
log.exceptionRate=100
transport.serialization=seata
transport.compressor=none
metrics.enabled=false
metrics.registryType=compact
metrics.exporterList=prometheus
metrics.exporterPrometheusPort=9898

创建容器

docker run -d -p 8091:8091 \
-e SEATA_IP=192.168.8.130 \
-e SEATA_PORT=8091 \
-v /mydata/seata/conf/registry.conf:/seata-server/resources/registry.conf \
-v /mydata/seata/conf/file.conf:/seata-server/resources/file.conf \
-v /mydata/seata/logs:/root/logs \
--ulimit nofile=65535:65535 \
--ulimit nproc=65535:65535 \
--restart=always \
--name seata  seataio/seata-server:1.4.2

docker容器启动失败

解决思路及过程:
1 既然是报内存分配过程中,由于内存不够而 Aborted。 那就增大点儿内存再试试, 结果并没有成功。 我在其它机器启动这个java服务只分配了2G内存就启动成功,此处增大到8G, 仍无法成功。 所以这并不是内存不足导致的。

2 上网搜索,得到答案是需要设置 ulimit 下 nofile 和 nproc 这两个参数。 搜索到的结果有两种, 一种是说主机系统默认值是1024, 这个太小需要调大值 65535 或 100000 或 1048576 。 另一种是说docker启动容器时,有时这个值太大,需要调低一些。 总的来说就是这个值大小不合适,需要调整。 调整步骤有两个:

调整主机的系统默认值:

我先用 ulimit -n 查看了一下, 系统默认值是1024 。 然后在 /etc/profile 中添加 ulimit -n 65535 。 然后使用 source /etc/profile 命令使配置生效。
调整Docker下的默认值, 这个网上的方法很多,此处就随便说两种

方法一:

在执行 docker run 命令时添加参数 --ulimit nofile=65535:65535 --ulimit nproc=65535:65535
例如:
docker run -itd -p 7010:7010 --name service-a 64b87045a6fa --ulimit nofile=65535:65535 --ulimit nproc=65535:65535

方法二:

在 /etc/systemd/system/ 目录下, 创建 docker.service.d 目录
进入该目录,创建一个文件,名为 docker.conf
在文件中加入以下配置:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --default-ulimit nofile=65535:65535 -H fd://

啥意思呢? 就是说在执行docker命令时,直接默认使用该参数, 不需要在docker run 命令中定义了。
执行 systemctl daemon-reload (重启Docker daemon)
执行 systemctl restart docker (重启Docker 服务)
两边都配置好后, 再次开始测试, 然鹅结果依旧不行。 因为帖子上有很多赞,说明这个方法确实解决了一些道友的问题, 但我的问题不是如此。

3 我觉得也许是我第二步的配置有问题,但自己没发现导致问题依然存在。 于是就进入container中, 瞅瞅 container 中的 ulimit -n 值会是多少。 此时报了另外一个错: bash: ulimit: open files: cannot get limit: Operation not permitted.

再次搜索, 发现在Docker run命令中加上 --privileged=true 即可以有权限在container中执行这些命令。
例如: docker run -itd --privileged=true -p 7010:7010 --name service-a 64b87045a6fa 。 然后进入容器再次执行 ulimit -n 命令, 成功的输出了 65535 . 说明之前的配置确实是生效了的。
————————————————
版权声明:本文为CSDN博主「Tiny-V」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013071319/article/details/107084902

安装JDK1.8

yum -y install java-1.8.0-openjdk-devel

centos 安装rocketmq

RocketMQ官网:https://rocketmq.apache.org/download/

1、下载rocketMq:

wget https://dist.apache.org/repos/dist/release/rocketmq/5.1.4/rocketmq-all-5.1.4-bin-release.zip

2、安装解压工具:

yum install -y unzip zip

3、解压:

unzip rocketmq-all-5.1.4-bin-release.zip

4、进入文件夹:

cd rocketmq-all-5.1.4-bin-release

5、调整 runserver.sh 参数

​ 由于默认启动的最大内存比较大,需要修改小点保证服务能正常启动。

调整前:

JAVA_OPT=“${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m”

调整后:

JAVA_OPT=“${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m”

6、调整 runbroker.sh 参数

调整前:

JAVA_OPT=“${JAVA_OPT} -server -Xms8g -Xmx8g”

调整后:

JAVA_OPT=“${JAVA_OPT} -server -Xms256m -Xmx256m”

7、启动 namesrv

nohup sh mqnamesrv & tail -f nohup.out

8、启动 broker(IP改成自己的)

nohup sh mqbroker -n 192.168.23.131:9876 & tail -f nohup.out

docker安装Zookeeper和kafka

docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka
#启动zookeeper容器
docker run -d --name zookeeper  --restart=always -p 2181:2181 -t wurstmeister/zookeeper
#启动kafka容器
docker run -d --name kafka  --restart=always --publish 9092:9092 --link zookeeper \
--env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
--env KAFKA_ADVERTISED_HOST_NAME=172.16.0.117 \
--env KAFKA_ADVERTISED_PORT=9092 \
--volume /etc/localtime:/etc/localtime wurstmeister/kafka:latest\

docker安装redis

docker search redis
docker pull redis
docker run -p 6379:6379 --name redis  --restart=always  -d redis:latest redis-server