极客时间运维进阶训练营第三周作业
1.基于 docker-compose 实现对 nginx+tomcat web 服务的单机编排
v1 是 python 开发的,v2 是 go 开发的,有些指令不兼容。
nginx 和 tomcat 的配置 yaml 文件如下:
这里配置了特定的网络,比如 front/backend/default/nginx-service 等,可以给 service 使用。
links 表示需要依赖另一个服务启动,比如这里 haproxy-service-m43 依赖 nginx-server,而 nginx-server 依赖 tomcat-service-app1。
通过 docker-compose logs 可以检查是否所有业务都起来了,比如如果不配置 haproxy-m43,那么就会发现它没起来。
启动后,就可以看到 docker 的容器了。
2.安装 gitlab、创建 group、user 和 project 并授权
gitlab 有 ce 社区版,ee 企业版等,一般我们使用 ce 版即可。国内开源在清华的源下载。
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/focal/main/g/gitlab-ce/
文件比较大,下载时间有些长。
安装方法是 dpkg -i gitlab-ce_15.5.3-ce.0_amd64.deb
装好之后,系统就有 gitlab-ctl 命令了。
可以检查出问题,然后修复。
装好之后修改 gitlab 的账户配置。
vi /etc/gitlab/gitlab.rb
其中 external url 改为云主机地址。
在本机,可以通过 localhost:80 登录 gitlab 的网页。在其它地方,可以通过云服务器的网址:80 端口登录。比如登录我搭建在云服务器的 gitlab:
第一次登录,用户名是 root,密码在这个文件:
# cat /etc/gitlab/initial_root_password
登录后修改默认密码。
然后在 perference 里,修改下 Language 为中文。
编辑个人资料里,修改电子邮件,后续就可以通过电子邮件登录了,而不是 root。
邮箱里确认之后,就可以用户设置里的邮件通知,为自己的新邮箱。
左上角狐狸边上的三条线,选择设置-通用-注册限制,关闭已启用注册功能。注意不要误改为登录限制。
先创建 group 组,通过左上角的三条线,选择管理中心-群组-新建群组。
创建 user 用户:
管理员在管理中心-用户,选择某个账户,点用户管理,批准后,以后就可以登录了。
点用户,设置密码,下次就可以用新密码登录了。
创建 project 项目:
创建空白项目即可。
通过 ssh-keygen 可以添加 ssh 公钥,把 cat /root/.ssh/id_rsa.pub 的内容放到 gitlab 用户设置-密钥里。以后访问就可以通过 ssh,更方便了。
3.熟练 git 命令的基本使用,通过 git 命令实现源代码的 clone、push 等基本操作
git 是分布式版本管理系统,而 svn 是集中式代码管理系统。目前分布式用的多,因为不需要每次修改代码上传都传到服务器,把最终版本传到服务器就好了。
先配置 git,比如 email 和用户名
git config --global user.email xxx
git config --global user.name xxx
如果是 windows 机器,可以加下面这行,确保换行符用的是 linux 的方式:
git config --global core.autocrlf input
再把 gitlab 的服务器 IP 地址加到 known_hosts 里
ssh-keygen -f "/root/.ssh/known_hosts" -R "124.223.157.166"
然后再 clone 代码
git clone git@124.223.157.166:test/test.git
新增一个文件
git add file
提交到本地
git commit -am "test v1"
git log 可以看到当前的提交。
push 到远端服务器
git push origin main
可以到 gitlab 服务器上确认。
如果上传成功了,说明 gitlab 使用正常。
4.熟练掌握对 gitlab 服务的数据备份与恢复
备份
停止服务:
gitlab-ctl stop unicorn sidekiq
备份数据,在任意目录都可以开始备份:
gitlab-rake gitlab:backup:create
重启服务:
gitlab-ctl start unicorn sidekiq
注意备份的时候,这/etc/gitlab 目录下的两个文件 gitlab.rb 和 gitlab-secrets.json,手工复制出来即可。
恢复
ll /var/opt/gitlab/backups
gitlab-ctl stop unicorn sidekiq
gitlab-rake gitlab:backup:restore BACKUP=version
gitlab-ctl start unicorn sidekiq
5.部署 jenkins 服务器并安装 gitlab 插件、实现代码免秘钥代码 clone
jenkins 可以提供容器的方式执行,数据要放在宿主机,防止容器数据丢失。一开始最好用二进制安装。
jenkins 分 master 和 slave。其中 master 本身不处理任务,只是指派任务给 slave。slave 一般都需要 8C16G,如果是编译服务器,还需要更多,硬盘越大越好,一般是 SSD,或者带万兆光纤的 NAS。
下载 jenkins 的二进制安装包(尽量下载 LTS,也就是 stable 的版本):
ubuntu 从https://mirrors.tuna.tsinghua.edu.cn/jenkins/debian-stable/
安装
dpkg -i jenkins_2.361.3_all.deb
装好后,就有 jenkins 账户了。
配置
先停止 jenkins 的系统服务:
systemctl stop jenkins.service
如果不停止,直接配置,会导致配置后重启失败。
修改/lib/systemd/system/jenkins.service 文件
user 和 group 都修改为 root,因为默认的 jenkins 账户没有 root 权限,做 scp 等操作时,还需要切权限才行。
Environment 里的 JAVA_OPTS 后面加上:-Djava.awt.headless=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
重启服务:systemctl daemon-reload && systemctl restart jenkins.service
journalctl -xe 可以看到日志。
ps 可以看到 jenkins 的启动参数,以及是 root 账户启动的。
systemctl status 也可以看到参数是否更新了,以及端口是多少。
登录 jenkins
第一次是连不上的,需要先本机连一下 localhost:8080,激活一下。
cat /var/lib/jenkins/secrets/initialAdminPassword
登录后,安装下默认插件。
插件都准备好之后,就可以新建 job 了,一般刚开始选择 Freestyple project 即可。
配置 shell 执行,可以勾上 Execute shell。
打印 hello jenkins.
安装 gitlab 插件
可以在这里下载 jenkins 的插件:
http://updates.jenkins-ci.org/download/plugins/
wget http://updates.jenkins-ci.org/latest/gitlab-plugin.hpi
注意: gitlab 插件会依赖于 jersey2-api 插件。
wget http://updates.jenkins-ci.org/latest/jersey2-api.hpi
复制插件到/var/lib/jenkins/plugins/目录。
重启 jenkins 服务:
systemctl restart jenkins.service
installed 可以看到,表示装好了。
使用 gitlab 插件 checkout 代码
先把公钥 id_rsa.pub 放到 gitlab 上,把私钥 id_rsa 放到 jenkins 上。
Repository URL 填写地址:git@124.223.157.166:test/test.git
Credentials 选择:ssh username with private key
在 Private Key 选择 Enter directly,填上私钥的内容。
评论