RocketMQ双主双从同步集群部署

news/2024/10/22 10:38:10/

🎈 作者:互联网-小啊宇

🎈 简介: CSDN 运维领域创作者、阿里云专家博主。目前从事 Kubernetes运维相关工作,擅长Linux系统运维、开源监控软件维护、Kubernetes容器技术、CI/CD持续集成、自动化运维、开源软件部署维护等领域。
🎈 博客首页:CSDN【互联网-小阿宇】 、阿里云【互联网-小阿宇】
🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬

在这里插入图片描述

RocketMQ双主双从同步集群部署

  • 服务器环境:
  • 双主双从同步集群部署:
  • 一、安装JDK环境
    • 1.1 上传安装包
    • 1.2 解压安装包
    • 1.3 编写环境变量文件
    • 1.4 验证JDK版本
  • 二、安装RocketMQ
    • 1.1 解压安装包
    • 1.2 【192.168.8.16】修改配置文件
    • 1.3 【192.168.8.18】修改配置文件
    • 1.4 关键配置详解:
    • 1.5 启动两台服务器的nameServer
    • 1.6 分别启动两台服务器的broker的节点
      • 1.6.1 【192.168.8.16】启动a主节点、b从节点
      • 1.6.2 【192.168.8.18】启动b主节点、a从节点
    • 1.7 启动效果
    • 1.8 常用启停命令:
  • 三、rocketmq-dashboard 控制台部署
    • 1.1 下载安装包到电脑主机编写application.yml配置文件
    • 1.2 将rocketmq-dashboard-master打包
      • 1.2.1 如果主机有java环境、maven环境的直接进行打包就行
      • 1.2.2 linux安装maven进行打包
    • 1.3 启动rocketmq-dashboard 控制台
    • 1.4 开启鉴权登录

服务器环境:

服务器IP操作系统备注
192.168.8.16Centos7.5JDK(1.8+)、RocketMQ(5.1.2)
192.168.8.18Centos7.5JDK(1.8+)、RocketMQ(5.1.2)

RocketMQ下载地址:https://rocketmq.apache.org/download/

双主双从同步集群部署:

服务器IPbroker名称备注
192.168.8.16broker-aa主节点
192.168.8.16broker-b-sb从节点
192.168.8.18broker-bb主节点
192.168.8.18broker-a-sa从节点

创建安装目录并存放安装包目录

mkdir /domain

关闭防火墙、沙盒

systemctl stop firewalld  && systemctl disable firewalldvim /etc/selinux/config
#修改
ELINUX=disabled#重启
reboot

一、安装JDK环境


1.1 上传安装包

在这里插入图片描述

1.2 解压安装包

[root@localhost ~]# tar -zxf  /domain/jdk-8u171-linux-x64.tar.gz -C /usr/local/
[root@localhost ~]# mv /usr/local/jdk1.8.0_171  /usr/local/java

1.3 编写环境变量文件

[root@localhost ~]# vim /etc/profile
#尾部添加
export JAVA_HOME=/usr/local/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
[root@localhost ~]# source /etc/profile

1.4 验证JDK版本

[root@localhost ~]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

二、安装RocketMQ


1.1 解压安装包

 unzip /domain/rocketmq-all-5.1.2-bin-release.zip -d /domain/

1.2 【192.168.8.16】修改配置文件

  • 修改运行内存可编辑runserver.sh与runbroker.sh(需要的修改,不需要跳过
1、bin/runserver.shJAVA_OPT="${JAVA_OPT} -server -Xms520m -Xmx1g -Xmn128m -XX:metaspaceSize=120m -XX:MaxMetaspaceSize=320m"
2、bin/runnbroker.shJAVA_OPT="${JAVA_OPT} -server -Xms520m -Xmx1G -Xmn128m"
  • 创建rocketMQ存储目录
mkdir /domain/rocketMQ
  • 修改conf目录中2m-2s-sync目录中的配置文件
vim /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-a.properties
# 所属集群名字
brokerClusterName=test
# broker名字,注意此处不同的配置文件填写的不一样(按配置文件文件名来匹配)
brokerName=broker-a
# 0 表示Master, > 0 表示slave
brokerId=0
# 注册中心,可使用集群模式
namesrvAddr=192.168.8.16:9876;192.168.8.18:9876
# 在发送消息时,自动创建服务器不存在的Topic,默认创建的队列数
defaultTopicQueueNums=4
# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# Broker 对外服务的监听端口
listenPort=10933
# 删除文件时间点,默认是凌晨4点
deleteWhen=04
# 文件保留时间,默认48小时
fileReservedTime=120
# commitLog每个文件的大小默认1G
# 附加:消息实际存储位置,和ConsumeQueue是mq的核心存储概念,之前搭建2m环境的时候创建在store下面,用于数据存储,consumequeue是一个逻辑的概念,消息过来之后,consumequeue并不是把消息所有保存起来,而是记录一个数据的位置,记录好之后再把消息存到commitlog文件里
mapedFileSizeCommitLog=1073741824
# ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
# 存储路径
storePathRootDir=/domain/rocketMQ/store
# commitLog存储路径
storePathCommitLog=/domain/rocketMQ/commitlog
# 消费队列存储路径
storePathConsumeQueue=/domain/rocketMQ/consumequeue
# 消息索引存储路径
storePathIndex=/domain/rocketMQ/index
# checkpoint 文件存储路径
storeCheckpoint=/domain/rocketMQ/checkpoint
# abort 文件存储路径
abortFile=/domain/rocketMQ/abort
# 限制的消息大小
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
# Broker 的角色
# ASYNC_MASTER 异步复制Master
# SYNC_MASTER 同步双写Master
# SLAVE
brokerRole=SYNC_MASTER
# 刷盘方式
# ASYNC_FLUSH 异步刷盘
# SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
checkTransactionMessageEnable=false
# 发消息线程池数量
sendMessageTreadPoolNums=128
# 拉消息线程池数量
pullMessageTreadPoolNums=128
  • slave配置
cat /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-b-s.properties
# 所属集群名字
brokerClusterName=test
# broker名字,注意此处不同的配置文件填写的不一样(按配置文件文件名来匹配)
brokerName=broker-b-s
# 0 表示Master, > 0 表示slave
brokerId=1
# 注册中心,可使用集群模式
namesrvAddr=192.168.8.16:9876;192.168.8.18:9876
# 在发送消息时,自动创建服务器不存在的Topic,默认创建的队列数
defaultTopicQueueNums=4
# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# Broker 对外服务的监听端口
listenPort=10900
# 删除文件时间点,默认是凌晨4点
deleteWhen=04
# 文件保留时间,默认48小时
fileReservedTime=120
# commitLog每个文件的大小默认1G
# 附加:消息实际存储位置,和ConsumeQueue是mq的核心存储概念,之前搭建2m环境的时候创建在store下面,用于数据存储,consumequeue是一个逻辑的概念,消息过来之后,consumequeue并不是把消息所有保存起来,而是记录一个数据的位置,记录好之后再把消息存到commitlog文件里
mapedFileSizeCommitLog=1073741824
# ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
# 存储路径
storePathRootDir=/domain/rocketMQ/slave/store
# commitLog存储路径
storePathCommitLog=/domain/rocketMQ/slave/commitlog
# 消费队列存储路径
storePathConsumeQueue=/domain/rocketMQ/slave/consumequeue
# 消息索引存储路径
storePathIndex=/domain/rocketMQ/slave/index
# checkpoint 文件存储路径
storeCheckpoint=/domain/rocketMQ/slave/checkpoint
# abort 文件存储路径
abortFile=/domain/rocketMQ/slave/abort
# 限制的消息大小
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
# Broker 的角色
# ASYNC_MASTER 异步复制Master
# SYNC_MASTER 同步双写Master
# SLAVE
brokerRole=SLAVE
# 刷盘方式
# ASYNC_FLUSH 异步刷盘
# SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
checkTransactionMessageEnable=false
# 发消息线程池数量
sendMessageTreadPoolNums=128
# 拉消息线程池数量
pullMessageTreadPoolNums=128

1.3 【192.168.8.18】修改配置文件

与192.168.8.16的区别在于修改的文件名不同,我把详细配置一样放在下面

  • 修改运行内存可编辑runserver.sh与runbroker.sh(需要的修改,不需要跳过
1、bin/runserver.shJAVA_OPT="${JAVA_OPT} -server -Xms520m -Xmx1g -Xmn128m -XX:metaspaceSize=120m -XX:MaxMetaspaceSize=320m"
2、bin/runnbroker.shJAVA_OPT="${JAVA_OPT} -server -Xms520m -Xmx1G -Xmn128m"
  • 创建rocketMQ存储目录
mkdir /domain/rocketMQ
  • 修改conf目录中2m-2s-sync目录中的配置文件
vim /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-b.properties
# 所属集群名字
brokerClusterName=test
# broker名字,注意此处不同的配置文件填写的不一样(按配置文件文件名来匹配)
brokerName=broker-b
# 0 表示Master, > 0 表示slave
brokerId=0
# 注册中心,可使用集群模式
namesrvAddr=192.168.8.16:9876;192.168.8.18:9876
# 在发送消息时,自动创建服务器不存在的Topic,默认创建的队列数
defaultTopicQueueNums=4
# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# Broker 对外服务的监听端口
listenPort=10933
# 删除文件时间点,默认是凌晨4点
deleteWhen=04
# 文件保留时间,默认48小时
fileReservedTime=120
# commitLog每个文件的大小默认1G
# 附加:消息实际存储位置,和ConsumeQueue是mq的核心存储概念,之前搭建2m环境的时候创建在store下面,用于数据存储,consumequeue是一个逻辑的概念,消息过来之后,consumequeue并不是把消息所有保存起来,而是记录一个数据的位置,记录好之后再把消息存到commitlog文件里
mapedFileSizeCommitLog=1073741824
# ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
# 存储路径
storePathRootDir=/domain/rocketMQ/store
# commitLog存储路径
storePathCommitLog=/domain/rocketMQ/commitlog
# 消费队列存储路径
storePathConsumeQueue=/domain/rocketMQ/consumequeue
# 消息索引存储路径
storePathIndex=/domain/rocketMQ/index
# checkpoint 文件存储路径
storeCheckpoint=/domain/rocketMQ/checkpoint
# abort 文件存储路径
abortFile=/domain/rocketMQ/abort
# 限制的消息大小
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
# Broker 的角色
# ASYNC_MASTER 异步复制Master
# SYNC_MASTER 同步双写Master
# SLAVE
brokerRole=SYNC_MASTER
# 刷盘方式
# ASYNC_FLUSH 异步刷盘
# SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
checkTransactionMessageEnable=false
# 发消息线程池数量
sendMessageTreadPoolNums=128
# 拉消息线程池数量
pullMessageTreadPoolNums=128
  • slave配置
cat /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-a-s.properties
# 所属集群名字
brokerClusterName=test
# broker名字,注意此处不同的配置文件填写的不一样(按配置文件文件名来匹配)
brokerName=broker-a-s
# 0 表示Master, > 0 表示slave
brokerId=1
# 注册中心,可使用集群模式
namesrvAddr=192.168.8.16:9876;192.168.8.18:9876
# 在发送消息时,自动创建服务器不存在的Topic,默认创建的队列数
defaultTopicQueueNums=4
# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# Broker 对外服务的监听端口
listenPort=10900
# 删除文件时间点,默认是凌晨4点
deleteWhen=04
# 文件保留时间,默认48小时
fileReservedTime=120
# commitLog每个文件的大小默认1G
# 附加:消息实际存储位置,和ConsumeQueue是mq的核心存储概念,之前搭建2m环境的时候创建在store下面,用于数据存储,consumequeue是一个逻辑的概念,消息过来之后,consumequeue并不是把消息所有保存起来,而是记录一个数据的位置,记录好之后再把消息存到commitlog文件里
mapedFileSizeCommitLog=1073741824
# ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
# 存储路径
storePathRootDir=/domain/rocketMQ/slave/store
# commitLog存储路径
storePathCommitLog=/domain/rocketMQ/slave/commitlog
# 消费队列存储路径
storePathConsumeQueue=/domain/rocketMQ/slave/consumequeue
# 消息索引存储路径
storePathIndex=/domain/rocketMQ/slave/index
# checkpoint 文件存储路径
storeCheckpoint=/domain/rocketMQ/slave/checkpoint
# abort 文件存储路径
abortFile=/domain/rocketMQ/slave/abort
# 限制的消息大小
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
# Broker 的角色
# ASYNC_MASTER 异步复制Master
# SYNC_MASTER 同步双写Master
# SLAVE
brokerRole=SLAVE
# 刷盘方式
# ASYNC_FLUSH 异步刷盘
# SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
checkTransactionMessageEnable=false
# 发消息线程池数量
sendMessageTreadPoolNums=128
# 拉消息线程池数量
pullMessageTreadPoolNums=128

1.4 关键配置详解:

brokerClusterName:只要是同一个集群里面的节点,都必须是这一个名称,可以自定义
brokerName:broker的名称,同一个broker的主从节点名称保持一致。
brokerId:broker的id标识。0:主节点,大于0都是从节点
namesrvAddr:nameSrv的注册中心地址,可以是集群模式,多个ip之间使用英文的;分隔
listenPort:监听端口,同一个ip地址下,端口不能保持一致,需修改
brokerRole:broker的角色,ASYNC_MASTER 异步复制Master,SYNC_MASTER 同步双写Master,SLAVE从节点专用。
flushDiskType:数据刷盘方式。ASYNC_FLUSH 异步刷盘,SYNC_FLUSH 同步刷盘
storePathRootDir=/usr/local/rocketMQ/store 存储路径
storePathCommitLog=/usr/local/rocketMQ/commitlog commitLog存储路径
storePathConsumeQueue=/usr/local/rocketMQ/consumequeue 消费队列存储路径
storePathIndex=/usr/local/rocketMQ/index消息索引存储路径
storeCheckpoint=/usr/local/rocketMQ/checkpoint checkpoint 文件存储路径
abortFile=/usr/local/rocketMQ/abort abort 文件存储路径

1.5 启动两台服务器的nameServer

cd /domain/rocketmq-all-5.1.2-bin-release/bin
nohup sh mqnamesrv -> namesrc.log  2>&1 &

1.6 分别启动两台服务器的broker的节点

1.6.1 【192.168.8.16】启动a主节点、b从节点

#a主节点
cd /domain/rocketmq-all-5.1.2-bin-release/bin
nohup sh mqbroker -c /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-a.properties -> broker-a.log  2>&1 &
#b从节点
cd /domain/rocketmq-all-5.1.2-bin-release/bin
nohup sh mqbroker -c /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-b-s.properties -> broker-b-s.log  2>&1 &

1.6.2 【192.168.8.18】启动b主节点、a从节点

#b主节点
cd /domain/rocketmq-all-5.1.2-bin-release/bin
nohup sh mqbroker -c /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-b.properties -> broker-b.log  2>&1 &
#a从节点
cd /domain/rocketmq-all-5.1.2-bin-release/bin
nohup sh mqbroker -c /domain/rocketmq-all-5.1.2-bin-release/conf/2m-2s-sync/broker-a-s.properties -> broker-a-s.log  2>&1 &

1.7 启动效果

两台都一样
在这里插入图片描述

1.8 常用启停命令:

sh mqshutdown broker  停止brokersh mqshutdown namesrv 停止namesrv

三、rocketmq-dashboard 控制台部署


在这里插入图片描述

下载地址:
https://github.com/apache/rocketmq-dashboard

1.1 下载安装包到电脑主机编写application.yml配置文件

文件位置:rocketmq-dashboard-master\src\main\resources\application.yml

右键使用记事本打开
在这里插入图片描述
修改以下内容为节点IP

    namesrvAddrs:- 192.168.8.16:9876- 192.168.8.18:9876

在这里插入图片描述
编辑完成后保存退出!

1.2 将rocketmq-dashboard-master打包

1.2.1 如果主机有java环境、maven环境的直接进行打包就行

在pom.xml同级目录操作命令

mvn clean package -Dmaven.test.skip=true

如果报错,根据报错原因进行解决:

  • 有可能是maven的版本过低,进行升级即可
  • 有可能用的自己的maven配置,部分依赖无法下载,通过指定项目本身pom.xml
mvn clean package -Dmaven.test.skip=true -f C:\Desktop\rocketmq-dashboard-master\rocketmq-dashboard-master\pom.xml

打包成功后将jar包上传到服务器

1.2.2 linux安装maven进行打包

Maven工具安装:http://t.csdn.cn/IIZVH
将修改过application.yml配置的目录上传到服务器

[root@localhost rocketmq-dashboard-master]# pwd
/root/rocketmq-dashboard-master/rocketmq-dashboard-master
[root@localhost rocketmq-dashboard-master]# ls
docs  frontend  LICENSE  NOTICE  package-lock.json  pom.xml  README.md  src  style  target

maven打包

mvn clean package -Dmaven.test.skip=true -f pom.xml

成功界面:
在这里插入图片描述
如果有报错可能是因为maven版本太低,通过yum -y install maven安装版本为Apache Maven 3.0.5,版本太低导致报错,进行升级即可

1.3 启动rocketmq-dashboard 控制台

cd /root/rocketmq-dashboard-master/rocketmq-dashboard-master/target
nohup java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar -> dashboard.log  2>&1 &

查看日志成功启动:
在这里插入图片描述
关闭防火墙

方式一:建议测试环境
1、关闭防火墙。
systemctl stop firewalld
方式二:生产环境使用
1、开放指定的端口号:firewall-cmd --zone=public --add-port=8080/tcp --permanent
2、重启防火墙:firewall-cmd --reload
注意:使用方式二,就需要将nameServer 与 broker 的端口也需要开放出来。使用了那个端口就必须开放出来,否则会被防火墙给阻挡。

访问rocketmq-dashboard 控制台
访问http://ip:8080
在这里插入图片描述
在这里插入图片描述

1.4 开启鉴权登录

对resource下的application.yml文件进行编辑
在这里插入图片描述
对resource下的user.properties修改

用户名=密码,角色:1、管理员 2、普通用户
在这里插入图片描述

重新打包

cd <pom.xml同级目录>
mvn clean package -Dmaven.test.skip=true -f pom.xml

在这里插入图片描述
运行rocketmq-dashboard 控制台

cd /root/rocketmq-dashboard-master/rocketmq-dashboard-master/target

访问rocketmq-dashboard 控制台
访问http://ip:8080
在这里插入图片描述


http://www.ppmy.cn/news/1033747.html

相关文章

item_get_sales-获取商品销量详情

一、接口参数说明&#xff1a; item_get_sales-获取商品销量详情&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_get_sales 名称类型必须描述keyString是调用key&#xff08…

linux系统服务学习(二)linux下yum源配置实战

文章目录 Linux下yum源配置实战一、Linux下软件包的管理1、软件安装方式2、源码安装的配置过程3、详解源码安装的配置过程&#xff08;定制&#xff09;4、详解编译过程5、安装过程6、axel多线程下载软件源码安装7、使用软链接解决command not found8、使用环境变量解决command…

SQL注入是什么?如何防范?

什么是SQL注入&#xff1f; SQL注入&#xff08;SQLi&#xff09;是一种注入攻击&#xff0c;可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询&#xff0c;使攻击者能够完全控制Web应用程序后面的数据库服务器。攻击者可以使用SQL注入漏洞绕过应用程序安全措施&#…

面试攻略,Java 基础面试 100 问(十四)

Java 语言如何进行异常处理&#xff0c;关键字&#xff1a;throws、throw、try、catch、finally 分别如何使用&#xff1f; Java 通过面向对象的方法进行异常处理&#xff0c;把各种不同的异常进行分类&#xff0c;并提供了良好的接口。在 Java 中&#xff0c;每个异常都是一个…

[Mongodb 5.0]聚合操作

本文对应Aggregation Operations — MongoDB Manual 正文 此章节主要介绍了Aggregation Pipeline&#xff0c;其实就是将若干个聚合操作放在管道中进行执行&#xff0c;每一个聚合操作的结果作为下一个聚合操作的输入&#xff0c;每个聚合指令被称为一个stage。 在正式开始学…

【Go】常见的四个内存泄漏问题

Goroutine没有顺利结束 1、这里更多的是由于channelforselect导致的&#xff0c;错误的写法导致了发送者或接收者没有发现channel已经关闭&#xff0c;任务已经结束了&#xff0c;却仍然在尝试输入输出https://geektutu.com/post/hpg-exit-goroutine.html Map的remove方法不会…

2009年下半年 软件设计师 上午试卷

博主介绍&#xff1a;✌全网粉丝3W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

Cygwin 配置C/C++编译环境以及如何编译项目

文章目录 一、安装C、C编译环境需要的包1. 选择gcc-core、gcc-g2. 选择gdb3. 选择mingw64下的gcc-core、gcc-g4. 选择make5. 选择cmake6. 确认更改7. 查看包安装状态 二、C、C 项目编译示例step1&#xff1a;解压缩sed-4.9.tar.gzstep2&#xff1a;执行./configure生成Makefile…