ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

运维 - 实践篇(四)- 基础 Gitlab 私服环境搭建

2022-02-03 14:35:51  阅读:238  来源: 互联网

标签:Gitlab 运维 gitlab 私服 srv SSH docker ssh


运维 - 实践篇(四)- 基础 Gitlab 私服环境搭建

前面我们已经完成了 Linux 服务器安全配置、Docker 基础开发环境搭建、Prometheus 监控环境。接下来我们要开始搭建 Gitlab + Jenkins + K8s + Harbor 的自动化持续集成环境。

本篇文章主要讲述 Gitlab 私服的搭建流程与相关常规的命令

非常遗憾!基于Docker搭建的Gitlab无法通过SSH方式拉取项目,目前暂时未能解决该问题

一、搭建GitLab私服环境

1、Docker 拉取 Gitlab 镜像文件

$ docker pull gitlab/gitlab-ce  

2、创建服务数据存储目录

srv 为 linux 下默认服务数据存储目录

其实不需要显示的创建数据存储目录,因为 Docker run 容器挂载时会自动创建不存在的文件目录。

$ mkdir -p /srv/gitlab/config
$ mkdir -p /srv/gitlab/logs
$ mkdir -p /srv/gitlab/data

3、启动容器、挂载容器卷

docker network inspect code-net | grep IPv4Address 查看当前docker网络IP分配详情

PS:这里的Gitlab有几点坑爹的地方

1、配置项目组添加用户的时候需要邮箱可用,而阿里云和腾讯云都禁用了25邮箱端口服务,导致使用云服务商的服务器搭建邮箱服务器较为困难。

2、一般来说会为 Gitlab 绑定二级域名地址,这里我使用的是阿里云的服务器但是在腾讯云买的域名以及做的备案(目前正在做阿里云备案)

# 指定容器 IPAddress
$ docker run --network=code-net --ip 172.18.0.7 -d --hostname 47.111.158.6 -p 443:443 -p 80:80 -p 22:22 --name gitlab --restart=always -v /srv/gitlab/config:/etc/gitlag -v /srv/gitlab/logs:/var/log/gitlab -v /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest

# 查看容器状态 health: starting
$ docker container ls | grep gitlab/gitlab-ce
d788d8b66338   gitlab/gitlab-ce:latest   "/assets/wrapper"        52 seconds ago   Up 51 seconds (health: starting)   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:22222->22/tcp   gitlab

# 这里启动之后需要修改容器内 SSH 端口配置,因为改动了 SSH 的端口 22 -> 22222
$ docker cp gitlab:/etc/gitlab/gitlab.rb /srv/gitlab/config/
# 该配置文件默认全部都注释 下面的指令可以追加也可以覆盖,视情况而定
# 配置 http 协议所使用的 gitlab 访问地址,可以写域名。如果端口不写的话默认为80端口
# 配置 ssh 协议所使用的访问地址和端口
# 此端口是 docker run 时 22 端口映射的 22222 端口
$ cat > /srv/gitlab/config/gitlab.rb << EOF
external_url 'http://47.111.158.6'     
gitlab_rails['gitlab_ssh_host'] = '47.111.158.6'  
gitlab_rails['gitlab_shell_ssh_port'] = 22
unicorn['worker_processes'] = 2
EOF

# 重启 gitlab docker 容器
$ docker restart gitlab

4、配置管理员账号

访问地址:http://47.111.158.6/users/sign_in

​ 因为英语水平有限,不知到刚进入这个界面的时候 直接 username:root 和 password:***就是管理员的账号

​ 当然,如果错过了管理员的配置,走用户注册流程之后还需要通过审核。这边的话可以进入容器内部修改用户信息与信息。

image-20220130190933994

容器内部修改用户信息(root用户信息)

# 进入容器内部 (先通过 docker ps -a 查看容器Id)
$ docker exec -it gitlab /bin/bash
# 
$ gitlab-rails console -e production
# 查看用户管理员
$ user = User.where(username:"root").first
# 或者
$ user = User.where(id: 1).first

# 配置新密码 新密码建议 大于 8位 不然保存的时候会提示错误
$ user.password = "code-fusheng"
# 确认密码
$ user.password_confirmation = "code-fusheng"
# 保存
$ user.save!

5、注册账号

访问地址:http://47.111.158.6/users/sign_in

即便注册了账号是需要通过管理员审核的。

image-20220131090823009

image-20220131092131055

image-20220131092337997

二、Gitlab 私服项目搭建

这里我创建了,名为 code-learn 的组,然后创建了 gitlab-demo 项目,就不一一介绍如何创建组和创建项目了,自行探索。

Gitlab 和 Github 以及 Gitee 差不多,都需要通过用户邮箱账户配置 SSH 密钥。当然喝多情况下我们的电脑都需要配置多个 Git 账户信息,这里我们用个人 Gitlab 以及 Github 账户演示多Git账户信息配置。

1、查看现有 SSH 配置信息

# Mac SSH 文件目录  /Users/[username]/.ssh
$ cd /Users/zhanghao/.ssh
# 
$ ssh-keygen -t rsa -C "2561035977@qq.com"
# 提示输入当前 SSH key 输入之后会生成对应的 ***_pub & *** 公钥与私钥
Enter file in which to save the key (/Users/zhanghao/.ssh/id_rsa): 
$ id_rsa_gitlab_fs
# 查看公钥 并将公钥复制配置在 gitlab 或者 github 对应的 SSH 配置
# gitlab http://localhost/-/profile/keys
$ cat id_rsa_gitlab_fs.pub
ssh-rsa *******************= 2561035977@qq.com
# 多账户 git ssh 配置
$ cat >> /Users/zhanghao/.ssh/config << EOF
Host gitlab_fs
    HostName 47.111.158.6
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_gitlab_fs
    User 2561035977@qq.com
EOF

image-20220131095903529

到这里我们完成了基础的

2、创建测试项目

image-20220201131513396

3、本地 Git 拉取项目

git clone ssh://gitlab_fusheng:22222/code-learn/gitlab-demo.git

git clone http://47.111.158.6/root/gitlab-public.git

其他备忘

心情很复杂,因为各种原因导致通过 docker 搭建的 gitlab 环境无法使用 SSH 命令拉取项目,尝试了很多种方案也无济于事,网上的案例也并没有 SSH 拉取代码的操作,目前只能通过 HTTP 方式拉取项目。我并不知道这对后面的自动化部署有设么影响,抱歉了。

标签:Gitlab,运维,gitlab,私服,srv,SSH,docker,ssh
来源: https://blog.csdn.net/qq_42999835/article/details/122775802

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有