{"id":21803113,"url":"https://github.com/litongjava/ping-base64-webapi","last_synced_at":"2025-03-21T07:16:16.506Z","repository":{"id":173748700,"uuid":"611698464","full_name":"litongjava/ping-base64-webapi","owner":"litongjava","description":"ping-base64-webapi是一款使用go语言开发用于自动部署的的Web服务 主要功能  将运行命令通过base54加密发送到服务端,服务器端通过base54进行解密,解密后执行命令 支持文件上传和解压(用于部署前端项目) 支持文件上传,解压和运行命令(用于部署后台项目) 主要业务逻辑  接受上传文件,解压,移动到指定目录,并执行启动命令","archived":false,"fork":false,"pushed_at":"2024-03-12T09:58:55.000Z","size":43,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-26T04:09:41.904Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/litongjava.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-09T11:11:54.000Z","updated_at":"2024-04-26T07:15:51.000Z","dependencies_parsed_at":"2024-11-27T14:33:20.091Z","dependency_job_id":null,"html_url":"https://github.com/litongjava/ping-base64-webapi","commit_stats":null,"previous_names":["litongjava/ping-base64-webapi"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/litongjava%2Fping-base64-webapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/litongjava%2Fping-base64-webapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/litongjava%2Fping-base64-webapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/litongjava%2Fping-base64-webapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/litongjava","download_url":"https://codeload.github.com/litongjava/ping-base64-webapi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244752362,"owners_count":20504256,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-27T11:38:31.392Z","updated_at":"2025-03-21T07:16:16.482Z","avatar_url":"https://github.com/litongjava.png","language":"Python","readme":"# ping-base64-webapi\n# 1.简介\nping-base64-webapi是一款使用go语言开发用于自动部署的的Web服务\n主要功能\n- 将运行命令通过base54加密发送到服务端,服务器端通过base54进行解密,解密后执行命令\n- 支持文件上传和解压(用于部署前端项目)\n- 支持文件上传,解压和运行命令(用于部署后台项目)\n\n主要业务逻辑\n- 接受上传文件,解压,移动到指定目录,并执行启动命令\n\n# 2.安装\n## 2.1.安装服务端\n下载\n```\nmkdir -p /data/package/\ncd /data/package/\nwget https://github.com/litongjava/ping-base64-webapi/releases/download/v0.1.0/ping-base64-webapi-linux-amd64.zip\n```\n\n解压\n```\nunzip ping-base64-webapi-linux-amd64.zip -d /opt\nmv ping-base64-webapi-linux-amd64 ping-base64-webapi\n```\n\n启动\n```\ncd /opt/ping-base64-webapi\nchmod u+x ping-base64-webapi\n/opt/ping-base64-webapi/ping-base64-webapi\n```\n测试服务是否启动成功\n```\ncurl http://localhost:10405/status\n```\n\n## 2.2.配置开机启动\n使用root用户\n```\nvi /etc/systemd/system/ping-base64-webapi.service\n```\n\n```\n[Unit]\nDescription=ping-base64-webapi\nAfter=network.target\n\n[Service]\nType=simple\nUser=root\nRestart=on-failure\nRestartSec=5s\nWorkingDirectory = /opt/ping-base64-webapi\nExecStart=/opt/ping-base64-webapi/ping-base64-webapi\n\n[Install]\nWantedBy=multi-user.target\n```\n\n使用appadmin用户启动\n```\nvi /etc/systemd/system/ping-base64-webapi.service\n```\n\n```\n[Unit]\nDescription=ping-base64-webapi\nAfter=network.target\n\n[Service]\nType=simple\nUser=appadmin\nRestart=on-failure\nRestartSec=5s\nWorkingDirectory = /home/appadmin/opt/ping-base64-webapi\nExecStart=/home=/home/appadmin/opt/ping-base64-webapi/ping-base64-webapi\n\n[Install]\nWantedBy=multi-user.target\n```\n启动\n```\nsystemctl daemon-reload\nsystemctl enable ping-base64-webapi\nsystemctl stop ping-base64-webapi\nsudo systemctl start ping-base64-webapi\nsudo systemctl status ping-base64-webapi\n```\n## 2.3.配置nginx\n使用nginx代理ping-base64-webapi\n```\nlocation /ping-base64-webapi/ {\n  proxy_pass http://localhost:10405/;\n  proxy_pass_header Set-Cookie;\n  proxy_set_header Host $host;\n}\n```\n\n测试\n```\ncurl http://localhost/ping-base64-webapi/status\n```\n\n指定代理前缀路径,代理前缀路径通常是工程命令,例如robot-api\n```\nlocation /robot-api/ping-base64-webapi/ {\n  proxy_pass http://localhost:10405/;\n  proxy_pass_header Set-Cookie;\n  proxy_set_header Host $host;\n}\n```\n\n测试\n```\ncurl http://localhost/robot-api/ping-base64-webapi/status\n```\n\n# 3.使用\n## 3.1.部署Spring-boot项目\n### 3.1.1.修改Spring-boot项目\n添加src/main/resources/loader.properties \n```\n# 配置启动时外置依赖加载目录，只加载应用根目录下的lib/\nloader.path=file:./lib\n```\n\n修改pom.xml的properties添加assembly,spring-boot.version和main.class\n```\n    \u003cspring-boot.version\u003e2.5.6\u003c/spring-boot.version\u003e\n    \u003cassembly\u003efull\u003c/assembly\u003e\n    \u003c!-- \u003cassembly\u003efull\u003c/assembly\u003e --\u003e\n\u003cmain.class\u003ecom.xxx.ServiceTestApplication\u003c/main.class\u003e\n\n```\n修改pom.xml的build的plugins配置\npring-boot-maven-plugin\nmaven-dependency-plugin \nmaven-assembly-plugin\n```\n  \u003cbuild\u003e\n    \u003cplugins\u003e\n      \u003cplugin\u003e\n        \u003cgroupId\u003eorg.springframework.boot\u003c/groupId\u003e\n        \u003cartifactId\u003espring-boot-maven-plugin\u003c/artifactId\u003e\n        \u003cversion\u003e${spring-boot.version}\u003c/version\u003e\n        \u003cconfiguration\u003e\n          \u003c!--使该插件支持热启动 --\u003e\n          \u003cfork\u003etrue\u003c/fork\u003e\n          \u003c!-- main 入口 --\u003e\n          \u003cmainClass\u003e${main.class}\u003c/mainClass\u003e\n          \u003c!-- 设置为ZIP，此模式下spring-boot-maven-plugin会将Manifest.MF文件中的Main-Class设置为org.springframework.boot.loader.PropertiesLauncher --\u003e\n          \u003clayout\u003eZIP\u003c/layout\u003e\n          \u003cincludes\u003e\n            \u003cinclude\u003e\n              \u003cgroupId\u003eorg.psyduck\u003c/groupId\u003e\n              \u003cartifactId\u003epsyduck-admin\u003c/artifactId\u003e\n            \u003c/include\u003e\n          \u003c/includes\u003e\n        \u003c/configuration\u003e\n        \u003cexecutions\u003e\n          \u003cexecution\u003e\n            \u003cgoals\u003e\n              \u003cgoal\u003erepackage\u003c/goal\u003e\u003c!--可以把依赖的包都打包到生成的Jar包中 --\u003e\n            \u003c/goals\u003e\n          \u003c/execution\u003e\n        \u003c/executions\u003e\n      \u003c/plugin\u003e\n      \u003c!--maven-dependency-plugin --\u003e\n      \u003cplugin\u003e\n        \u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\n        \u003cartifactId\u003emaven-dependency-plugin\u003c/artifactId\u003e\n        \u003cversion\u003e3.2.0\u003c/version\u003e\n        \u003cexecutions\u003e\n          \u003cexecution\u003e\n            \u003cid\u003ecopy-dependencies\u003c/id\u003e\n            \u003cphase\u003eprepare-package\u003c/phase\u003e\n            \u003cgoals\u003e\n              \u003cgoal\u003ecopy-dependencies\u003c/goal\u003e\n            \u003c/goals\u003e\n            \u003cconfiguration\u003e\n              \u003c!-- 第三方依赖的存放目录，最终生成到target/lib --\u003e\n              \u003coutputDirectory\u003e${project.build.directory}/lib\u003c/outputDirectory\u003e\n              \u003c!-- 需要排除的jar的 groupId --\u003e\n              \u003cexcludeGroupIds\u003e\n                org.psyduck\n              \u003c/excludeGroupIds\u003e\n              \u003c!-- 默认为test，会复制所有依赖，只需要复制runtime的依赖 --\u003e\n              \u003cincludeScope\u003e\n                runtime\n              \u003c/includeScope\u003e\n            \u003c/configuration\u003e\n          \u003c/execution\u003e\n        \u003c/executions\u003e\n      \u003c/plugin\u003e\n      \u003c!-- 组装文件并压缩zip插件 --\u003e\n      \u003cplugin\u003e\n        \u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\n        \u003cartifactId\u003emaven-assembly-plugin\u003c/artifactId\u003e\n        \u003cversion\u003e3.3.0\u003c/version\u003e\n        \u003cconfiguration\u003e\n          \u003c!-- not append assembly id in release file name --\u003e\n          \u003cappendAssemblyId\u003efalse\u003c/appendAssemblyId\u003e\n          \u003cdescriptors\u003e\n            \u003cdescriptor\u003eassembly-${assembly}.xml\u003c/descriptor\u003e\n          \u003c/descriptors\u003e\n        \u003c/configuration\u003e\n        \u003cexecutions\u003e\n          \u003cexecution\u003e\n            \u003cid\u003emake-assembly\u003c/id\u003e\n            \u003cphase\u003epackage\u003c/phase\u003e\n            \u003cgoals\u003e\n              \u003cgoal\u003esingle\u003c/goal\u003e\n            \u003c/goals\u003e\n          \u003c/execution\u003e\n        \u003c/executions\u003e\n      \u003c/plugin\u003e\n    \u003c/plugins\u003e\n  \u003c/build\u003e\n```\n在项目根目录下添加assembly文件\nassembly-full.xml\n```\n\u003cassembly xmlns=\"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0\"\n          xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n          xsi:schemaLocation=\"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd\"\u003e\n  \u003cid\u003ezipPackage\u003c/id\u003e\n  \u003cformats\u003e\n    \u003cformat\u003ezip\u003c/format\u003e\n  \u003c/formats\u003e\n  \u003cincludeBaseDirectory\u003efalse\u003c/includeBaseDirectory\u003e\n  \u003cfileSets\u003e\n    \u003cfileSet\u003e\n      \u003cdirectory\u003e${project.build.directory}\u003c/directory\u003e\n      \u003coutputDirectory\u003e${file.separator}\u003c/outputDirectory\u003e\n      \u003cincludes\u003e\n        \u003cinclude\u003e*.jar\u003c/include\u003e\n      \u003c/includes\u003e\n    \u003c/fileSet\u003e\n    \u003c!--打包targ/lib--\u003e\n    \u003cfileSet\u003e\n      \u003cdirectory\u003e${project.build.directory}/lib\u003c/directory\u003e\n      \u003coutputDirectory\u003elib\u003c/outputDirectory\u003e\n      \u003cincludes\u003e\n        \u003cinclude\u003e*.jar\u003c/include\u003e\n      \u003c/includes\u003e\n    \u003c/fileSet\u003e\n\n    \u003c!-- 项目根下面的脚本文件 copy 到根目录下 --\u003e\n    \u003cfileSet\u003e\n      \u003cdirectory\u003e${basedir}/src/main/bin\u003c/directory\u003e\n      \u003clineEnding\u003eunix\u003c/lineEnding\u003e\n      \u003coutputDirectory\u003e\u003c/outputDirectory\u003e\n      \u003c!-- 脚本文件在 linux 下的权限设为 755，无需 chmod 可直接运行 --\u003e\n      \u003cfileMode\u003e755\u003c/fileMode\u003e\n      \u003cincludes\u003e\n        \u003cinclude\u003e*.sh\u003c/include\u003e\n        \u003cinclude\u003e*.service\u003c/include\u003e\n      \u003c/includes\u003e\n    \u003c/fileSet\u003e\n\n    \u003cfileSet\u003e\n      \u003cdirectory\u003e${project.build.directory}/../../native-config\u003c/directory\u003e\n      \u003coutputDirectory\u003econfig\u003c/outputDirectory\u003e\n      \u003cincludes\u003e\n        \u003cinclude\u003e*.yml\u003c/include\u003e\n      \u003c/includes\u003e\n    \u003c/fileSet\u003e\n  \u003c/fileSets\u003e\n\u003c/assembly\u003e\n```\nassembly-thin.xml\n```\n\u003cassembly xmlns=\"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0\"\n          xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n          xsi:schemaLocation=\"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd\"\u003e\n  \u003cid\u003ezipPackage\u003c/id\u003e\n  \u003cformats\u003e\n    \u003cformat\u003ezip\u003c/format\u003e\n  \u003c/formats\u003e\n  \u003cincludeBaseDirectory\u003efalse\u003c/includeBaseDirectory\u003e\n  \u003cfileSets\u003e\n    \u003cfileSet\u003e\n      \u003cdirectory\u003e${project.build.directory}\u003c/directory\u003e\n      \u003coutputDirectory\u003e${file.separator}\u003c/outputDirectory\u003e\n      \u003cincludes\u003e\n        \u003cinclude\u003e*.jar\u003c/include\u003e\n      \u003c/includes\u003e\n    \u003c/fileSet\u003e\n\n    \u003cfileSet\u003e\n      \u003cdirectory\u003e${project.build.directory}/../../native-config\u003c/directory\u003e\n      \u003coutputDirectory\u003econfig\u003c/outputDirectory\u003e\n      \u003cincludes\u003e\n        \u003cinclude\u003e*.yml\u003c/include\u003e\n      \u003c/includes\u003e\n    \u003c/fileSet\u003e\n  \u003c/fileSets\u003e\n\u003c/assembly\u003e\n```\n### 3.1.2.构建Spring-boot项目\n\n全量包：\n```\nset JAVA_HOME=D:\\\\dev_program\\\\java\\\\jdk1.8.0_121\nmvnd clean package -DskipTests -Dassembly=full\n```\n瘦子包：\n```\nset JAVA_HOME=D:\\\\dev_program\\\\java\\\\jdk1.8.0_121\nmvnd clean package -DskipTests -Dassembly=thin\n```\n构建完成后会生成\ntarget\\spring-boot-table-to-json-1.0.zip\n第一次不是打包成全量包后续部署如果依赖没有变化可以打包成瘦子包\n### 3.1.3.基于python脚本部署Spring-Boot项目\n添加python脚本到服务器\n```\nmkdir -p /data/apps/webapps/package/\ncd /data/apps/webapps/package/\nwget https://raw.githubusercontent.com/litongjava/ping-base64-webapi/main/script/deploy-root.py\n```\n\n客户端发送命令调用脚本进行部署\n添加upload-run.bat内容如下\n```\nset JAVA_HOME=D:\\\\dev_program\\\\java\\\\jdk1.8.0_121\nmvnd clean package -DskipTests -Dassembly=thin\nping-base64-client -url http://192.168.3.9:10405/file/upload-run/ -file target\\spring-boot-table-to-json-1.0.zip -m /data/apps/webapps/package -c \"python2.7 /data/apps/webapps/package/deploy-root.py -s spring-boot -m spring-boot-table-to-json -pg spring-boot-table-to-json-1.0.zip -p 8021 -a update\"\n```\n输出\"success\":true 表示部署成功\n这里使用了ping-base64-client  \nhttps://github.com/litongjava/ping-base64-client\n\n部署的项目是spring-boot-table-to-json  \nhttps://github.com/litongjava/table-to-json/tree/main/spring-boot-table-to-json\n\n### 3.1.4.基于Docker部署Spring-Boot项目\n首次部署\n将文件上传到服务器上,解压并启动docker容器\nupload-start-docker.bat\n```\nping-base64-client -url http://192.168.3.9:10405/file/upload-run/ -file target\\spring-boot-table-to-json-1.0.zip -m /data/apps/webapps/package -d /data/apps/webapps/spring-boot-table-to-json -c \"docker run --name spring-boot-table-json -dit -v /data/apps/webapps/spring-boot-table-to-json:/app --net=host -w /app litongjava/jdk:8u211 /usr/java/jdk1.8.0_211/bin/java -jar spring-boot-table-to-json-1.0.jar\"\n```\n\n执行docker部署命令如下,用于启动工程\n```\ndocker run --name spring-boot-table-json -dit -v /data/apps/webapps/spring-boot-table-to-json:/app --net=host -w /app litongjava/jdk:8u211 /usr/java/jdk1.8.0_211/bin/java -jar spring-boot-table-to-json-1.0.jar\n```\n\n更新\n将文件上传到服务器上,解压并重启docker容器\n```\nping-base64-client -url http://192.168.3.9:10405/file/upload-run/ -file target\\spring-boot-table-to-json-1.0.zip -m /data/apps/webapps/package -d /data/apps/webapps/spring-boot-table-to-json -c \"docker restart spring-boot-table-json\"\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flitongjava%2Fping-base64-webapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flitongjava%2Fping-base64-webapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flitongjava%2Fping-base64-webapi/lists"}