{"id":21644364,"url":"https://github.com/vectorxxxx/08-grainacademy","last_synced_at":"2026-04-09T18:01:26.918Z","repository":{"id":213842102,"uuid":"735062831","full_name":"vectorxxxx/08-GrainAcademy","owner":"vectorxxxx","description":"尚硅谷_谷粒学苑-微服务+全栈在线教育实战项目","archived":false,"fork":false,"pushed_at":"2024-07-28T15:34:06.000Z","size":9428,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-25T04:27:39.561Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.bilibili.com/video/BV1dQ4y1A75e/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vectorxxxx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-12-23T14:30:07.000Z","updated_at":"2024-08-25T01:57:14.000Z","dependencies_parsed_at":"2023-12-25T16:51:15.260Z","dependency_job_id":"7a4f7929-8e1e-44ce-826b-c907d79f8ad0","html_url":"https://github.com/vectorxxxx/08-GrainAcademy","commit_stats":null,"previous_names":["vectorxxxx/08-grainacademy"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vectorxxxx%2F08-GrainAcademy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vectorxxxx%2F08-GrainAcademy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vectorxxxx%2F08-GrainAcademy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vectorxxxx%2F08-GrainAcademy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vectorxxxx","download_url":"https://codeload.github.com/vectorxxxx/08-GrainAcademy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244413458,"owners_count":20448710,"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-25T05:39:50.333Z","updated_at":"2025-12-31T00:11:14.454Z","avatar_url":"https://github.com/vectorxxxx.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 部署\n\n## 1、基本命令\n\n```bash\n# 关机\npoweroff\n# 重启\nshutdown -r now\n```\n\n\n\n## 2、网络配置\n\n```bash\n# ip\nifconfig -a\nip addr\n\n# vim\nyum install -y vim\n\n# 网卡\nnmcli con add con-name enp0s8 type ethernet ifname enp0s8\nservice network restart\n\ncd /etc/sysconfig/network-scripts/\nvim ifcfg-enp0s3\n\n# 防火墙 \nsystemctl status firewalld\nsystemctl stop firewalld\nsystemctl disable firewalld\n\n# 入站规则\nyum list installed | grep iptables-services\nyum install -y iptables-services\n\n/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT\n/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT\n\nservice iptables save\nservice iptables restart\n\niptables -nL\n\n# ssh\nrpm -qa | grep ssh\nyum install openssh-server\nservice sshd start\n\nnetstat -ntpl | grep 22\n\nvim /etc/ssh/sshd_config\nPort 22\nservice sshd restart\n\n# 端口转发：virtualbox中网络配置\n```\n\n\n\n## 3、Jdk\n\n```shell\n# 解压\ncd /usr/local\ntar -zxvf jdk-8u121-linux-x64.tar.gz\n\n# 软链接\nln -s /usr/local/jdk1.8.0_121/ /usr/local/jdk\n\n# 环境变量\nvim /etc/profile\n\nexport JAVA_HOME=/usr/local/jdk\nexport JRE_HOME=$JAVA_HOME/jre\nexport CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib\nexport PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin\n\nsource /etc/profile\n\n# 验证\njava -version\n```\n\n\n\n## 4、Maven\n\n```shell\n# 解压\ncd/usr/local\ntar -zxvf apache-maven-3.6.1-bin.tar.gz\n\n# 软链接\nln -s /usr/local/apache-maven-3.6.1/ /usr/local/maven\n\n# 环境变量\nvim /etc/profile\n\nexport MAVEN_HOME=/usr/local/maven\nexport PATH=$PATH:$MAVEN_HOME/bin\n\nsource /etc/profile\n\n# 验证\nmvn -v\n\n# 查找maven配置文件\nfind / -type f -name settings.xml\n\n# 更换镜像\n\u003cmirror\u003e\n    \u003cid\u003ealiyun maven\u003c/id\u003e\n    \u003cname\u003ealiyun\u003c/name\u003e\n    \u003curl\u003ehttp://maven.aliyun.com/nexus/content/groups/public/\u003c/url\u003e\n    \u003cmirrorOf\u003ecentral\u003c/mirrorOf\u003e\n\u003c/mirror\u003e\n```\n\n\n\n## 5、Git\n\n```shell\nyum -y install git\n```\n\n\n\n## 6、Docker\n\n```shell\n# 安装必要系统工具\nyum install -y yum-utils device-mapper-persistent-data lvm2\n\n# yum镜像\nyum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo\n\n# 安装 Docker-CE（Community Edition，社区版）\nyum makecache fast\nyum -y install docker-ce\ndocker -v\n\n# 启动\nservice docker start\nservice docker status\nps -ef | grep docker\n\n# Docker镜像\ndocker images\n\n# 自启动\nsystemctl is-enabled docker.service\nsystemctl enable docker.service\nsystemctl start docker.service\n```\n\n\n\n## 7、Jenkins\n\n- 版本：2.346.1\n\n```bash\n# 启动\ncd/usr/local/jenkins\nnohup java -jar /usr/local/jenkins/jenkins.war \u003e/usr/local/jenkins/jenkins.out \u0026\n\n# 访问\nhttp://ip:8080\n\n# 管理员密码\ncat /root/.jenkins/secrets/initialAdminPassword\n\n# 配置国内的镜像\nfind / -name default.json\ncd /root/.jenkins/updates\ncp default.json default.json.bak\nyum install -y wget\nwget https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/dynamic-2.346/update-center.json --no-check-certificate\nmv update-center.json default.json\n# sed -i 's/aaa/bbb/g' default.json \u0026\u0026 sed -i 's/ccc/ddd/g' default.json\n# 这是两个使用sed命令的操作，分别对default.json文件进行了替换操作。\n# 第一个命令中，使用了-i选项表示直接修改文件内容，而不是输出到标准输出。s/old/new/表示将文件中所有的old替换为new。具体来说，这个命令将default.json文件中的 http://updates.jenkins-ci.org/download 替换为 https://mirrors.tuna.tsinghua.edu.cn/jenkins。\n# 第二个命令也是类似，将default.json文件中的 http://www.google.com 替换为 https://www.baidu.com\nsed -i 's#www.google.com#www.baidu.com#g' /root/.jenkins/updates/default.json \u0026\u0026 sed -i 's#updates.jenkins.io/download/plugins#mirrors.tuna.tsinghua.edu.cn/jenkins/plugins#g' /root/.jenkins/updates/default.json\n\n# 替换\nhttps://updates.jenkins.io/update-center.json\nhttps://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/dynamic-2.346/update-center.json\n\n# 重启（命令行）\n# 第二列是进程ID（PID），第三列是进程的父进程ID（PPID）\nps -ef | grep jenkins\nkill -9 PID\nnohup java -jar /usr/local/jenkins/jenkins.war \u003e/usr/local/jenkins/jenkins.out \u0026\n\n# 重启（非命令行）\nhttp://ip:8080/restart\n```\n\n- 自启动\n\n```shell\nvim /usr/local/jenkins/jenkins.sh\n```\n\n- jenkins.sh\n\n```shell\n#!/bin/bash\n\n# shell脚本必须指定，因为脚本不会自动加载环境变量，不写的话导致出现此错误\nJAVA_HOME=/usr/local/jdk\nPATH=$PATH:$JAVA_HOME/bin\n\n# jar包的决定路径\napp='/usr/local/jenkins/jenkins.war'\n\n# 获取执行脚本的时候带的参数\ncmd=$1\n\n# 抓取对应的java进程\npid=`ps -ef|grep java|grep $app|awk '{print $2}'`\n\nstartup(){\n  aa=`nohup java -jar $args $app \u003e\u003e jenkins.out \u0026`\n  echo $aa\n}\n\nif [ ! $cmd ]; then\n  echo \"Please specify args 'start|restart|stop'\"\n  exit\nfi\n\nif [ $cmd == 'start' ]; then\n  if [ ! $pid ]; then\n    startup\n  else\n    echo \"$app is running! pid=$pid\"\n  fi\nfi\n\nif [ $cmd == 'restart' ]; then\n  if [ $pid ]\n    then\n      echo \"$pid will be killed after 3 seconds!\"\n      sleep 3\n      kill -9 $pid\n  fi\n  startup\nfi\n\nif [ $cmd == 'stop' ]; then\n  if [ $pid ]; then\n    echo \"$pid will be killed after 3 seconds!\"\n    sleep 3\n    kill -9 $pid\n  fi\n  echo \"$app is stopped\"\nfi\n```\n\n- 设置执行权限\n\n```shell\nchmod +x /usr/local/jenkins/jenkins.sh\n```\n\n- 自定义服务\n\n```shell\nvim /etc/systemd/system/jenkins.service\n```\n\n- jenkins.service\n\n```shell\n[Unit]\nDescription=jenkins-service\nAfter=network.target\n\n[Service]\nType=forking\nKillMode=process\nExecStart=/bin/sh /usr/local/jenkins/jenkins.sh start\nExecReload=/bin/sh /usr/local/jenkins/jenkins.sh restart\nExecStop=/bin/sh /usr/local/jenkins/jenkins.sh stop\n\n[Install]\nWantedBy=multi-user.target\n```\n\n- 设置执行权限\n\n```shell\nchmod +x /etc/systemd/system/jenkins.service\n```\n\n- 添加自启动服务\n\n```shell\n# 开机启动\nsystemctl enable hello-service.service\n# 取消开机启动\nsystemctl disable hello-service.service\n# 启动服务\nsystemctl start hello-service.service \n# 关闭服务\nsystemctl stop hello-service.service\n# 重启服务\nsystemctl restart hello-service.service\n# 查看服务\nsystemctl status hello-service.service\n```\n\n- 构建脚本\n\n```shell\n#!/bin/bash\n#maven打包\nmvn clean package\necho 'package ok!'\necho 'build start!'\ncd ./\nservice_name=\"demojenkins\"\nservice_prot=8111\n#查看镜像id\nIID=$(docker images | grep \"$service_name\" | awk '{print $3}')\necho \"IID $IID\"\nif [ -n \"$IID\" ]\nthen\n    echo \"exist $SERVER_NAME image,IID=$IID\"\n    #删除镜像\n    docker rmi -f $service_name\n    echo \"delete $SERVER_NAME image\"\n    #构建\n    docker build -t $service_name .\n    echo \"build $SERVER_NAME image\"\nelse\n    echo \"no exist $SERVER_NAME image,build docker\"\n    #构建\n    docker build -t $service_name .\n    echo \"build $SERVER_NAME image\"\nfi\n#查看容器id\nCID=$(docker ps | grep \"$SERVER_NAME\" | awk '{print $1}')\necho \"CID $CID\"\nif [ -n \"$CID\" ]\nthen\n    echo \"exist $SERVER_NAME container,CID=$CID\"\n    #停止\n    docker stop $service_name\n    #删除容器\n    docker rm $service_name\nelse\n    echo \"no exist $SERVER_NAME container\"\nfi\n#启动\ndocker run -d --name $service_name --net=host -p $service_prot:$service_prot $service_name\n#查看启动日志\ndocker logs -f  $service_name\n```\n\n\n\n## 8、访问测试\n\n```\nhttp://192.168.170.200:8111/user\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvectorxxxx%2F08-grainacademy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvectorxxxx%2F08-grainacademy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvectorxxxx%2F08-grainacademy/lists"}