-
【功能模块】编译阶段【操作步骤&问题现象】1、线下编译,运行通过,输出也没问题2、提交线上显示程序运行失败最水工带人,hw70205226,C++ 2022-03-18 12:08:39【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
近期看到论坛里面问这个问题的比较多,一些同学总觉得,在我这里行,为什么上传就不行,有些委屈的感觉。在这里讨论一下这个事情。程序这如果出错,必然是有原因的。所以首先需有一个排错的思路,一个一个去否定。下面提一些思路来,大家也可以一起往里面补充。我认为,这个思路不仅仅对这次比赛有意义,对以后处理类似问题也是一个参考。首先,要统一一个观点:本地能跑过是一个最低要求,但不代表没问题,只是恰好没有发现而已。1、先排除环境问题,比如:1)使用编译环境与要求不一致,在本地能用的库、能用的函数,到了平台上不能用了,或者参数发生变化了。2)用了不允许的第三方库,自己环境可以,平台上没有。2、再排除打包问题。多打了一层、打错目录,判题程序调用时找不到。仔细阅读一下SDK的说明文档中的描述:https://bbs.huaweicloud.com/forum/thread-182328-1-1.html3、路径问题任务书中对于路径有明确说法,“/”符号开头,在Linux下就是根目录的意思。但有些人还是不理解,读错地方、写错地方。涉及到路径,还要考虑权限问题。windows上文件管理权限和Linux下是有差异的。读写文件要注意参数是否合适。4、字符集编码字符集编码比较复杂,什么UTF-8、GBK、ANSI之类的。编码的问题也会导致文件打不开。如果写Python的,类似问题应该见过:“utf-8‘ codec can‘t decode byte.....”建议用utf-8,避免其它问题。5、系统差异经常在windows和linux上协同工作的同学,dos2unix这个命令应该见过。有些文件不用这个转,windows下可工作的,到了Linux就是不行。还有Windows下换行\r\n和Linux\n的差异,我看群里讨论也有因这个出现问题的。这里还没涉及大小端的问题。如果考虑这个,那往往本地可工作的程序,换个平台有异常,这是从设计时就需要考虑的。看到群里还有人讨论,在win10和win11下表现不一样。那恰好证明,平台的差异是需要考虑的。还是建议:大家想办法准备一个干净的,与比赛环境说明指定程序版本相同的Linux环境,应该可以省些事。6、代码问题排除了周边问题,那接下来就是代码了。比如:1)现在给的小数据集,在大数据集情况下,内存使用是否没控制好,可能导致OOM?是否有内存泄漏?2)仅在一组小数据下,一些异常处理路径可能没有得到充分验证。数据变化,有些路径走到了,就出错。3)编码的一些边界条件没处理好。4)编码质量本身,看到过有数组越界的、有访问不存在的key的,有除0错误的。这些问题只通过一次简单验证通常是无法发现的。所以,只靠一组数据跑通,就认为程序无误,这肯定不合适的。同学们可以按照数据描述,自行构建一些数据,包括数据规模、数据特征、参数变化,来验证自己程序是否稳定。自验证本身就应该是开发的一部分7、以上是示例一下查错思路。不断思考下去,还可能有很多,各位同学也可以继续帮忙补齐。看到有同学说是几天提交了100多次(应该是借小号了),还是不行。如果没找到问题根因,想通过多次提交“闯”过去的做法不太可取。过了,也不知道为啥,下次不过,还是不知道为啥。目前来看,判题平台还没发现不正常的地方。所有问题都是有原因的。随着更多同学参与,每天编译、运行错误的有成千上万,随着时间往后可能更多。不可能给每个同学单独定位的。但会针对一些报错去抽查一下日志,然后归纳放在FAQ里面。所以,遇到类似问题,先参考FAQ仔细检查一下,FAQ会持续刷新。
-
c++linux下运行build.sh成功 但使用用CodeCraft_zip.sh打包提交后显示“选手程序编译失败”提交的为 CodeCraft-2022.zip,未改过 build.sh 和 CMakeLists.txt
-
Linux环境下使用build_and_run.sh运行成功,并且使用CodeCraft_zip.sh打包成功,但是上传之后显示选手程序运行失败。队名小熊乐迪团队 时间2022-03-16 09:40:31
-
队伍名:成电六组团团霸霸 用户名:Yank-Ho 提交时间: 2022-03-15 21:41:55
-
目录-1 软件介绍 -2 环境配置 -3 系统配置 -3.1 关闭防火墙(可选) -3.2 修改SELINUX为disabled -3.3 配置本地yum源(可选) -3.4 配置hosts -3.5 配置ntp时间同步 -3.6 关闭swap分区 -3.7 设置路由 -4 软件安装 -4.1 Docker-ce安装 -4.2 Kubernetes组件安装 -4.3 准备Kubernetes相关镜像 -4.4 搭建集群 -4.5 配置cni网络插件 -4.6 配置flannel网络插件 -4.7 Golang环境搭建 -4.8 Mosquitto环境搭建 -5 软件运行 -5.1 云端KubeEdge源码编译 -5.2 边缘端KubeEdge源码编译 -5.3 部署 -6 功能验证 -6.1 运行nginx示例 -7 FAQ1 软件介绍KubeEdge 是一个开源的系统,可将本机容器化应用编排和管理扩展到边缘端设备。 它基于Kubernetes构建,为网络和应用程序提供核心基础架构支持,并在云端和边缘端部署应用,同步元数据。KubeEdge 还支持 MQTT 协议,允许开发人员编写客户逻辑,并在边缘端启用设备通信的资源约束。KubeEdge 包含云端和边缘端两部分。Master 云上部分CloudHub: CloudHub 是一个 Web Socket 服务端,负责监听云端的变化, 缓存并发送消息到 EdgeHub。EdgeController: EdgeController 是一个扩展的 Kubernetes 控制器,管理边缘节点和 Pods 的元数据确保数据能够传递到指定的边缘节点。DeviceController: DeviceController 是一个扩展的 Kubernetes 控制器,管理边缘设备,确保设备信息、设备状态的云边同步。边缘部分EdgeHub: EdgeHub 是一个 Web Socket 客户端,负责与边缘计算的云服务(例如 KubeEdge 架构图中的 Edge Controller)交互,包括同步云端资源更新、报告边缘主机和设备状态变化到云端等功能。Edged: Edged 是运行在边缘节点的代理,用于管理容器化的应用程序。EventBus: EventBus 是一个与 MQTT 服务器(mosquitto)交互的 MQTT 客户端,为其他组件提供订阅和发布功能。ServiceBus: ServiceBus是一个运行在边缘的HTTP客户端,接受来自云上服务的请求,与运行在边缘端的HTTP服务器交互,提供了云上服务通过HTTP协议访问边缘端HTTP服务器的能力。DeviceTwin: DeviceTwin 负责存储设备状态并将设备状态同步到云,它还为应用程序提供查询接口。MetaManager: MetaManager 是消息处理器,位于 Edged 和 Edgehub 之间,它负责向轻量级数据库(SQLite)存储/检索元数据2 环境配置角色配置主机名业务网络备注node-1172.168.50.20云端,master节点node-2172.168.50.22边缘段,edge节点 硬件平台服务器TaiShan 200 2280处理器2*KunPeng 920 4826内存16*32G 2666MHz系统盘1 * 1.2T SATA HDD数据盘1 * 960G SSD网络1 * GE(板载) 1 * 10GE(1822) 软件平台软件名称版本号安装方法备注CentOS7.6https://support.huawei.com/enterprise/zh/doc/EDOC1100088654/3e971c8d本文档安装过程选择的环境为“Server with GUI”,并附加了“Development Tools”。ntp4.6.2p5-29见3.5章节 Docker-ce19.03.7见4.1章节 kubernetes1.15.1见4.2章节 golang1.13.5见4.7章节 mosquitto1.5.8见4.8章节 3 系统配置3.1 关闭防火墙(可选)# 步骤 1 停止防火墙。 systemctl stop firewalld.service # 步骤 2 关闭防火墙。 systemctl disable firewalld.service3.2 修改SELINUX为disabled# 步骤 1 关闭防火墙。 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux3.3 配置本地yum源(可选)若环境有外网条件,可不用配置本地源,直接用系统配置好的网上源或者自己添加网上源即可。步骤 1 配置源文件mv /etc/yum.repos.d/ /etc/yum.repos.d-bak mkdir /etc/yum.repos.d echo -e "[local]\nname=local\nbaseurl=file:///mnt\ngpgcheck=0\nenabled=1" > /etc/yum.repos.d/local.repo步骤 2 执行cat确认上一步操作写入成功,显示如下图cat /etc/yum.repos.d/local.repo步骤 3 挂载源镜像,将系统镜像通过KVM挂载mount /dev/cdrom /mnt3.4 配置hosts根据集群信息,配置所有节点的hosts。#步骤 1 配置hosts vi /etc/hosts 172.168.50.20 node-1 172.168.50.22 node-23.5 配置ntp时间同步# 步骤 1 安装ntp软件 yum install –y ntp ntpdate # 步骤 2 以node-1作为ntp服务器,其他节点自动与它同步,配置后conf内容如下: [root@ods1 ~]# cat /etc/ntp.conf restrict 127.0.0.1 restrict ::1 restrict 172.170.75.13 mask 255.255.255.0 server 127.127.1.0 fudge 127.127.1.0 stratum 8 # 步骤 3 其他的节点,配置conf如下 cat /etc/ntp.conf Server 172.168.50.20 # 步骤 4 启动ntpd自动同步服务,所有节点执行以下命令。 systemctl start ntpd systemctl enable ntpd # 步骤 5 配置完可先手动同步一次,node-2执行以下命令。 ntpdate 172.168.50.20 # 步骤 6 配置SSH无密钥登录,node-1执行。 ssh-keygen -t rsa ssh-copy-id node-2 # 步骤 7 配置SSH无密钥登录,node-2执行。 ssh-keygen -t rsa ssh-copy-id node-13.6 关闭swap分区所有节点均需执行以下步骤步骤 1 关闭swap分区,并备份/etc/fstabswapoff -a cp -p /etc/fstab /etc/fstab.bak$(date '+%Y%m%d%H%M%S')步骤 2 修改/etc/fstab,将swap分区的一行注释vi /etc/fstab注释后如下图:3.7 设置路由# 步骤 1 所有节点执行以下命令 modprobe br_netfilter sysctl -w net.bridge.bridge-nf-call-iptables=1 echo "net.bridge.bridge-nf-call-iptables=1" > /etc/sysctl.d/k8s.conf 4 软件安装4.1 Docker-ce安装所有节点都需要安装Docker,这里安装的是19.03.7。# 步骤 1 安装Docker 所需的软件包。 yum install -y yum-utils # 步骤 2 设置docker yum源。 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 步骤 3 查看可安装的版本 # yum源有时候会更新,请根据实际情况选择具体的版本安装 yum list docker-ce --showduplicates | sort -r# 步骤 4 安装Docker-ce。 # 安装指定版本的方法是:软件名称-版本.软件后缀,如下: yum install docker-ce-3:19.03.7-3.el7.aarch64 # 步骤 5 启动Docker。 systemctl start docker # 步骤 6 Docker自启动 systemctl enable docker4.2 Kubernetes组件安装node-1节点安装相关组件,这里以kubeadm-1.15.1-0 kubelet-1.15.1-0 kubectl-1.15.1-0为例。# 步骤 1 配置Kubernetes源。 vi /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes Repo baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-aarch64/ gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg enabled=1 # 步骤 2 组件安装。 yum install -y kubeadm-1.15.1-0 kubelet-1.15.1-0 kubectl-1.15.1-0 --disableexcludes=kubernetes # 步骤 3 使能Kubelet服务。 systemctl enable kubelet4.3 准备Kubernetes相关镜像node-1节点拉取kube-proxy、kube-scheduler、kube-controller-manager、kube-apiserver、etcd、coredns和pause镜像。步骤 1 下载Arm64镜像。docker pull docker.io/mirrorgooglecontainers/kube-apiserver-arm64:v1.15.1 docker pull docker.io/mirrorgooglecontainers/kube-controller-manager-arm64:v1.15.1 docker pull docker.io/mirrorgooglecontainers/kube-scheduler-arm64:v1.15.1 docker pull docker.io/mirrorgooglecontainers/kube-proxy-arm64:v1.15.1 docker pull docker.io/mirrorgooglecontainers/pause-arm64:3.1 docker pull docker.io/mirrorgooglecontainers/etcd-arm64:3.3.10 docker pull docker.io/coredns/coredns:1.3.1步骤 2 修改已下载的镜像标签。docker tag docker.io/mirrorgooglecontainers/kube-apiserver-arm64:v1.15.1 k8s.gcr.io/kube-apiserver:v1.15.1 docker tag docker.io/mirrorgooglecontainers/kube-controller-manager-arm64:v1.15.1 k8s.gcr.io/kube-controller-manager:v1.15.1 docker tag docker.io/mirrorgooglecontainers/kube-scheduler-arm64:v1.15.1 k8s.gcr.io/kube-scheduler:v1.15.1 docker tag docker.io/mirrorgooglecontainers/kube-proxy-arm64:v1.15.1 k8s.gcr.io/kube-proxy:v1.15.1 docker tag docker.io/mirrorgooglecontainers/pause-arm64:3.1 k8s.gcr.io/pause:3.1 docker tag docker.io/mirrorgooglecontainers/etcd-arm64:3.3.10 k8s.gcr.io/etcd:3.3.10 docker tag docker.io/coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1步骤 3 检查镜像。docker images4.4 搭建集群步骤 1 主节点初始化集群使用flannel网络,必须指定CIDR。记录work加入命令。[root@ods1 ~]# kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version=1.15.1步骤 2 node-1节点配置kubectlnode-1节点使用kubectl管理集群mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config步骤 3 node-1节点查看集群状态kubectl get nodes4.5 配置cni网络插件在集群所有节点上都需要配置。步骤 1 配置10-mynet.conf。mkdir -p /etc/cni/net.d cat >/etc/cni/net.d/10-mynet.conf <<EOF { "cniVersion": "0.3.0", "name": "mynet", "type": "bridge", "bridge": "cni0", "isGateway": true, "ipMasq": true, "ipam": { "type": "host-local", "subnet": "10.244.0.0/16", "routes": [ {"dst": "0.0.0.0/0"} ] } } EOF步骤 2 配置99-loopback.conf。cat >/etc/cni/net.d/99-loopback.conf <<EOF { "cniVersion": "0.3.0", "type": "loopback" } EOF4.6 配置flannel网络插件在集群所有节点上都需要配置。步骤 1 下载flannel yaml文件。下载https://github.com/coreos/flannel/blob/v0.10.0/Documentation/kube-flannel.yml 中的kube-flannel.yml文件,之后修改文件中的amd64修改为arm64步骤 2 在master节点上,安装flannel插件。[root@ods1 ~]# kubectl apply -f kube-flannel.yml步骤 3 node-1节点查看状态,并修改label。kubectl get nodekubectl get pods -o wide –-all-namespaces4.7 Golang环境搭建所有节点都需要安装Golang,这里安装的是1.13.5。# 步骤 1 下载golang,并解压。 wget https://studygolang.com/dl/golang/go1.13.5.linux-arm64.tar.gz tar -C /usr/local -xzf go1.13.5.linux-arm64.tar.gz # 步骤 2 添加环境变量。 # 在~/.bashrc文件末尾添加: vim ~/.bashrc export GOPATH=/home/kkbill/kubeedge export PATH=$PATH:/usr/local/go/bin # 保存后记得执行 source ~/.bashrc 生效。验证: go version go version go1.13.5 linux/arm644.8 Mosquitto环境搭建node-2节点都需要安装Mosquitto,这里安装的是1.5.8。# 步骤 1 添加EPEL软件库。 yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm # 步骤 2 添加EPEL软件库。 yum install mosquitto 5 软件运行5.1 云端KubeEdge源码编译node-1为云端,这里安装的KubeEdge版本是1.14.0。# 步骤 1 克隆仓库。 git clone https://github.com/kubeedge/kubeedge.git $GOPATH/src/github.com/kubeedge/kubeedge # 步骤 2 编译云端。 cd $GOPATH/src/github.com/kubeedge/kubeedge/ make all WHAT=cloudcore # 生成的二进制位于$GOPATH/src/github.com/kubeedge/kubeedge/_output/local/bin/目录下。 # 步骤 3 编创建设备模块和设备CRD yaml 文件。 cd $GOPATH/src/github.com/kubeedge/kubeedge/build/crds/devices kubectl create -f devices_v1alpha1_devicemodel.yaml kubectl create -f devices_v1alpha1_device.yaml cd $GOPATH/src/github.com/kubeedge/kubeedge/build/crds/reliablesyncs kubectl create -f cluster_objectsync_v1alpha1.yaml kubectl create -f objectsync_v1alpha1.yaml # 步骤 4 配置云端节点。 cd $GOPATH/src/github.com/kubeedge/kubeedge/_output/local/bin mkdir -p /etc/kubeedge/config/ ./cloudcore --minconfig > /etc/kubeedge/config/cloudcore.yaml5.2 边缘端KubeEdge源码编译node-2为边缘端,这里安装的KubeEdge版本是1.14.0。# 步骤 1 克隆仓库。 git clone https://github.com/kubeedge/kubeedge.git $GOPATH/src/github.com/kubeedge/kubeedge # 步骤 2 编译云端。 cd $GOPATH/src/github.com/kubeedge/kubeedge/ make all WHAT=edgecore # 生成的二进制位于$GOPATH/src/github.com/kubeedge/kubeedge/_output/local/bin/目录下。 # 步骤 3 生成边缘端配置文件并修改。 cd $GOPATH/src/github.com/kubeedge/kubeedge/_output/local/bin mkdir -p /etc/kubeedge/config/ ./edgecore --minconfig > /etc/kubeedge/config/ edgecore.yaml5.3 部署步骤 1 node-1查看kubernetes集群状态。此刻只有云端节点node-1就绪步骤 2 node-1节点运行云端核心。cd $GOPATH/src/github.com/kubeedge/kubeedge/_output/local/bin ./cloudcore步骤 3 node-1获取token。获取token解码:xxx为tokendata内容echo xxx | base64 -d步骤 4 node-2配置node-1节点解码后token内容。将步骤3中node-1节点中解码出来的token配置到node-2节点中的edgecore.yaml文件中module.edgehub.token属性步骤 5 node-2节点运行边缘端核心。cd $GOPATH/src/github.com/kubeedge/kubeedge/_output/local/bin ./edgecore 6 功能验证6.1 运行nginx示例步骤 1 在node-1节点查看状态。云端和边缘端均为ready步骤 2 部署官方deployment。步骤 3 扩容测试。kubectl scale deployment nginx-deployment --replicas=4预期效果:有4个pod出现,但只有1个正常运行,因为该 deployment 导出了节点端口,前面的 pod 已经占用,无法再分配。理论上,如果有4个节点,则会自动将 deployment 调度到4个节点上步骤 4 删除。kubectl delete -f $GOPATH/src/github.com/kubeedge/kubeedge/build/deployment.yaml7 FAQ系统重启后,节点kubernetes未自动启动,手动systemctl start kubelet也没有启动成功执行下面的语句查看kubelet启动日志。journalctl –u kubelet之后输入大写的’G’跳转到文件末尾,查看启动日志,之后根据报错信息处理。 2.“failed to run Kubelet: Running with swap on is not supported”。启动kubernetes节点必须关闭swap分区,具体操作见3.6章 3.Kubeedge编译时无法下载依赖包。解决方案:添加Go代理go env –w GOPROXY=https://goproxy.cn,direct
-
Linux环境下使用build_and_run.sh运行成功,并且使用CodeCraft_zip.sh打包成功,但是上传之后显示【选手程序运行失败】。CodeCraft-2022.zip00查看问题2022-03-15 17:32:55
-
Linux环境下使用build_and_run.sh运行成功,并且使用CodeCraft_zip.sh打包成功,但是上传之后显示【选手程序运行失败】。
-
【问题描述】编程语言为Java 本地idea上测试没问题,也能输出solution.txt文件 ,但是上传报编译错误。于是在本地的Linux系统上编译,也出现异常,然后拿什么都没动过的Demo也测试,发现还是这样。哭死。。。。。【截图信息】
-
在CentOS 8 停止维护后,国内比较大的云计算厂商已经开始提供almalinux 镜像作为ECS 的公共镜像了。建议华为云增加 almalinux 和 rockylinux 的镜像源,并且华为云ECS 增加 almalinux 或 rockylinux.我明天会在华为云上部署一个 almalinux 节点,希望能尽快使用上华为云的内部源,而不是从公网获取更新。
-
目 录- 1 软件介绍 - 2 环境配置 - 3 系统配置 - 3.1 关闭防火墙(可选) - 3.2 修改SELINUX为disabled(可选) - 3.3 配置本地yum源(可选) - 4 软件编译 - 4.1 Docker-ce安装 - 4.2 Docker-compose安装 - 4.3 Harbor安装 - 4.4 制作harbor-core-base镜像(可选) - 5 软件运行 - 5.1 启动Harbor - 6 FAQ - 7 其他 1 软件介绍Harbor是构建企业级私有docker镜像的仓库的开源解决方案,是Docker Registry的更高级封装。除了提供友好的Web UI界面,角色和用户权限管理,用户操作审计等功能外,还整合了K8s的插件(Add-ons)仓库,即Helm通过chart方式下载,管理,安装K8s插件,而chartmuseum可以提供存储chart数据的仓库。2 环境配置 硬件平台服务器TaiShan 200 2280处理器 2*KunPeng 920 4826内存16*32G 2666MHz系统盘1 * 1.2T SATA HDD数据盘1 * 960G SSD网络1 * GE(板载) 软件平台软件名称版本号安装方法备注CentOS7.6https://support.huawei.com/enterprise/zh/doc/EDOC1100088654/3e971c8d本文档安装过程选择的环境为“Server with GUI”,并附加了“Development Tools”。Docker-ce19.03.8见4.1章节支持版本最低为17.06.0-ceDocker-compose1.18.0见4.2章节支持版本最低为1.18.03 系统配置3.1 关闭防火墙(可选)# 步骤 1 停止防火墙。 systemctl stop firewalld.service # 步骤 2 关闭防火墙。 systemctl disable firewalld.service3.2 修改SELINUX为disabled(可选)# 步骤 1 关闭防火墙。 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux3.3 配置本地yum源(可选)若环境有外网条件,可不用配置本地源,直接用系统配置好的网上源或者自己添加网上源即可。# 步骤 1 配置源文件 mv /etc/yum.repos.d/ /etc/yum.repos.d-bak mkdir /etc/yum.repos.d echo -e "[local]\nname=local\nbaseurl=file:///mnt\ngpgcheck=0\nenabled=1" > /etc/yum.repos.d/local.repo # 步骤 2 执行cat确认上一步操作写入成功,显示如下图 cat /etc/yum.repos.d/local.repo # 步骤 3 挂载源镜像,将系统镜像通过KVM挂载 mount /dev/cdrom /mnt4 软件编译4.1 Docker-ce安装所有节点都需要安装Docker,这里安装的是19.03.8。# 步骤 1 安装Docker 所需的软件包。 yum install -y yum-utils # 步骤 2 设置docker yum源。 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 步骤 3 查看可安装的版本 # yum源有时候会更新,请根据实际情况选择具体的版本安装 yum list docker-ce --showduplicates | sort -r # 步骤 4 安装Docker-ce。 # 安装指定版本的方法是:软件名称-版本.软件后缀,如下: yum install docker-ce-3:19.03.8-3.el7.aarch64 # 步骤 5 启动Docker。 systemctl start docker # 步骤 6 Docker自启动 systemctl enable docker4.2 Docker-compose安装# 步骤 1 安装EPEL源。 yum install –y epel-release # 步骤 2 安装docker-compose。 yum install –y docker-compose -enablerepo=epel4.3 Harbor安装# 步骤 1 Harbor源码下载解压。 wget https://github.com/goharbor/harbor/archive/v1.10.2.tar.gz tar –zxvf v1.10.2.tar.gz cd harbor-1.10.2 # 步骤 2 编辑Makefile文件,启动编译组件功能。 vi Makefile ... 82 BUILDBIN=true ... 99 REGISTRYVERSION=v2.7.1# 步骤 3 编辑yml文件。 # 修改hostname和https配置,本文档屏蔽了https的使用,如需使用https,请生成证书并配置到对应路径下。 vi make/harbor.yml# 步骤 4 编辑文件,将X86的源镜像修改为arm64的镜像。 # 本步骤涉及的base镜像均对应1.10.2版本,如编译其他大于1.10版本的harbor,可在dockerhub搜索是否有对应版本Arm64的镜像(base镜像不同版本差异较小),也可根据4.4章节的步骤,使用官方提供的Dockerfile.base自行打包。 find ./ -type f|grep "Dockerfile$"|grep -v "\.D"|xargs sed -i "s#photon:2.0#photon:3.0#g" sed -i "s/goharbor/liar/g" ./make/photon/log/Dockerfile find ./make/photon -type f|grep "Dockerfile$"|grep -v "\.D"|xargs sed -i "s/goharbor/glongzh/g" # 步骤 5 拉取golang 1.12.12官网镜像。 docker pull golang:1.12.12 # 步骤 6 编译、安装和启动harbor服务。 make install GOBUILDIMAGE=golang:1.12.12 VERSIONTAG=v1.10.2 PKGVERSIONTAG=v1.10.2 UIVERSIONTAG=v1.10.2 BASEIMAGETAG=v1.10.2 # 步骤 7 编译离线安装包(可选)。 make package_offline GOBUILDIMAGE=golang:1.12.12 VERSIONTAG=v1.10.2 PKGVERSIONTAG=v1.10.2 UIVERSIONTAG=v1.10.2 BASEIMAGETAG=v1.10.2 # 步骤 8 启动harbor,执行如下步骤(可选)。 tar -xvf harbor offline installer xxx.tgz && cd harbor sh install.sh4.4 制作harbor-core-base镜像(可选)Harbor 1.10后将各个组件镜像打包分成两步,先官方会先打包一个预编译好的base镜像,实际打包过程拉取base镜像,然后配置环境就可以了。官方的base镜像是X86平台下的,迁移到Arm64平台需要重新打包。除了redis外,大部分组件base镜像的迁移方式相同,本章节以core为例,如需要打包redis.base,请参考https://github.com/docker-library/redis。# 步骤 1 复制Dockerfile。 cd make/photon/core mkdir base cp Dockerfile.base base/Dockerfile cd base # 步骤 2 修改Dockerfile。 # 将photon:2.0修改为photon:3.0,是因为photon 3.0才开始支持aarch64。 sed -i "s/2.0/3.0/g" Dockerfile # 步骤 3 打包镜像。 # 镜像前缀和版本请自行填写,本例为xxxx和1.10.2,但是注意4.3章节替换时需对应上 docker build -t xxxx/harbor-core-base:1.10.2 .# 步骤 4 查看生成的镜像。 docker images |grep xxxx5 软件运行5.1 启动Harbor# 步骤 1 查看各个模块运行状态 docker-compose ps# 步骤 2 浏览器访问 6 FAQRedis 状态为down,查看日志报错“Unsupported system page size”redis在新版本中默认使用了jemalloc进行内存管理,由于jemalloc 在编译时就决定了page size的大小,而这个page size 会由于kernel的配置而改变,因此jemalloc在某个机器上编译,然后运行在其它机器上时可能会出现问题。这里出现这个报错的原因是docker镜像打包的环境pagesize为4k,而CentOS 7.6 for arm默认为64k解决方法:参照4.3章节修改redis源镜像信息 7 其他参考文档: http://ic-openlabs.huawei.com/openlab/#/knowledgebasequery?task_id=R1S1584D00303813520191125094129756587245
-
漏洞描述:Amazon Linux AMI 是由Amazon Web Services 提供的受支持和维护的 Linux 映像,用于 Amazon Elastic Compute Cloud (Amazon EC2)。它旨在为 Amazon EC2 上运行的应用程序提供稳定、安全和高性能的执行环境。它支持最新的EC2 实例类型功能,并包含能够轻松与 AWS 集成的软件包。根据最新公布的漏洞详情,Expat(又名libexpat)在XML_GetBuffer 中有一个符号整数溢出问题,用于具有非零 XML_CONTEXT_BYTES 的配置。攻击者可利用XML _GetBuffer中的整数溢出的问题,通过将特制数据传递给应用程序,从而触发整数溢出,导致在目标系统上执行任意代码。漏洞危害:该漏洞允许远程攻击者在目标系统上执行任意代码。维持或提升现有特权。恶意代码的传播与破坏可盗用用户或者进程的合法权限。使得攻击者在用户运行应用程序时执行恶意程序,并控制这个受影响的系统。影响范围:Expat Amazon Linux AMI= 2017.03漏洞等级:中危修复方案:厂商已发布升级修复漏洞,用户请尽快更新至安全版本。补丁名称:Expat Amazon Linux AMI 命令注入漏洞补丁补丁链接:https://alas.aws.amazon.com/cve/html/CVE-2022-23852.html
-
请求增加 RockyLinux镜像源,原CentOS Linux官方已经停止维护
-
目录- 1 软件介绍 - 2 环境配置 - 3 系统配置 - 3.1 配置华为镜像yum源(可选) - 4 软件安装 - 4.1 rpm包安装 - 4.2 Zip包安装 - 4.3 源码编译安装 - 5 软件运行 - 5.1 运行EMQ X - 6 其他1 软件介绍EMQ X (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。Erlang/OTP是出色的软实时 (Soft-Realtime)、低延时 (Low-Latency)、分布式 (Distributed)的语言平台。MQTT 是轻量的 (Lightweight)、发布订阅模式 (PubSub) 的物联网消息协议。EMQ X 设计目标是实现高可靠,并支持承载海量物联网终端的MQTT连接,支持在海量物联网设备间低延时消息路由:稳定承载大规模的 MQTT 客户端连接,单服务器节点支持50万到100万连接。分布式节点集群,快速低延时的消息路由,单集群支持1000万规模的路由。消息服务器内扩展,支持定制多种认证方式、高效存储消息到后端数据库。完整物联网协议支持,MQTT、MQTT-SN、CoAP、LwM2M、WebSocket 或私有协议支持。 2 环境配置本文档基于TaiShan 200服务器硬件环境展开。服务器TaiShan 200 2280处理器2*KunPeng 920 4826内存16*32G 2666MHz系统盘1 * 1.2T SATA HDD数据盘1 * 960G SSD网络1 * GE(板载) 1 * 10GE(1822) 软件平台软件名称版本号安装方法备注CentOS7.6https://support.huawei.com/enterprise/zh/doc/EDOC1100088654/3e971c8d本文档安装过程选择的环境为“Server with GUI”,并附加了“Development Tools”。Gcc4.8.5Yum源安装 3 系统配置3.1 配置华为镜像yum源(可选)若环境无外网条件,请配置本地源。# 步骤 1 安装依赖 yum install –y wget # 步骤 2 备份配置文件 cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak # 步骤 3 下载配置文件 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.huaweicloud.com/repository/conf/CentOS-AltArch-7.repo # 步骤 4 刷新缓存 yum clean all yum makecache 4 软件安装4.1 – 4.3是三种安装方式,请根据需求选择一种即可。4.1 rpm包安装EMQ X从4.2.0开始,官方提供CentOS 7 aach64的rpm包,可直接下载rpm包安装,低于4.2.0的版本,可采用源码编译安装的方式。# 步骤 1 下载emqx 4.2.0 rpm包。 wget https://www.emqx.io/downloads/broker/v4.2.0/emqx-centos7-4.2.0-aarch64.rpm # 步骤 2 安装rpm包。 rpm -ivh emqx-centos7-4.2.0-aarch64.rpm4.2 Zip包安装EMQ X从4.2.0开始,官方提供CentOS 7 aach64的zip包,可直接下载zip包安装,低于4.2.0的版本,可采用源码编译安装的方式。# 步骤 1 下载emqx 4.2.0 zip包。 # 实际目录请自行选择,这里以home为例 cd /home wget https://www.emqx.io/downloads/broker/v4.2.0/emqx-centos7-4.2.0-aarch64.zip # 步骤 2 解压并进入目录。 unzip emqx-centos7-4.2.0-aarch64.zip && cd emqx # 步骤 3 配置环境变量。 echo export PATH=/home/emqx/bin:$PATH >> /etc/profile source /etc/profile4.3 源码编译安装# 步骤 1 安装依赖。 yum install -y gcc* libtool libtool-ltdl-devel libevent-devel lua ncurses-devel openssl-devel flex # 步骤 2 下载并解压erlang 22.0。 # 编译EMQ X 3.2之后的版本要求erlang版本不低于21.3 wget http://erlang.org/download/otp_src_22.0.tar.gz tar –zxvf otp_src_20.0.tar.gz && cd otp_src_22.0 # 步骤 3 编译安装erlang。 # -j96 参数充分利用多核CPU优势,加快编译速度,可以用lscpu查看总共有多少核 ./configure make –j96 && make install # 步骤 4 下载EMQX 4.2.0源码。 # 实际目录请自行选择,这里以home为例 cd /home git clone -b v4.2.0 https://github.com/emqx/emqx-rel.git cd emqx-rel # 步骤 5 添加编译变量。 export EMQX_DEPS_DEFAULT_VSN=v4.0.0 # 步骤 6 执行编译。 make –j96 # 步骤 7 配置环境变量。 echo export PATH=/home/emqx-rel/_build/emqx/rel/emqx/bin:$PATH >> /etc/profile source /etc/profile5 软件运行5.1 运行EMQ X# 步骤 1 启动EMQ X emqx start# 步骤 2 查询运行状态 emqx_ctl status# 步骤 3 停止EMQ X emqx stop6 其他参考文档:https://www.huaweicloud.com/kunpeng/software/erlang.htmlhttps://docs.emqx.net/broker/latest/cn/getting-started/install.html#build
-
目录- 1 软件介绍 - 2 环境配置 - 3 系统配置 - 3.1 配置华为镜像yum源(可选) - 4 软件安装 - 4.1 依赖安装安装 - 4.2 Openssl安装 - 4.3 Proxysql编译安装 - 4.4 Proxysql打包RPM包(可选) - 5 软件运行 - 5.1 运行测试 -6 其他1 软件介绍ProxySQL 是基于 MySQL 的一款开源的中间件的产品,是一个灵活的 MySQL 代理层,可以实现读写分离,支持 Query 路由功能,支持动态指定某个 SQL 进行缓存,支持动态加载(无需重启 ProxySQL 服务),故障切换和一些 SQL 的过滤功能。 2 环境配置本文档基于TaiShan 200服务器硬件环境展开。服务器TaiShan 200 2280处理器2*KunPeng 920 4826内存16*32G 2666MHz系统盘1 * 1.2T SATA HDD数据盘1 * 960G SSD网络1 * GE(板载) 1 * 10GE(1822) 软件平台软件名称版本号安装方法备注CentOS7.6https://support.huawei.com/enterprise/zh/doc/EDOC1100088654/3e971c8d本文档安装过程选择的环境为“Server with GUI”,并附加了“Development Tools”。Gcc4.8.5Yum源安装 Openssl1.1.1g详见4.2章节依赖1.1.0后的版本 3 系统配置3.1 配置华为镜像yum源(可选)若环境无外网条件,请配置本地源。# 步骤 1 安装依赖 yum install –y wget # 步骤 2 备份配置文件 cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak # 步骤 3 下载配置文件 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.huaweicloud.com/repository/conf/CentOS-AltArch-7.repo # 步骤 4 刷新缓存 yum clean all yum makecache4 软件安装4.1 依赖安装安装# 步骤 1 Yum源安装依赖。 yum install –y automake bzip2 cmake make gcc-c++ gcc git openssl openssl-devel gnutls gnutls-devel libtool patch4.2 Openssl安装# 步骤 1 下载并解压openssl 1.1.1g。 # 实际目录请自行选择,这里以home为例 cd /home wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz tar –zxvf openssl-1.1.1g.tar.gz && cd openssl-1.1.1g # 步骤 2 配置编译选项。 ./config # 步骤 3 编译安装。 # -j后面参数建议填写CPU核数,可使用lscpu查看 make –j96 && make install4.3 Proxysql编译安装# 步骤 1 下载Proxysql v2.0.15。 git clone –b v2.0.15 https://github.com/sysown/proxysql.git cd proxysql # 步骤 2 编译。 make –j96 # 这里执行完会在src目录生成proxysql的可执行文件,此时已经可以直接使用,安装只是将相关文件放到bin目录下 # 步骤 3 安装。 make install4.4 Proxysql打包RPM包(可选)# 步骤 1 下载Proxysql v2.0.15。 git clone –b v2.0.15 https://github.com/sysown/proxysql.git cd proxysql # 步骤 2 安装依赖。 # Proxysql使用docker镜像来打包rpm包,需要安装docker和docker-compose yum install -y yum-utils epel-release yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce-3:19.03.7-3.el7.aarch64 docker-compose systemctl start docker # 步骤 3 打包rpm。 # 这一步需要根据目标安装机器的操作系统版本来打包,这里以centos7_arm64为例,可以通过Makefile查看支持哪些操作系统 make centos7_arm64 # 打包完成后,会在binaries文件夹生成对应的rpm包5 软件运行5.1 运行测试# 步骤 1 登录管理端口 # 默认管理账号admin,密码admin,管理端口6032,客户端口6033 mysql –uadmin –padmin -h127.0.0.1 –P6032# 步骤 2 添加服务器信息 # mysql服务信息请以实际情况为准 Mysql> insert into mysql_servers(hostgroup_id,hostname,port) values(10,'127.0.0.1',3306); Mysql> insert into mysql_servers(hostgroup_id,hostname,port) values(10,'127.0.0.1',3307); # 步骤 3 保存修改 Mysql> load mysql servers to runtime; Mysql> save mysql servers to disk; # 步骤 4 在两个mysql服务添加监控账号 Mysql> create user monitor@'%' identified by '123'; Mysql> grant all on *.* to monitor@'%'; # 步骤 5 proxysql 管理端口配置监控账号信息 Mysql> set mysql-monitor_username='monitor'; Mysql> set mysql-monitor_password='123'; Mysql> load mysql servers to runtime; Mysql> save mysql servers to disk; # 步骤 6 检查监控状态 Mysql> select * from mysql_server_connect_log;6 其他参考文档:https://github.com/sysown/proxysql/blob/v2.1.0/INSTALL.mdhttps://blog.csdn.net/qq_31144297/article/details/103988435
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签