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服务器中
执行构建
验证结果