写点什么

极客时间运维进阶训练营第三周作业

作者:好吃不贵
  • 2022-11-09
    浙江
  • 本文字数:3351 字

    阅读完需:约 11 分钟

1.基于 docker-compose 实现对 nginx+tomcat web 服务的单机编排

v1 是 python 开发的,v2 是 go 开发的,有些指令不兼容。

nginx 和 tomcat 的配置 yaml 文件如下:

version: '3.6'services:        haproxy-service-m43:                image: haproxy                networks:                        - backend                container_name: haproxy-m43                expose:                        - 80                        - 443                        - 9999                ports:                        - "80:80"                        - "443:443"                        - "9999:9999"                links:                        - nginx-server        nginx-server:                image: registry.cn-hangzhou.aliyuncs.com/cloud_learn/geektime:20221025_2020-nginx1.23.2v1                container_name: nginx_web1                networks:                        - front                links:                        - tomcat-service-app1                        - tomcat-service-app2        tomcat-service-app1:                image: tomcat                container_name: tomcat-app1                volumes:                        - /data/testapp:/data/tomcat/webapps/testapp                networks:                        - backend        tomcat-service-app2:                image: tomcat                container_name: tomcat-app2                volumes:                        - /data/testapp:/data/tomcat/webapps/testapp:ro                networks:                        - backend
networks: front: driver: bridge backend: driver: bridge default: external: name: bridge nginx-service: driver: bridge
复制代码

这里配置了特定的网络,比如 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-ctl tailgitlab-ctl statusgitlab-rake gitlab:check#开启服务gitlab-ctl start#开机启动systemctl enable gitlab-runsvdir.service#配置并重启服务gitlab-ctl reconfiguregitlab-ctl restart
复制代码


可以检查出问题,然后修复。

装好之后修改 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 是集中式代码管理系统。目前分布式用的多,因为不需要每次修改代码上传都传到服务器,把最终版本传到服务器就好了。

  1. 先配置 git,比如 email 和用户名

git config --global user.email xxx

git config --global user.name xxx

如果是 windows 机器,可以加下面这行,确保换行符用的是 linux 的方式:

git config --global core.autocrlf input

  1. 再把 gitlab 的服务器 IP 地址加到 known_hosts 里

ssh-keygen -f "/root/.ssh/known_hosts" -R "124.223.157.166"

  1. 然后再 clone 代码

git clone git@124.223.157.166:test/test.git

  1. 新增一个文件

git add file

  1. 提交到本地

git commit -am "test v1"

git log 可以看到当前的提交。

  1. 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 文件

  1. user 和 group 都修改为 root,因为默认的 jenkins 账户没有 root 权限,做 scp 等操作时,还需要切权限才行。

  2. Environment 里的 JAVA_OPTS 后面加上:-Djava.awt.headless=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true

  3. 重启服务: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,填上私钥的内容。


用户头像

好吃不贵

关注

还未添加个人签名 2018-11-20 加入

还未添加个人简介

评论

发布
暂无评论
极客时间运维进阶训练营第三周作业_好吃不贵_InfoQ写作社区