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

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

创建docker-compse.yml文件

cd /data/docker-compose/case1

version: '3.8'
services:
  nginx-server:
    image: nginx:1.22.0-alpine  #镜像
    container_name: nginx-web1  #容器名称
    expose: 
      - 80
      - 443
    ports: #端口映射
      - "80:80"
      - "443:443"
    networks: #自定义网络
      - front
      - backend
    links: #链接基于service启动
      - tomcat-server
  
  tomcat-server:
    image: registry.cn-hangzhou.aliyuncs.com/zhangshijie/tomcat-myapp:v1
    container_name: tomcat-app1
    networks:
      - backend
networks:
  front: #自定义网络 区分前端后端
    driver: bridge
  backend:
    driver: bridge
  default: 
    external: true
    name: bridge

创建nginx+tomcat服务

docker-compose up -d

验证服务启动状态

docker-compose ps

进入nginx容器,配置反向代理

    location /myapp { #匹配到myapp的访问转发到tomcat
        proxy_pass http://tomcat-server:8080;
    }

效果验证

 

2.安装 GitLab、创建 group、user 和 project 并授权

2.1 安装

2.1.1 下载gitlab软件包

Index of /gitlab-ce/ubuntu/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

2.1.2 安装软件包

dpkg -i gitlab-ce_15.4.3-ce.0_amd64.deb

2.1.3 修改配置文件

vim /etc/gitlab/gitlab.rb

 external_url 'http://10.0.0.150' #gitlab服务器IP或域名
 gitlab_rails['smtp_enable'] = true #开启smtp
 gitlab_rails['smtp_address'] = "smtp.qq.com" #邮箱SMTP
 gitlab_rails['smtp_port'] = 465 #邮箱smtp端口
 gitlab_rails['smtp_user_name'] = "794746679@qq.com" #邮箱地址
 gitlab_rails['smtp_password'] = "xxxxxxxxxx" #邮箱授权码
 gitlab_rails['smtp_domain'] = "qq.com" #SMTP域名
 gitlab_rails['smtp_authentication'] = :login
 gitlab_rails['smtp_enable_starttls_auto'] = true 
 gitlab_rails['smtp_tls'] = true
 gitlab_rails['gitlab_email_from'] = '794746679@qq.com'
user['git_user_email'] = "794746679@qq.com

2.1.4 重新加载配置

gitlab-ctl reconfigure

2.1.5 初次登录

用户名:root

查看初始密码

cat /etc/gitlab/initial_root_password

2.1.6 修改root密码

用户-偏好设置-密码

2.1.7 修改电子邮件地址

 

设置通知默认发送邮箱

 

2.1.8 禁止用户随意注册

 

2.2 创建group

对应公司的项目

 

2.3 创建用户

对应公司开发人员

创建用户,新创建用户需要登录修改初始密码后才能正常使用

 

创建用户后再次编辑设定密码

2.4 创建项目

对应公司项目中的服务

 

2.5 项目授权

对项目用户进行授权,对用户授予维护权限可以上传代码

Guest 可以创建issure.发表评论,不能读写版本库

Reporter 可以克隆代码,不能提交 开发工程师

Devewloper 可以克隆,开发、提交

Maintainer 可以创建项目、添加tag、项目RD负责人

Owner 系统管理员 可以设置访问权限,删除项目、迁移项目

 

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

3.1 windows端安装git客户端

安装git客户端,打开Git bash终端

3.2 克隆代码到本地

#克隆代码到本地
sean@LAPTOP-CIUKN7FT MINGW64 /d/git/local
$ git clone http://10.0.0.150/dev/test1.git
Cloning into 'test1'...
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
Receiving objects: 100% (3/3), done.
​
sean@LAPTOP-CIUKN7FT MINGW64 /d/git/local
$ ls
test1/
​
sean@LAPTOP-CIUKN7FT MINGW64 /d/git/local
$ cd test1/
​
#成功克隆代码到本地PC
sean@LAPTOP-CIUKN7FT MINGW64 /d/git/local/test1 (main)
$ ls
README.md

3.3 添加文件到暂存区

git add index.html .

3.3 提交到本地仓库

#执行提交操作,出现用户身份未识别报错
$ git commit -m "v1"
Author identity unknown
​
*** 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 'sean@LAPTOP-CIUKN7FT.(none)')
​
#需要设定用户邮箱和用户名 
 git config --global user.email "sean@qq.com"
 git config --global user.name "sean"
​
#提交到本地仓库 -m设定标签 
 $ git commit -m "v1"
[main 1ec65c6] v1
 1 file changed, 4 insertions(+)
 create mode 100644 index.html
​

3.4 提交到服务器

需要设置该用户具有上次

#上传代码到服务器
$ git push
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 309 bytes | 309.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To http://10.0.0.150/dev/test1.git
   d521d34..1ec65c6  main -> main

刷新项目,可以看到已提交的代码

 

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

4.1 备份

#停止数据写入服务
[root@gitlab ~]#gitlab-ctl stop unicorn sidekiq
​
#开始执行备份
[root@gitlab ~]#gitlab-rake gitlab:backup:create
2022-11-16 23:10:35 +0800 -- Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data 
and are not included in this backup. You will need these files to restore a backup.
Please back them up manually.
2022-11-16 23:10:35 +0800 -- Backup 1668611425_2022_11_16_15.4.3 is done.
​
#同时需要备份/etc/gitlab目录下的文件,可以备份/var/opt/gitlab/nginx/conf nginx配置文件
​
#启动数据写入服务
[root@gitlab ~]#gitlab-ctl start unicorn sidekiq

数据误删除

 

4.2 恢复

#查看要恢复的文件
[root@gitlab ~]#ll /var/opt/gitlab/backups/
total 400
drwx------  2 git  root   4096 Nov 16 23:10 ./
drwxr-xr-x 21 root root   4096 Nov 14 22:54 ../
-rw-------  1 git  git  399360 Nov 16 23:10 1668611425_2022_11_16_15.4.3_gitlab_backup.tar
#备份文件命名unix时间戳 备份年月日 版本号
​
#停止服务
[root@gitlab ~]#gitlab-ctl stop unicorn sidekiq
​
#恢复数据
[root@gitlab ~]#gitlab-rake gitlab:backup:restore BACKUP=1668611425_2022_11_16_15.4.3
​
#启动服务
[root@gitlab ~]#gitlab-ctl start unicorn sidekiq

确认数据已恢复

 

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

5.1 部署

5.1.1 安装java11

[root@jenkins ~]#apt install openjdk-11-jdk

5.1.2 下载安装包

Index of /jenkins/debian/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

5.1.3 安装软件包

dpkg -i jenkins_2.361_all.deb && systemctl stop jenkins

5.1.4 修改配置文件

vim /lib/systemd/system/jenkins.service

User=root
Group=root
Environment="JAVA_OPTS=-Djava.awt.headless=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true"
​
#重启后看到参数已正常添加
[root@jenkins ~]#ps -ef|grep jenkins
root       37200       1 26 22:07 ?        00:00:25 /usr/bin/java -Djava.awt.headless=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true -jar /usr/share/java/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080
root       37367   37040  0 22:09 pts/1    00:00:00 grep --color=auto jenkins

5.1.5 重载配置文件并重启jenkins

systemctl daemon-reload && systemctl restart jenkins.service

输入初始密码

 

安装推荐的插件

 

安装后重启jenkins

systemctl restart jenkins.service

5.2 安装gitlab插件

安装后重启jenkins

5.3 代码免秘钥克隆

5.3.1 通过脚本实现

#拷贝公钥到gitlab服务器
ssh-copy-id 10.0.0.150
​
#gitlab服务器偏好设置中添加SSH秘钥中jenkins公钥信息

构建克隆脚本

#!/bin/bash
cd /data/git/dev
rm -rf test1
git clone git@10.0.0.150:dev/test1.git
cd test1
scp index.html 10.0.0.7:/usr/share/nginx/html

创建jenkins任务实现克隆

 

 

构建任务后nginx服务器页面已更新

 

5.3.2 通过jenkins直接触发

创建任务

添加jenkins私钥

 

指定分支

 

通过脚本讲jenkins拉取的内容同步到nginx服务器中

 

执行构建

 

验证结果

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值