前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >gitlab 15.8 on rocky 8

gitlab 15.8 on rocky 8

原创
作者头像
对你无可奈何
发布2023-03-02 15:30:07
1.3K0
发布2023-03-02 15:30:07
举报
文章被收录于专栏:运维专栏运维专栏运维专栏

背景:

过去一直gitlab搭建在kubernetes上,但是很多的管理不方便:资源的备份。pv,pvc这些管理扩容,升级,迁移,上传文件的大小等种种问题。现在想把gitlab移出来直接单独部署。操作系统rocky 8 or rocky9(为什么特别强调 8 or 9呢?扫了一眼国内tsinghua的源只有el7的源了。 8 9 搭建安装会报各种问题)

gitlab的简单搭建

修改主机名:

hostnamectl set-hostname XXXX
image.png
image.png

挂载数据盘

个人习惯,挂载一个数据盘为data目录。不想挂载也可以直接使用系统盘了。这里服务器都是腾讯云CVM:

image.png
image.png

添加gitlab yum源

扫了一眼基本国内用的清华的源,but没有el8 or el9的源:

https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/?C=M&O=D
image.png
image.png

rocky8 or 9 rpm -ivh el7的源会出现如下错误:

[root@gitlab ~]# rpm -ivh gitlab-ce-15.8.3-ce.0.el7.x86_64.rpm 
warning: gitlab-ce-15.8.3-ce.0.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID f27eab47: NOKEY
error: Failed dependencies:
	perl is needed by gitlab-ce-15.8.3-ce.0.el7.x86_64
	policycoreutils-python is needed by gitlab-ce-15.8.3-ce.0.el7.x86_64
image.png
image.png
[root@gitlab ~]# yum install perl 
[root@gitlab ~]# yum install policycoreutils-python*
image.png
image.png

恩 el8 el9不能用的....policycoreutils-python包发生了改变貌似8开始!无法正常安装rpm包!

到gitlab 官方package中查找是否有el8之上对应版本rpm:

https://packages.gitlab.com/gitlab/gitlab-ce
image.png
image.png

以el8 15.8.3 rpm包为例:

image.png
image.png
rpm -ivh gitlab-ce-15.8.3-ce.0.el8.x86_64.rpm
image.png
image.png

配置并启动gitlab

简单配置服务

vi /etc/gitlab/gitlab.rb

这里只配置了external_url对外暴露的域名,将gitlab.example.com替换成自己的域名:

external_url 'http://gitlab.example.com'
image.png
image.png

加载生成配置:

gitlab-ctl  reconfigure
image.png
image.png
image.png
image.png

貌似服务会自动启动.......

中间可能会这样:

image.png
image.png

如果实在卡的很久可以考虑执行一下:

sudo systemctl restart gitlab-runsvdir
image.png
image.png

关于服务管理的常用命令:

简单看一眼即可:

## 启动服务
gitlab-ctl start
## 重启服务
gitlab-ctl restart 
## 查看状态
gitlab-ctl status 
## 停止
gitlab-ctl stop

image.png
image.png

浏览器访问gitlab

正常浏览器登陆gitlab

浏览器登陆gitlab.xxx.com

image.png
image.png

第一次打开会提示让你修改root的密码,修改完后保存,之后就可以通过用户名密码登录,root为默认管理员账号

**管理员账号为root

密码保存在配置文件内**

cat /etc/gitlab/initial_root_password

but我这里没有自动生成.....

[root@gitlab gitlab]# ll
total 164
-rw------- 1 root root 140237 Mar  1 17:39 gitlab.rb
-rw------- 1 root root  19412 Mar  1 17:39 gitlab-secrets.json
drwxr-xr-x 2 root root   4096 Mar  1 17:39 trusted-certs
[root@gitlab gitlab]# pwd
/etc/gitlab
[root@gitlab gitlab]# find / -name initial_root_password
[root@gitlab gitlab]# 
image.png
image.png

注:总结一下为什么没有产生initial_root_password 我rpm 安装过,然后卸载了只删除了 /etc/gitlab and /opt/gitlab 尝试了很多次后有一个/var/opt/gitlab 目录没有删除...要问我怎么知道的...登陆后看管理员创建时间是第一次安装的.find了一下目录发现有那么的一个目录.......

如何重置root密码?

没有/etc/gitlab/initial_root_password怎么破?,可以使用gitlab-rake命令重置gitlab密码:

[root@gitlab gitlab]# sudo gitlab-rake "gitlab:password:reset[root]"

输入自定义的密码:

image.png
image.png

继续浏览器登陆gitlab.xxxx.com 用户名root,密码输入刚才设置的密码(可能要稍微等一会才能生效),也可能会跳转到一个http://gitlab.xxxx.com/xprober.php的页面

image.png
image.png

不要慌,去掉xprober.php重新刷新一次,正常登陆gitlab控制台:

image.png
image.png

gitlab控制台的简单设置:

关闭系统注册功能:

醒目提示框选择Deactivate:

image.png
image.png

去掉Sign-up restrictions下两个勾选

image.png
image.png

sve changes

image.png
image.png
image.png
image.png

修改语言 preferences

image.png
image.png

Localization -Chinese sample

image.png
image.png

save changes 保存配置

image.png
image.png

刷新一下页面:

image.png
image.png

回到主页:

image.png
image.png

接下来准备搞什么呢? web添加ssl证书postgresql 用容器外部部署,用户ldap集成

gitlab 增加https证书

处于安全性考虑,gitlab增加ssl证书还是很有必要的。这里先配置一下基于ssl证书的访问:

上传证书到服务器指定目录

解压证书到/etc/gitlab/ssl目录下(这个目录可以自定义,ssl证书为腾讯云TrustAsia 域名型(DV)通配符证书):

image.png
image.png

修改gitlab.rb配置文件:

external_url修改为https域名:

external_url 'https://gitlab.xxx.com'
image.png
image.png

nginx配置默认就设置了如下:

nginx['redirect_http_to_https'] = false
nginx['redirect_http_to_https_port'] = 80

nginx['ssl_certificate'] = "/etc/gitlab/ssl/xxxx.com_bundle.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/xxxx.com.key"
image.png
image.png

重新加载配置文件:

sudo gitlab-ctl reconfigure

netstat -ntlp 发现nginx监听443端口了:

image.png
image.png

验证https访问:

浏览器访问https地址,可能会偶现502...毕竟服务重启要一定时间,稍微等待刷新:访问https域名正常如下:

image.png
image.png

gitlab 集成外部PostgreSQL

为什么把postgresql 搞出来呢?因为一直对postgresql这东西不熟悉,不好维护。就准备把postgresql单独拿出来用容器部署.....出了问题好歹能第一时间还原阿......。升级版本我大不了新建一个容器导入呗......

简单安装并配置dokcer

cd /etc/yum.repos.d/
wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
image.png
image.png

替换repo 中的url为国内地址(vim 打开文件输入)

:%s/download.docker.com/mirrors.tuna.tsinghua.edu.cn\/docker-ce/g
image.png
image.png
image.png
image.png
dnf list docker-ce
dnf install docker-ce --nobest -y
image.png
image.png

启动docker 并将docker加入开机启动:

systemctl start docker
systemctl enable docker
image.png
image.png

注:docker这里就简单配置一下了只是,毕竟只是演示。

docker启动postgresql

关于gitlab 与postgresql版本对应最低要求,参照,https://docs.gitlab.com/ee/administration/package_information/postgresql_versions.html

image.png
image.png

咱们这里就搭建一个13.6的postgresql了!

创建postgresql存储数据目录

mkdir -p /data/gitlab/pgdata

启动postgresql容器

docker启动 postgresql容器:

docker run --name dockerPG13 \
-e POSTGRES_PASSWORD=postgres \
-v /data/gitlab/pgdata:/var/lib/postgresql/data \
-p 54322:5432 \
-d postgres:13.6
image.png
image.png

进入postgresql容器 创建对应数据库:

查看CONTAINER ID 并进入容器:

docker ps
docker exec -it 49318879d7c8 bash

创建对应数据库:

root@49318879d7c8:/# psql -U postgres -h localhost -p 5432
psql (13.6 (Debian 13.6-1.pgdg110+1))
Type "help" for help.

postgres=# create role gitlab login encrypted password 'gitlab';
CREATE ROLE
postgres=# create database gitlabhq_production owner=gitlab ENCODING = 'UTF8';
CREATE DATABASE
postgres=# \c gitlabhq_production
You are now connected to database "gitlabhq_production" as user "postgres".
gitlabhq_production=# CREATE EXTENSION IF NOT EXISTS btree_gist;
CREATE EXTENSION
gitlabhq_production=#  CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE EXTENSION
gitlabhq_production=# \q
root@49318879d7c8:/# exit
exit
image.png
image.png

修改gitlab.rb配置文件:

vim /etc/gitlab/gitlab.rb 修改如下部分:

image.png
image.png
724 gitlab_rails['db_adapter'] = "postgresql"
725 gitlab_rails['db_encoding'] = "utf8"
726 gitlab_rails['db_collation'] = nil
727 gitlab_rails['db_database'] = "gitlabhq_production"
728 gitlab_rails['db_username'] = "gitlab"
729 gitlab_rails['db_password'] = "gitlab"
730 gitlab_rails['db_host'] = "10.0.4.58
731 gitlab_rails['db_port'] = 54322
1139  postgresql['enable'] = false
image.png
image.png

重载生成postgresql配置文件

sudo gitlab-ctl reconfigure
image.png
image.png
image.png
image.png

验证配置生效:

cat /opt/gitlab/embedded/service/gitlab-rails/config/database.yml
image.png
image.png

其他强调的:

再次登陆 貌似密码又会没有了阿?毕竟换了postgresql数据库....

image.png
image.png

继续重置一下密码,参照:

https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password
image.png
image.png
image.png
image.png
 sudo gitlab-rake "gitlab:password:reset"
image.png
image.png

恩关闭系统注册修改语言再来一遍.......

image.png
image.png
image.png
image.png
image.png
image.png

刷新

image.png
image.png

算是重新复习一遍吧....

更改gitlab默认存储目录:

创建新的存储目录

gitlab的默认存储路径位于/var/opt/gitlab/git-data

/var/opt/gitlab/git-data

我个人习惯是将数据文件存储到/data目录下(/data是一般挂载一个数据盘与系统盘分开),创建/data/gitlab/git-data目录:

mkdir -p /var/opt/gitlab/git-data
image.png
image.png

修改gitlab.rb配置文件:

貌似644行:

image.png
image.png
 git_data_dirs({
   "default" => {
     "path" => "/data/gitlab/git-data",
     "failure_count_threshold" => 10,
     "failure_wait_time" => 30,
     "failure_reset_time" => 1800,
     "failure_timeout" => 30
    }
 })
image.png
image.png

同步repositories 仓库文件到新路径:

cd /var/opt/gitlab/git-data
rsync -av repositories /data/gitlab/git-data/
image.png
image.png
image.png
image.png

当然了 也可以用cp mv 将文件夹复制过去,最好保持一下目录权限,如果启动后有异常,记得检查一下目录权限,当然了 gitlab-ctl tail 查看日志才是更有效的方法!

为了区分验证修改文件目录是否生效,备份原git-data文件夹:

cd /var/opt/gitlab
mv git-data git-dataold
image.png
image.png

生成配置,并重启gitlab服务:

gitlab-ctl  reconfigure
gitlab-ctl restart
image.png
image.png

浏览器登陆gitlab:

登陆web控制台创建一个群组-zhangpeng

image.png
image.png

创建一个项目demo:

image.png
image.png

克隆项目到本地,并提交文件到仓库:

image.png
image.png

只是单纯的想知道gitlab服务器上面操作查找demo的存储位置...原来是在repositories/@hashed目录下....

image.png
image.png

就先记录到这里吧.....后面再弄一下ldap等其他的集成等其他的功能.........

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景:
  • gitlab的简单搭建
    • 修改主机名:
      • 挂载数据盘
        • 添加gitlab yum源
          • 配置并启动gitlab
            • 简单配置服务
            • 加载生成配置:
            • 关于服务管理的常用命令:
          • 图片
            • 正常浏览器登陆gitlab
            • 如何重置root密码?
          • gitlab控制台的简单设置:
            • 关闭系统注册功能:
            • 修改语言 preferences
        • gitlab 增加https证书
          • 上传证书到服务器指定目录
            • 修改gitlab.rb配置文件:
              • 重新加载配置文件:
                • 验证https访问:
                • gitlab 集成外部PostgreSQL
                  • docker启动postgresql
                    • 创建postgresql存储数据目录
                    • 启动postgresql容器
                    • 进入postgresql容器 创建对应数据库:
                  • 修改gitlab.rb配置文件:
                    • 重载生成postgresql配置文件
                      • 验证配置生效:
                        • 其他强调的:
                        • 更改gitlab默认存储目录:
                          • 创建新的存储目录
                            • 修改gitlab.rb配置文件:
                              • 同步repositories 仓库文件到新路径:
                                • 生成配置,并重启gitlab服务:
                                  • 浏览器登陆gitlab:
                                  相关产品与服务
                                  容器服务
                                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档