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

1.基于 docker-compose 实现对 Nginx+Tomcat Web 服务的单机编排

[root@VM-4-6-centos case3-custom-network]# cat docker-compose.yml
version: '3.8'            #对版本不是很敏感,'3.8'或'2.4'等都可以,旧版可能会少些功能
services:
  nginx-server:            #第一个service名字。docker-compose exec 等命令需要用到此service名称来操作;一个文件中可以写多个
    image: nginx:1.22.0-alpine
    container_name: nginx-web1-jeek03            #容器名称,docker-compose  ps  看到的容器名字
#    network_mode: bridge                         
                                    #网络1,使用docker安装后的默认网桥;如果不指定网络,默认情况下,docker-compose会自己建一个新的网络
    expose:
      - 80
      - 443
    ports:
      - "8001:80"            #主机上80和443端口已经被占用,随便换两个
      - "445:443"
#    profiles:                #基于配置文件指定要操作的目的容器,docker-compose --profile frontend up -d 可以只操作该组(前端)的若干个容器
#      - frontend
    networks:                         #网络2,使用自定义的网络,如果网络不存在则会自动创建该网络并分配子网,并且容器会有两块网卡
      - front                           #网卡1;用于用户外部连接
      - backend                         #网卡2;用于连接后端tomcat服务
    links:                               #指定依赖关系:要tomcat容器起来之后再创建该nginx容器
      - tomcat-server

  tomcat-server:
    #image: tomcat:7.0.93-alpine
    image: registry.cn-hangzhou.aliyuncs.com/zhangshijie/tomcat-myapp:v1
    container_name: tomcat-app1-jeek03
    #network_mode: bridge 
    #expose:
    #  - 8080
    #ports:
    #  - "8080:8080"
#    profiles:             #基于配置文件指定要操作的目的容器,docker-compose --profile backend up -d 可以只操作该组(后端)的若干个容器
#      - backend
    networks:     #网络2,使用自定义的网络,如果网络不存在则会自动创建该网络并分配子网,并且容器会有一块网卡
      - backend
    links:          #指定依赖关系:要MySQL容器起来之后再创建该tomcat容器
      - mysql-server

  mysql-server:
    image: mysql:5.6.48
    container_name: mysql-container-jeek03
#    network_mode: bridge    
    volumes:
      - /data/mysql:/var/lib/mysql
      #- /etc/mysql/conf/my.cnf:/etc/my.cnf:ro
    environment:
      - "MYSQL_ROOT_PASSWORD=12345678"
      - "TZ=Asia/Shanghai"
    expose:
      - 3306
    ports:
      - "3306:3306"
#    profiles:         #基于配置文件指定要操作的目的容器,docker-compose --profile backend up -d 可以只操作该组(后端)的若干个容器
#      - backend
    networks:             #网络2,使用自定义的网络,如果网络不存在则会自动创建该网络并分配子网,并且容器会有一块网卡
      - backend

networks:
  front:                 #自定义前端服务网络,需要docker-compose创建
    driver: bridge        #使用bridge桥接模式。如不需要连接外部网络,也可以改为none/host
  backend:              #自定义后端服务的网络,要docker-compose创建
    driver: bridge
  default:             #使用已经存在的docker0默认172.17.0.1/16的网络(该实验中用不到该项配置)
    external:          #表示不用docker-compose自己建网络。使用外部网络名称为bridge;与网络1:network_mode: bridge对应
      name: bridge

未创建容器时:
在这里插入图片描述
docker-compose up -d 创建容器:
会生成当前目录名+网络名称的网卡名
[root@VM-4-6-centos case3-custom-network]# docker-compose down #会先停止容器;再删容器;最后将创建的网络都删掉
在这里插入图片描述

2.安装 GitLab、创建 group、user 和 project 并授权
从清华下centos的包gitlab-ce-15.4.3-ce.0.el7.x86_64.rpm
[root@VM-4-6-centos file]# yum -y install gitlab-ce-15.4.3-ce.0.el7.x86_64.rpm #装包
修改配置:vim /etc/gitlab/gitlab.rb

external_url 'http://192.168.1.101'                            #外部访问的域名或ip
gitlab_rails['smtp_enable'] = true                                #开启smtp
gitlab_rails['smtp_address'] = "smtp.163.com"            #指定smtp发件服务器(smtp.qq.com、公司邮箱等)
gitlab_rails['smtp_port'] = 465                                 #启用tls是465,不启用就是25
gitlab_rails['smtp_user_name'] = "13693204832@163.com"        #发件箱
gitlab_rails['smtp_password'] = "QXMFEYOTAMDBOQXH"            #发件箱授权码
gitlab_rails['smtp_domain'] = "163.com"                #发件箱的域名
gitlab_rails['smtp_authentication'] = :login                #认证,采用login登录的方式认证
gitlab_rails['smtp_enable_starttls_auto'] = true            #启用tls认证,自动配置tls认证
gitlab_rails['smtp_tls'] = true                                    #是否启用tls认证,对邮件进行加密
gitlab_rails['gitlab_email_from'] = "13693204832@163.com"            #发件人地址
user["git_user_email"] = "13693204832@163.com"                    #收件人、管理员地址,公司负责gitlab的运维

[root@VM-4-6-centos file]# gitlab-ctl reconfigure             #重新配置服务
[root@VM-4-6-centos file]# gitlab-ctl restart        #重启服务

装好后:
有提示说密码文件在哪里
gitlab页面
登录后初始操作:1、修改密码
2、修改默认邮箱
3、将通知里默认使用的邮箱改成自己的
4、禁止其他人注册账号

创建group、user和project并授权:
点击左上角gitlab的logo旁边的三条杠----> 选择最下方的 管理员 -----> 左侧 群组
group----对应公司的项目,要先创建一个组(项目),起个组名,选择私有。
user----对应公司研发人员。添加用户hy-admin(管理员)和hy-ordinary(普通用户)
用户创建后给一个密码,然后该用户需要登陆一下修改密码,才可以使用
project—对应公司项目中的服务。新建一个空的项目,选择刚才创建的项目group,起一个名称hy-app1
在这里插入图片描述
在这里插入图片描述

3.熟练 Git 命令的基本使用,通过 Git 命令实现源代码的 clone、push 等基本操作

另开一个虚拟机(192.168.1.102);安装git命令
[root@master2 ~]# yum -y install git
[root@master2 ~]# git clone http://192.168.1.101/hy/hy-app1.git    #将项目先克隆下来
正克隆到 'hy-app1'...
Username for 'http://192.168.1.101': root                 #使用root克隆,普通用户还没给授权
Password for 'http://root@192.168.1.101':
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.      #克隆完成后,当前目录生成一个和创建的项目名hy-app1同名的目录

[root@master2 hy-app1]# echo v11111111111111 > v1        #模拟开发写代码
[root@master2 hy-app1]# git add .                        #添加当前目录下所有变化过的内容到本地仓库

[root@master2 hy-app1]# git commit -m "first"            #执行commit提交时,需认证
*** Please tell me who you are.
Run
  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'root@master2.(none)')

[root@master2 hy-app1]# git config --global user.email "13693204832@163.com"
[root@master2 hy-app1]# git config --global user.name "hy-admin"

[root@master2 hy-app1]# git commit -m "first"                #提交成功
[main b076e74] first
1 file changed, 1 insertion(+)
create mode 100644 v1

[root@master2 hy-app1]# git push                #往gitlab服务器提交代码
Username for 'http://192.168.1.101': hy-admin        #需要登录,需要登陆一次修改密码后才可以用
Password for 'http://hy-admin@192.168.1.101':
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 266 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://192.168.1.101/hy/hy-app1.git
   c44da01..b076e74  main -> main

[root@master2 hy-app1]# echo v2222222 > v2
[root@master2 hy-app1]# git commit -m "second"
[root@master2 hy-app1]# echo v3333 > v3
[root@master2 hy-app1]# git status                #查看工作区状态,有无文件变化等
# 位于分支 main
# 您的分支领先 'origin/main' 共 1 个提交。
#   (使用 "git push" 来发布您的本地提交)
#
# 未跟踪的文件:
#   (使用 "git add <file>..." 以包含要提交的内容)
#
#    v3                                            #看出v3还没提交
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
[root@master2 hy-app1]# git add .
[root@master2 hy-app1]# git commit -m "3"   

提交之后,在开一个中断,登录hy-ordinary拉取
[root@master1 hy-app1]# git pull                        #拉取新文件
Username for 'http://192.168.1.101': hy-ordinary
Password for 'http://hy-ordinary@192.168.1.101':
remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (6/6), done.
来自 http://192.168.1.101/hy/hy-app1
   b076e74..1959f42  main       -> origin/main
更新 b076e74..1959f42
Fast-forward
v2 | 1 +
v3 | 1 +
2 files changed, 2 insertions(+)
create mode 100644 v2
create mode 100644 v3

4.熟练掌握对 GitLab 服务的数据备份与恢复

[root@master1 hy-app1]# gitlab-ctl stop unicorn sidekiq        #停止gitlab这两个写入的服务
[root@master1 hy-app1]# gitlab-rake gitlab:backup:create        #创建git备份,可以再任意目录执行
2022-11-11 17:04:53 +0800 -- Backup 1668157485_2022_11_11_15.4.3 is done.
                                             #该备份只备份账号信息和源代码,配置文件啥的再另外打包备份
/var/opt/gitlab/nginx/conf             #nginx配置文件
/etc/gitlab/gitlab.rb                 #gitlab配置文件
/etc/gitlab/gitlab-secrets.json         #key文件
再将这三个文件打包备份

[root@master1 hy-app1]# gitlab-ctl start unicorn sidekiq        #启动写入服务
[root@master1 hy-app1]# ll /var/opt/gitlab/backups/            #备份文件路径
总用量 392
-rw------- 1 git git 399360 1111 17:04 1668157485_2022_11_11_15.4.3_gitlab_backup.tar

#模拟故障:页面删除文件v2
可以看到v2已经被删除

[root@master1 hy-app1]# gitlab-ctl stop unicorn sidekiq      #停止gitlab这两个写入的服务
[root@master1 hy-app1]# gitlab-rake gitlab:backup:restore BACKUP=1668157485_2022_11_11_15.4.3
                                #BACKUP=后面不用写绝对路径,也不用写完整文件_gitlab_backup.tar

让你输入yes;还会让你有5秒钟后悔的时间,可以再5秒内按ctrl+C取消

#登录页面看到v2又回来了
在这里插入图片描述

5.部署 Jenkins 服务器并安装 GitLab 插件、实现代码免秘钥代码 clone
伟大时代

[root@master2 ~]# yum -y install jdk-17_linux-x64_bin.rpm
[root@master2 ~]# yum -y install jenkins-2.361.2-1.1.noarch.rpm
[root@master2 ~]# systemctl status jenkins.service     #centos不会自动启动服务,ubuntu会自动启动服务

[root@master2 ~]# vim /etc/default/jenkins            #老师说该不该均可
JENKINS_USER=root
JENKINS_GROUP=root
[root@master2 ~]# vim /lib/systemd/system/jenkins.service   #修改service文件
34 User=jenkins               # 默认会创建jenkins用户,但是普通用户权限不够,建议改成root
35 Group=jenkins
59 Environment="JAVA_OPTS=-Djava.awt.headless=true"    #要开启gitlab远程触发

修改为:
User=root
Group=root
Environment="JAVA_OPTS=-Djava.awt.headless=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true"

[root@master2 ~]# systemctl daemon-reload
[root@master2 ~]# systemctl start jenkins.service
[root@master2 ~]# ps -ef | grep jenkins                #查看参数是否生效
root      50689      1  4 18:31 ?        00:00:03 /usr/bin/java -Djava.awt.headless=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true -jar /usr/share/java/jenkins.war --webroot=%C/jenkins/war --httpPort=8080

在这里插入图片描述
部署不成功,尚未找到解决方案
############################
20221113
之前的起不来,换了个端口号8088
[root@VM-4-6-centos day03]# vim /lib/systemd/system/jenkins.service
Environment=“JENKINS_PORT=8088”
就能起来
在这里插入图片描述

装插件:采用系统推荐选项(需要联网)
安装推荐的插件:需要连外网
jenkins是个完全插件化的服务,有1000多个插件
在这里插入图片描述
在这里插入图片描述
安装的插件全都在/var/lib/jenkins/plugins/中
每个插件有两个文件(一个目录一个jpi文件)
在这里插入图片描述
离线装插件:将插件文件打包拷贝过来,解压到/var/lib/jenkins/plugins/目录中也可以
第一次登陆,有些插件还没有生效(汉化也不太彻底)。需要在服务器后台systemctl restart jenkins 重启服务
然后重新登陆 jenkins
在这里插入图片描述
安装 GitLab 插件:
左侧系统管理---->插件管理------>可选插件---->搜索gitlab
在这里插入图片描述
在这里插入图片描述
装好插件后也要重启jenkins服务才能生效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值