sudo apt install apt-transport-https ca-certificates
查看Debian版本,便于选择对应的镜像源
Debian版本简介:
查看版本当前操作系统发行版信息。这个命令就可以清楚的晓得究竟是RedHat的、还是别的发行版,还有具体的版本号,例如3.4还是5.4等等
cat /etc/os-release
更改镜像文件
vi /etc/apt/sources.list
更改内容如下
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
Nginx默认会安装在etc目录下边,查看Nginx的配置文件的内容
cat /etc/nginx/nginx.conf
我们看最后红框上面的内容,表示使用的是/etc/nginx/conf.d/default.conf文件进行配置。
这么我们编辑/etc/nginx/conf.d/default.conf文件即可。
vi /etc/nginx/conf.d/default.conf
配置方法与前文的nginx配置一样,不过我们须要把必要的文件(静态文件,SSL证书)传递给Docker容器
创建储存资源的目录
mkdir /data/cert
mkdir /data/www
退出docker容器,到服务器界面
exit
查看所有的容器信息,能获取容器的id,如右图
docker ps -a
在服务器终端把资源文件传递给docker下的nginx容器
docker cp /data/cert 6ba3901beac9:/data/cert
保存容器
之后执行如下命令,保存镜像:
docker commit -m="备注" 你的CONTAINER_ID 你的IMAGE
请自行将-m旁边的信息改成自己的容器的信息
大功告成!
恭喜你结束了Docker的教程并学会了Docker的一些基本操作
Centos下安装Jenkins
Jenkins是一个基于Java语言开发的持续建立工具平台,主要用于持续、自动的建立/测试你的软件和项目。它可以执行你预先设定好的设置和建立脚本,也可以和Git代码库做集成,实现手动触发和定时触发建立。
这部份内容大多内容是对从0到1实现一套CI/CD流程[11]鹈鹕小册的搬运,更详尽的内容可以学习这本小册
安装OpenJDK
由于Jenkins是Java编撰的持续建立平台,所以安装Java必不可少。
在这儿,我们选择安装开源的openjdk。在这我们直接使用yum包管理器安装openjdk即可。
yum install -y java
使用国外镜像加速安装Jenkins
官方教程[12]安装速率太慢。因而我们选择国外镜像安装
下边是(2021/04)的jenkinsLTS版本:可以在去复旦学院镜像站[13]看一下,替换成最新的链接
下载Jenkins到/data目录
cd /data
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.277.2-1.1.noarch.rpm
sudo yum install jenkins-2.277.2-1.1.noarch.rpm
启动Jenkins
Jenkins安装后,会将启动命令注册到系统Service命令中。所以我们直接使用系统service命令启动Jenkins即可。
在这儿,有三个命令可以使用centos虚拟主机管理系统,分别对应启动/重启/停止三个命令。
在这儿,我们直接调用servicejenkinsstart启动Jenkins即可
service jenkins start
# service jenkins restart restart 重启 Jenkins
# service jenkins restart stop 停止 Jenkins
服务启动后,访问IP:8080。假如才能看见以下界面,代表正在启动。Jenkins第一次的启动时间通常比较长(视服务器性能而看)
初始化Jenkins配置解锁Jenkins
在Jenkins启动完成后,会手动跳转至这个界面(下方二图)。这是Jenkins的解锁界面,你须要输入储存在服务器的初始解锁密码能够进行下一步操作。
Jenkins启动后,会生成一个初始密码。该密码在服务器的文件显存放中标麒麟linux,我们可以步入服务器查看密码内容,将密码填写在Jenkins的管理员密码输入框内:
cat /var/lib/jenkins/secrets/initialAdminPassword
点击继续按键centos虚拟主机管理系统,解锁Jenkins。
下载插件
解锁后就来到了插件下载页面,这一步要下载一些Jenkins的功能插件。
由于Jenkins插件服务器在美国,所以速率不太理想。我们须要更换为复旦学院的Jenkins插件源后,再安装插件,所以先不要点安装插件。
更换方式很简单。步入服务器,将/var/lib/jenkins/updates/default.json内的插件源地址替换成复旦学院的源地址,将google替换为baidu即可。
sed -i 's/http://updates.jenkins-ci.org/download/https://mirrors.tuna.tsinghua.edu.cn/jenkins/g' /var/lib/jenkins/updates/default.json && sed -i 's/http://www.google.com/https://www.baidu.com/g' /var/lib/jenkins/updates/default.json
接着点击安装推荐的插件即可。稍等一会插件安装完毕
完成安装
插件安装完毕后,接着是注册管理员帐号。
根据提示一路配置后,直至听到以下界面代表安装成功
测试安装
到这儿,我们的Jenkins算是启动成功了。并且,我们还须要对Jenkins做一点点简单的配置,才可以让它可以建立docker镜像。
我们点击Jenkins首页->两侧导航->新建任务->Freestyleproject(建立一个自由风格的软件项目)
新建完毕后,找到建立一项,选择降低建立步骤,选择执行shell,输入以下命令
docker -v
docker pull node:latest
该命令会去拉取一个nodejs稳定版的镜像,我们可以来测试Docker的可用性
保存后,我们点击两侧菜单的立刻建立,Jenkins才会开始构筑。选择两侧历史记录第一项(最新的一项),点击控制台输出,查看建立日志。
执行后,我们发觉提示无访问权限。这又是哪些情况呢?这儿就不得不提及Linux下的UnixSocket权限问题了
在Linux中,Unixsocket属于root用户,因而须要root权限能够访问
然而在docker中,docker提供了一个用户组的概念。我们可以将执行Shell的用户添加到名称为docker的用户组,则可以正常执行docker命令。
而在Jenkins中执行的终端用户做jenkins,所以我们只须要将jenkins加入到docker用户组即可:
sudo groupadd docker #新增docker用户组
sudo gpasswd -a jenkins docker #将当前用户添加至docker用户组
newgrp docker #更新docker用户组
加入后,重启Jenkins:
sudo service jenkins restart
重启Jenkins后,再度执行脚本。此时执行成功:
回过头来查看docker镜像
docker images
会发觉多了一个docker的node镜像,这就是我们通过Jenkins手动安装的
步入此docker镜像
docker run -it node /bin/bash
做一些配置(怎么做参考前文的说明)
npm config set registry https://registry.npm.taobao.org
npm get registry
# 可能提示已安装,就不用再安装了
npm install yarn -g
yarn config set registry http://registry.npm.taobao.org/
yarn config get registry
exit
使用SSH合同集成Git库房源
这一步,我们使用Jenkins集成外部Git库房,实现对真实代码的拉取和重构。在这儿,我们选用Gitee(Github太慢了)作为我们的代码源。这儿打算一个UmiJS[14]项目来演示建立。
生成私钥公钥
首先,我们先来配置私钥和公钥。这是Jenkins访问Git私有库的常用认证方法。我们可以使用ssh-keygen命令即可生成私钥公钥。在本地机器执行生成即可。这儿的邮箱可以换成你自己的邮箱:
ssh-keygen -t rsa -C "642178633@qq.com"
执行后,会碰到第一步骤:Enterfileinwhichtosavethekey。
这一步是寻问你要将私钥公钥文件置于那里。默认是置于~/.ssh/id_rsa下,其实也可以选择输入你自己的路径。一路回车即可。
结束后,你会得到两个文件。分别是id_rsa和id_rsa.pub。
其中,id_rsa是公钥文件,id_rsa.pub是对应的私钥文件。
我们须要在Git端配置私钥,在Jenkins端使用公钥与Git进行身分校准。
在Gitee配置私钥
在Gitee中,假如你要配置私钥有2种形式:库房私钥和个人私钥。其中,假如配置了库房私钥,则该私钥只能对配置的库房进行访问。假如配置了个人私钥,则帐号下所有私有库房都可以访问。
这儿我们就以配置个人私钥为反例。首先打开右上角的设置,点击下边的设置=>SSH私钥
在下方有个添加私钥,填入信息即可。
其中的标题为私钥标题,这儿可以自定义标题;私钥则为刚刚生成的id_rsa.pub文件。使用cat命令查看下文件内容,将内容填入输入框并保存。接着去Jenkins端配置公钥
cat ~/.ssh/id_rsa.pub
在Jenkins配置公钥
回到Jenkins。在Jenkins中,公钥/密码等认证信息都是以账簿的形式管理的,所以可以做到全局都通用。我们可以在配置任务时,来添加一个自己的账簿。点击项目的配置,依次找到源码管理=>Git=>Repositories
这儿的RepositoryURL则是我们的库房地址,SSH地址格式为:xxx/xxx.git。可以从库房首页中的克隆/下载=>SSH中看见
重点是Credentials这一项,这儿则是我们选择认证账簿的地方。我们可以点击左侧添加=>Jenkins按键添加一条新的账簿认证信息。
点击后会打开一个弹窗,这是Jenkins添加账簿的弹窗。选择类型中的SSHUsernamewithprivatekey这一项。接着填写信息即可:
在命令行窗口,查看公钥文件内容,并复制它
cat ~/.ssh/id_rsa
点击Add按键,将xxx公钥文件内所有文件内容全部复制过去(包含开头的BEGINOPENSSHPRIVATEKEY和结尾的ENDOPENSSHPRIVATEKEY)
接着点击添加按键,保存账簿。
保存后,在Credentials下拉列表中选择你添加的账簿。
若果没有出现白色无权限提示,则代表身分校准成功,可以正常访问。
若果出现右图的问题,则说明服务器上没有安装Git
安装结束后,刷新界面就正常了
yum -y install git
建立镜像
在我们将环境打算就绪后linux 论坛,就可以开始建立镜像了。不过,我们须要先打算个DockerFile才可以建立镜像。那哪些是DockerFile呢?
编撰Dockerfile
哪些是Dockerfile
Dockerfile是一个Docker镜像的基础描述文件,上面描述了生成一个镜像所须要的执行步骤。我们也可以自定义一份Dockerfile来创建一个自己的镜像。
比如下边的步骤,使用Dockerfile可描述为:
基于nginx:1.15镜像做基座。
拷贝本地html文件夹内的文件,到镜像内/etc/nginx/html文件夹。
拷贝本地conf文件夹内的文件,到镜像内/etc/nginx/文件夹。
FROM nginx:1.15-alpine
COPY html /etc/nginx/html
COPY conf /etc/nginx/
WORKDIR /etc/nginx/html
编撰完成后,如何生成镜像呢?我们只须要使用dockerbuild命令就可以建立一个镜像了:
docker build -t imagename:version .
-t:申明要打一个镜像的Tag标签,紧跟随的旁边就是标签。
标签格式为镜像名:版本.:申明要找寻dockerfile文件的路径..代表当前路径下寻觅。默认文件名为Dockerfile。
关于更多DockerFile的句型,详尽可以看这儿[15]
由于我们的镜像只包含一个nginx,所以dockerfile内容比较简单。我们只须要在代码根目录下新建一个名为Dockerfile的文件,输入以下内容,并将其递交到代码库[16]即可。
vi Dockerfile
FROM nginx:1.15-alpine
COPY html /etc/nginx/html
COPY conf /etc/nginx/
WORKDIR /etc/nginx/html
git add ./Dockerfile
git commit -m "chore: add dockerfile"
git push
Jenkins端配置
在代码源和DockerFile打算就绪后。在服务器的/data目录下新建一个jenkins-shll.sh脚本文件
touch /data/jenkins-shll.sh
vi /data/jenkins-shll.sh
并加入如下内容
#!/bin/sh -l
yarn
yarn run build
docker build -t jenkins-test .
这儿脚本很简单,主要是作用是安装依赖=>建立文件=>建立镜像。
#!/bin/sh-l的作用是:
假如在服务器中的shell命令可以执行,但到了jenkins中却未能执行,这是由于jenkins没有加载服务器中的全局变量/etc/profile造成的
最后只需在Jenkins端配置下要执行的Shell脚本即可。找到项目的配置,依次找到建立=>Executeshell。输入以下脚本:
sh /data/jenkins-shll.sh
自动执行任务
保存后我们去自动触发执行下任务。当未抛出错误时,代表任务执行成功
回过头来查看docker
docker images
可以发觉,又多了一个名叫jenkins-test的docker镜像
手动执行任务安装插件
安装GenericWebhookTriggerPlugin插件(系统管理-插件管理-可用插件-搜索GenericWebhook)
选中并点击Installwithoutrestart
假如可选插件列表为空,点击中级标签页,替换升级站点的URL为:但是点击递交和立刻获取。
添加触发器
GenericWebhookTriggerPlugin插件功能很强悍,可以按照不同的触发参数触发不同的重构操作,例如我向远程库房递交的是master分支的代码,就执行代码布署工作,我向远程库房递交的是某个feature分支,就执行单元测试,单元测试通过后合并至dev分支。
灵活性很高,可以自定义配置适宜自己公司的方案,这儿便捷演示我们不做任何条件判定,只要有push就触发。
在任务配置->触发建立起->里勾选GenericWebhookTrigger,之后保存即可
Git库房配置钩子
此处以码云为例,github的配置基本一致,步入码云项目主页后,点击管理-webhooks-添加,会跳出一个这样的框来。
上图中的URL格式为:@:端口/generic-webhook-trigger/invoke
下边的几个选项是你在库房执行哪些操作的时侯触发钩子,这儿默认用push。
步入jenkin的系统管理->管理用户界面,可以看见一个用户列表。在此列表中就找到UserID.
接出来点击工具图标步入详情界面后找到APIToken->添加新Token->生成->找个你喜欢的地方将此token保存好
JenkinsIP地址和端口是你布署jenkins服务器的ip地址,端标语没改过的话就是8080。
密码就是你登入jenkins的密码
点击递交完成配置。我们还须要测试一下钩子是否生效
点击测试,假如配置是成功的,你的Jenkins两侧栏建立执行状态里将会出现一个任务。
实现电邮提醒-todo批量删掉建立历史
步入系统配置->脚本命令运行
输入脚本
# "test"是项目名称,100是指(0~·100)全删除,就是构建历史前面的ID
def jobName = "test"
def maxNumber = 100
Jenkins.instance.getItemByFullName(jobName).builds.findAll {it.number <= maxNumber}.each { it.delete() }
点击运行
最后
在日常工作中你还使用什么Centos配置呢?欢迎在评论区留下的你的看法!
认为有收获的同学欢迎点赞,关注一波!
参考资料
[1]
从原理到实战,彻底搞清Nginx!:
[2]
NVM官网:#install--update-script
[3]
Node.js官网:
[4]
显示本地镜像列表:
[5]
删掉本地一个或多个镜像:
[6]
容器的启动/关掉/重启:
[7]
删掉一个或多个容器:
[8]
阿里云容器镜像服务:
[9]
Nginx容器教程:
[10]
Debian镜像使用帮助:
[11]
从0到1实现一套CI/CD流程:
[12]
官方教程:+Jenkins+on+Red+Hat+distributions#space-menu-link-content
[13]
复旦学院镜像站:
[14]
UmiJS:
[15]
这儿:
[16]
代码库: