木易

每 天 都 要 很 哇 塞 ~ ~

生活本质本该如此?一半是回忆,一半是继续

Welcome to My Website ~~

【Jenkins】简单的项目自动化部署

Jenkins 官网:Jenkins Jenkins 使用文档: 创建您的第一个Pipeline 基础概念 什么是CI: CI (Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。 什么是CD: CD (Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。 Jenkins的三种构建方式 jenkins有三种构建方式: 触发式构建:用于开发环境部署,开发人员可以 **push **代码或者合并代码到 gitlab 项目的 master 分支上,jenkins就部署代码到对应服务器; 参数化构建:用于测试环境或者预上线环境部署,只需要在jenkins的界面传入对应参数即可执行部署; 定时构建:在参数化基础上添加,可以每天定时打包; Jenkins进行项目构建和发布(触发式构建) Jenkins是一个强大的CI工具,虽然本身使用Java开发,但也能用来做其他语言开发的项目CI。下面讲解如何使用Jenkins创建一个构建任务。 Gitlab 添加 Jenkins 服务器公钥 Jenkins 服务器(用户):生成公钥放到 Gitlab 中;拉取代码可以通过 ssh 免密拉取; 测试环境(部署项目服务器):生成公钥放到 Gitlab 中;拉取代码可以通过 ssh 免密拉取; Jenkins or 测试服务器没有bash; 1 2 3 4 [root@xjr-pc]# grep jenkins /etc/passwd jenkins:x:982:976:Jenkins Automation Server:/var/lib/jenkins:/bin/false [root@xjr-pc]# usermod -s /bin/bash jenkins [root@xjr-pc]# grep jenkins /etc/passwd 生成对应用户的公钥 1 2 3 4 5 6 7 # Jenkins 公钥 jenkins@xjr-pc:/$ ssh-keygen -t rsa jenkins@xjr-pc:/$ cat ~/.

【Golang】Mac中升级Golang版本

Mac 中如何升级golang的版本 1 自己的本地开发电脑一直使用 go1.15 这个版本,后续因为项目升级需要将go 版本升级到最新版,找到一个升级工具,简单实用; 具体操作 下载 Golang 版本升级工具 1 git clone https://github.com/udhos/update-golang 进入到升级工具目录 1 cd update-golang 执行命令 1 sudo RELEASE=1.17.6 ./update-golang.sh 注意:RELEASE 后面指定 Golang 需要的特定版本(不写就使用默认版本,详情可以看脚本内容) 查看版本 1 go version

【Base】Linux负载问题排查记录

前言 & 背景 💡Tips:下面的我只是用于临时记录,如果想要整个系统的稳定性得到保障和比较快速清晰定位到问题:还是需要比较完整风控告警机制 我后面是采用了:elk 做日志收集和分析 + python自动脚本 + elastalert 进行了告警 背景: Linux 服务负载在某段时段突然出现较高的负载 : 排查思路: 某个时段的访问量暴增导致(业务驱动的正常情况) 定时任务的触发触发 (导致也性能突然拉高–> eg: a 其他服务的定时任务触发导致,可以通过服务调用的方式排查,普遍是 RPC 和 Http 接口调用导致; b 本机上的定时任务,查看定时任务列表,查看 Cpu, 网络,io 等资源最高占用程序) 某个服务的异常导致业务阻塞 ,导致大量的接口阻塞 (mysql, redis, 微服务中的其他服务。。等出现连接异常,死锁,负载过高,导致另外服务等待阻塞,从而负载过高) 被攻击ddos等(通过 ip 和 nginx 日志排查) 排查日志准备: 主要以 Nginx 日志为主: 每个项目 Nginx 的 access 和 error 日志最好单独保存,按照每日分割,这可以方便以后每次排查快速定位,也可以方便日志的归档和清理; 1 2 3 4 5 6 7 8 http{ ... map $time_iso8601 $logdate { '~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd; default 'date-not-found'; } .

【Mysql】用户权限配置

查看用户表 $ use mysql; $ select User, Password, Host from mysql.user User : 用户名 Password : 密码(加密) Host :连接IP 开放远程连接 1 $ vim /etc/mysql/mariadb.conf.d/50-server.cnf 然后注释: 1 # bind-address = 127.0.0.1 取消 **ip **记录不试用 dns 同配置文件找到 [mysqld] 部分的参数,在配置后面建立一个新行,添加下面这个参数: 1 skip-name-resolve 然后重启 mysql-server 1 $ service mysql restart 创建用户 命令: 1 CREATE USER 'username'@'host' IDENTIFIED BY 'password' 说明: username: 你要创建的用户名; host:指定该用户在哪个主机上可以登陆,如果是本地用户可以使用 localhost;如果你想任意远程主机都可以登陆,可以使用通配符%; password:用户的登陆登陆密码,如果密码为空,用户登陆不需要密码; 例子: 1 2 3 4 5 6 7 8 9 CREATE USER 'pig'@'localhost' IDENTIFIED BY '123456'; CREATE USER 'pig'@'192.

【BASE】Let's_Encrypt证书签发

Let’s Encrypt 是一个由非营利性组织互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构(CA)。 Let’s Encrypt 的签发/续签,通过脚本自动化完成;通过 acme.sh 相对来说是比较省心,自动化程度较高 紧急补充说明下: 因为我本文最终选着了 Let’s Encrypt 进行证书签发,发现比较老旧的系统,因为系统的根证书没有更新,所以导致这个签发的证书无法认证。所以需要兼容比较老旧的 ios,安卓 (微信小程序等)端的慎用。 安装 acme.sh工具 1 curl https://get.acme.sh | sh 脚本安装好,脚本的具体操作如下: 安装文件和配置文件都在home目录下,也就是 ~/.acme.sh/ 创建一个 bash alias,acme.sh=~/.acme.sh/acme.sh ,重新打开终端后直接输入 acme.sh 就可以快速方便地使用这个脚本 创建一个 crontab 定时任务,每天 0 点进行 acme.sh 脚本的续签证书,自动升级(可选)等任务 后续生成的文件和证书都是基于这个这个目录的( ~/.acme.sh/ ) acme.sh 生成证书 acme.sh 实现了 acme 协议支持的所有验证协议, 一般有两种方式验证:http 和 dns 验证。 Http 证书方式验证 Http 的证书验证方法,需要在域名指向的服务器的根目录下放置一个指定的文件,服务会通过访问这个文件来验证你是否对域名有所有权,只要验证通过就可以申请证书: 生成方式 ① 1 acme.sh --issue -d mydomain.com -d www.mydomain.com --webroot /home/wwwroot/mydomain.com/ 参数说明: -d : 需要生成证书的域名 (支持多个) –webroot: 项目根目录(用于验证) 注意: acme.
0%