如何接单做网站第一个做电子商务的网站

张小明 2026/1/7 16:36:26
如何接单做网站,第一个做电子商务的网站,wordpress doshortcode,索象营销传播集团Ubuntu datasophon1.2.1 二开之二#xff1a;解决三大监控组件安装后#xff0c;启动失败#xff1a;报缺失common.sh背景问题解决最后背景 在上次安装集群成功后#xff0c;继续往下安装监控三大组件#xff1a;AlertManager,Prometheus,Grafana.已经做好安装失败准备 …Ubuntu datasophon1.2.1 二开之二解决三大监控组件安装后启动失败报缺失common.sh背景问题解决最后背景在上次安装集群成功后继续往下安装监控三大组件AlertManager,Prometheus,Grafana.已经做好安装失败准备问题结果安装后启动报common.sh找不到为何找不到呢我看压缩包也有啊tar命令没看出问题。后来问一下ai说缺少个参数–strip-components1后来详细了解一下这个参数作用 去掉第一层目录解决根据ai提示修改了InstallServiceHandler.java,主要是decompressTarGzdecompressWithStripComponents方法/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the License); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an AS IS BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */packagecom.datasophon.worker.handler;importcn.hutool.core.io.FileUtil;importcn.hutool.core.io.StreamProgress;importcn.hutool.core.lang.Console;importcn.hutool.http.HttpUtil;importcom.datasophon.common.Constants;importcom.datasophon.common.cache.CacheUtils;importcom.datasophon.common.command.InstallServiceRoleCommand;importcom.datasophon.common.model.RunAs;importcom.datasophon.common.utils.ExecResult;importcom.datasophon.common.utils.FileUtils;importcom.datasophon.common.utils.PropertyUtils;importcom.datasophon.common.utils.ShellUtils;importcom.datasophon.worker.utils.TaskConstants;importlombok.Data;importorg.apache.commons.lang.StringUtils;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importjava.io.File;importjava.util.ArrayList;importjava.util.Objects;DatapublicclassInstallServiceHandler{privatestaticfinalStringHADOOPhadoop;privateStringserviceName;privateStringserviceRoleName;privateLoggerlogger;publicInstallServiceHandler(StringserviceName,StringserviceRoleName){this.serviceNameserviceName;this.serviceRoleNameserviceRoleName;StringloggerNameString.format(%s-%s-%s,TaskConstants.TASK_LOG_LOGGER_NAME,serviceName,serviceRoleName);loggerLoggerFactory.getLogger(loggerName);}publicExecResultinstall(InstallServiceRoleCommandcommand){ExecResultexecResultnewExecResult();try{StringdestDirConstants.INSTALL_PATHConstants.SLASHDDP/packagesConstants.SLASH;StringpackageNamecommand.getPackageName();StringpackagePathdestDirpackageName;BooleanneedDownLoad!Objects.equals(PropertyUtils.getString(Constants.MASTER_HOST),CacheUtils.get(Constants.HOSTNAME))isNeedDownloadPkg(packagePath,command.getPackageMd5());if(Boolean.TRUE.equals(needDownLoad)){downloadPkg(packageName,packagePath);}booleanresultdecompressPkg(packageName,command.getDecompressPackageName(),command.getRunAs(),packagePath);execResult.setExecResult(result);}catch(Exceptione){execResult.setExecOut(e.getMessage());e.printStackTrace();}returnexecResult;}privateBooleanisNeedDownloadPkg(StringpackagePath,StringpackageMd5){BooleanneedDownLoadtrue;logger.info(Remote package md5 is {},packageMd5);if(FileUtil.exist(packagePath)){// check md5Stringmd5FileUtils.md5(newFile(packagePath));logger.info(Local md5 is {},md5);if(StringUtils.isNotBlank(md5)packageMd5.trim().equals(md5.trim())){needDownLoadfalse;}}returnneedDownLoad;}privatevoiddownloadPkg(StringpackageName,StringpackagePath){StringmasterHostPropertyUtils.getString(Constants.MASTER_HOST);StringmasterPortPropertyUtils.getString(Constants.MASTER_WEB_PORT);StringdownloadUrlhttp://masterHost:masterPort/ddh/service/install/downloadPackage?packageNamepackageName;logger.info(download url is {},downloadUrl);HttpUtil.downloadFile(downloadUrl,FileUtil.file(packagePath),newStreamProgress(){Overridepublicvoidstart(){Console.log(start to install。。。。);}Overridepublicvoidprogress(longprogressSize,longl1){Console.log(installed{},FileUtil.readableFileSize(progressSize));}Overridepublicvoidfinish(){Console.log(install success);}});logger.info(download package {} success,packageName);}privatebooleandecompressPkg(StringpackageName,StringdecompressPackageName,RunAsrunAs,StringpackagePath){StringinstallPathConstants.INSTALL_PATH;StringtargetDirinstallPathConstants.SLASHdecompressPackageName;logger.info(Target directory for decompression: {},targetDir);// 确保父目录存在FileparentDirnewFile(installPath);if(!parentDir.exists()){parentDir.mkdirs();}BooleandecompressResultdecompressTarGz(packagePath,targetDir);// 直接解压到目标目录if(Boolean.TRUE.equals(decompressResult)){// 验证解压结果if(FileUtil.exist(targetDir)){logger.info(Verifying installation in: {},targetDir);File[]filesnewFile(targetDir).listFiles();booleanhasControlShfalse;booleanhasBinaryfalse;if(files!null){for(Filefile:files){if(file.getName().equals(control.sh)){hasControlShtrue;}if(file.getName().equals(decompressPackageName.split(-)[0])){hasBinarytrue;}}}logger.info(control.sh exists: {}, binary exists: {},hasControlSh,hasBinary);if(Objects.nonNull(runAs)){ShellUtils.exceShell( chown -R runAs.getUser():runAs.getGroup() targetDir);}ShellUtils.exceShell( chmod -R 775 targetDir);returntrue;}}returnfalse;}publicBooleandecompressTarGz(StringsourceTarGzFile,StringtargetDir){logger.info(Start to use tar -zxvf to decompress {} to {},sourceTarGzFile,targetDir);// 新增创建目标目录如果不存在 - 增强版本FiletargetDirFilenewFile(targetDir);if(!targetDirFile.exists()){logger.info(Target directory does not exist, creating: {},targetDir);// 尝试创建目录booleancreatedtargetDirFile.mkdirs();if(!created){logger.error(Failed to create target directory: {},targetDir);// 添加更多诊断信息FileparentDirtargetDirFile.getParentFile();if(parentDir!null){logger.error(Parent directory exists: {}, writable: {},parentDir.exists(),parentDir.canWrite());}// 检查是否有权限问题logger.error(Current user: {},System.getProperty(user.name));returnfalse;}logger.info(Successfully created target directory: {},targetDir);}// 1. 首先列出tar包中的文件数量inttarFileCountgetTarFileCount(sourceTarGzFile);logger.info(Tar file contains {} files/directories,tarFileCount);// 2. 记录目标目录当前的文件数量intinitialFileCounttargetDirFile.exists()?(targetDirFile.listFiles()!null?targetDirFile.listFiles().length:0):0;// 3. 执行解压使用 --strip-components1ArrayListStringcommandnewArrayList();command.add(tar);command.add(-zxvf);command.add(sourceTarGzFile);command.add(-C);command.add(targetDir);command.add(--strip-components1);ExecResultexecResultShellUtils.execWithStatus(targetDir,command,120,logger);// 4. 验证解压结果if(execResult.getExecResult()){// 等待文件系统同步try{Thread.sleep(1000);}catch(InterruptedExceptione){// ignore}// 检查目标目录的文件数量intfinalFileCounttargetDirFile.exists()?(targetDirFile.listFiles()!null?targetDirFile.listFiles().length:0):0;intextractedFileCountfinalFileCount-initialFileCount;logger.info(Initial files: {}, Final files: {}, Extracted files: {},initialFileCount,finalFileCount,extractedFileCount);if(extractedFileCount0){logger.info(Decompression successful, extracted {} files to {},extractedFileCount,targetDir);// 列出前几个文件作为验证File[]filestargetDirFile.listFiles();if(files!null){intlimitMath.min(files.length,5);for(inti0;ilimit;i){logger.debug(Extracted file: {},files[i].getName());}}// 关键文件验证if(sourceTarGzFile.contains(alertmanager)){FilecontrolShnewFile(targetDirConstants.SLASHcontrol.sh);FilebinarynewFile(targetDirConstants.SLASHalertmanager);if(!controlSh.exists()||!binary.exists()){logger.error(Missing key files after decompression: control.sh{}, alertmanager{},controlSh.exists(),binary.exists());returnfalse;}}elseif(sourceTarGzFile.contains(prometheus)){FilecontrolShnewFile(targetDirConstants.SLASHcontrol.sh);FilebinarynewFile(targetDirConstants.SLASHprometheus);if(!controlSh.exists()||!binary.exists()){logger.error(Missing key files after decompression: control.sh{}, prometheus{},controlSh.exists(),binary.exists());returnfalse;}}returntrue;}else{logger.error(No files extracted! Something went wrong with decompression.);returnfalse;}}logger.error(Decompression command failed: {},execResult.getExecOut());returnfalse;}/** * 获取tar包中的文件数量 */privateintgetTarFileCount(StringtarFile){try{ArrayListStringcommandnewArrayList();command.add(tar);command.add(-tzf);command.add(tarFile);ExecResultexecResultShellUtils.execWithStatus(.,command,30,logger);if(execResult.getExecResult()execResult.getExecOut()!null){// 按行分割统计非空行String[]linesexecResult.getExecOut().split(\n);intcount0;for(Stringline:lines){if(line!null!line.trim().isEmpty()){count;}}returncount;}}catch(Exceptione){logger.warn(Failed to count tar files: {},e.getMessage());}return-1;// 未知}privateBooleandecompressWithStripComponents(StringsourceTarGzFile,StringtargetDir){logger.info(Retrying decompression with --strip-components1);ArrayListStringcommandnewArrayList();command.add(tar);command.add(-zxvf);command.add(sourceTarGzFile);command.add(-C);command.add(targetDir);command.add(--strip-components1);ExecResultexecResultShellUtils.execWithStatus(targetDir,command,120,logger);if(execResult.getExecResult()){// 验证解压的文件StringpackageNameextractPackageName(sourceTarGzFile);FiletargetDirFilenewFile(targetDir);File[]filestargetDirFile.listFiles((dir,name)-name.contains(packageName.split(-)[0]));if(files!nullfiles.length0){logger.info(Decompression with --strip-components1 successful);returntrue;}}returnfalse;}privateStringextractPackageName(StringtarFile){StringfileNamenewFile(tarFile).getName();// 移除 .tar.gz 或 .tgz 后缀if(fileName.endsWith(.tar.gz)){returnfileName.substring(0,fileName.length()-7);}elseif(fileName.endsWith(.tgz)){returnfileName.substring(0,fileName.length()-4);}returnfileName;}privatevoidchangeHadoopInstallPathPerm(StringdecompressPackageName){ShellUtils.exceShell( chown -R root:hadoop Constants.INSTALL_PATHConstants.SLASHdecompressPackageName);ShellUtils.exceShell( chmod 755 Constants.INSTALL_PATHConstants.SLASHdecompressPackageName);ShellUtils.exceShell( chmod -R 755 Constants.INSTALL_PATHConstants.SLASHdecompressPackageName/etc);ShellUtils.exceShell( chmod 6050 Constants.INSTALL_PATHConstants.SLASHdecompressPackageName/bin/container-executor);ShellUtils.exceShell( chmod 400 Constants.INSTALL_PATHConstants.SLASHdecompressPackageName/etc/hadoop/container-executor.cfg);ShellUtils.exceShell( chown -R yarn:hadoop Constants.INSTALL_PATHConstants.SLASHdecompressPackageName/logs/userlogs);ShellUtils.exceShell( chmod 775 Constants.INSTALL_PATHConstants.SLASHdecompressPackageName/logs/userlogs);}}最后安装成功后界面截图总览AlertManager:Prometheus:Grafana:界面还是挺酷的总览监控了集群所有节点但是后面三大组件好像只是localhost节点(ddp1),这是美中不足。如果有哪位高手知道如何修改可以沟通指点一下lita2lz
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做网站公司做网站公司有哪些泰州网站建设策划方案

Dify-Plus:构建企业级AI应用平台的完整指南 🚀 【免费下载链接】dify-plus Dify-Plus 是 Dify 的企业级增强版,集成了基于 gin-vue-admin 的管理中心,并针对企业场景进行了功能优化。 🚀 Dify-Plus 管理中心 Dify 二…

张小明 2026/1/7 16:36:26 网站建设

四川省工程建设管理协会网站哪个网站可以做竖屏

PCL2-CE社区版:打造你的专属Minecraft启动器体验 【免费下载链接】PCL2-CE PCL2 社区版,可体验上游暂未合并的功能 项目地址: https://gitcode.com/gh_mirrors/pc/PCL2-CE 想要告别千篇一律的Minecraft启动器界面吗?PCL2-CE社区增强版…

张小明 2026/1/7 16:35:54 网站建设

网站虚拟空间购买合肥网站建设的公司

Libertinus字体完全指南:从专业排版到创意设计的终极解决方案 【免费下载链接】libertinus The Libertinus font family 项目地址: https://gitcode.com/gh_mirrors/li/libertinus 在数字内容创作日益重要的今天,选择一款优秀的字体往往能决定文档…

张小明 2026/1/7 16:34:50 网站建设

网站 虚拟空间内容电商网站有哪些

在大数据技术迅猛发展的今天,Apache Parquet格式已成为数据湖和数仓中的核心存储标准。然而,面对这些二进制格式的复杂数据文件,数据工程师们常常陷入"看得见摸不着"的困境。ParquetViewer应运而生,它不仅仅是一个查看工…

张小明 2026/1/7 16:34:18 网站建设

网站运营与管理的心得体会网站后台管理系统功能

3D打印螺纹技术突破:Fusion 360智能适配系统深度解析 【免费下载链接】CustomThreads Fusion 360 Thread Profiles for 3D-Printed Threads 项目地址: https://gitcode.com/gh_mirrors/cu/CustomThreads 你是否曾因3D打印螺纹配合不良而项目受阻?…

张小明 2026/1/7 16:33:45 网站建设

公司做网站需要准备什么东西外国食品优秀设计网站

终极shadPS4配置指南:从零到精通完整教程 【免费下载链接】shadPS4 shadPS4 是一个PlayStation 4 模拟器,支持 Windows、Linux 和 macOS 系统,用 C 编写。还提供了调试文档、键盘鼠标映射说明等,方便用户使用。源项目地址&#xf…

张小明 2026/1/7 16:32:40 网站建设