GitLab简介
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。被广泛使用的基于git的开源代码管理平台, 基于Ruby on Rails构建, 主要针对软件开发过程中产生的代码和文档进行管理, Gitlab主要针对group和project两个维度进行代码和文档管理, 其中group是群组, project是工程项目, 一个group可以管理多个project, 可以理解为一个群组中有多项软件开发任务, 而一个project中可能包含多个branch, 意为每个项目中有多个分支, 分支间相互独立, 不同分支可以进行归并。
GitLab很耗内存,建议内存在4G以上
前期准备
1.更新系统
首先,确保系统是最新的 ,执行一下命令
dnf update
2.安装必要的软件包
安装GitLab所需的依赖,包括curl
和policycoreutils-python-utils
dnf install -y curl policycoreutils-python-utils
3.安装邮件服务并设置开机自启动
dnf install postfix
systemctl enable postfix
systemctl start postfix
4.配置防火墙
开放GitLab所需端口,通常是HTTP(80)和HTTPS(443):
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
安装GitLab
添加GitLab仓库
添加GitLab软件包存储库
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
安装GitLab CE
使用DNF安装GitLab Community Edition:
dnf install -y gitlab-ce
配置GitLab
在安装完成后,需要设置GitLab的外部访问URL及端口。编辑 /etc/gitlab/gitlab.rb
文件
### 项目访问的地址 120.XXX.XXX.XX是服务器地址,也可以直接配置域名 8888是端口
external_url 'http://120.XXX.XXX.XX:8888'
###postgresql的相关配置
postgresql['shared_buffers'] = "64MB"
postgresql['max_worker_processes'] = 1
postgresql['shared_buffers'] = "64MB"
sidekiq['concurrency'] = 1
puma['worker_processes'] = 1
###修改端口
puma['port'] = 8687
nginx['worker_processes'] = 2
###禁用内部redis.
redis['enable'] = false
####设置外部redis链接参数.
gitlab_rails['redis_host'] = "127.0.0.1"
gitlab_rails['redis_port'] = 6379
##服务器上Redis的密码
gitlab_rails['redis_password'] = "XXXX"
gitlab_rails['redis_database'] = 2
更新GitLab配置信息
刷新配置的时间, 大概五分钟左右, 在这个期间不要动, 防止出现意外情况发生
##更新配置
gitlab-ctl reconfigure
配置更新完成后,重启gitlab服务
##重启服务
gitlab-ctl restart
访问GitLab
在浏览器中输入设置的外部URL,使用root账户登录,root账号初始密码记录在 /etc/gitlab/initial_root_password文件中。
git关闭注册入口
既然搭建gitlab服务器,大部分用户的场景代码都是不对外开源的。所以我们需要关闭git注册接口。
新建用户
添加新用户信息,名称可以为中文;用户名就是账号,例如zhangsan;电子邮件,输入用户的邮箱,确定是真实邮箱就行;密码会在新用户初次登录时强制让用户自行设置;
用户权限设置如下图,默认是普通;
卸载GitLab
1.停止gitlab服务
gitlab-ctl stop
2.卸载gitlab
rpm -e gitlab-ce
3.查看gitlab进程
ps aux | grep gitlab
4.杀掉gitlab进程
kill -9 13757 #(13757 是第一个进程的pid号,根据显示情况输入)
杀掉后,在ps aux |grep gitlab确认一遍,还有没有gitlab的进程,如果还有进程请用以下命令杀死所有进程。
ps -ef | grep gitlab | xargs kill -s 9
5.删除所有包含gitlab文件
find / -name gitlab | xargs rm -rf
报错处理
1.OpenSSL::Cipher::CipherError
原因: 没有导入原来的加密信息/etc/gitlab/gitlab-secrets.json
导致,重置下即可。
解决办法:输入gitlab-rails console
,等待进入rails控制台
输入ApplicationSetting.current.reset_runners_registration_token!
,显示结果为true
exit 退出
再次尝试保存操作,已正常。
2.忘记密码
gitlab-rake "gitlab:password:reset"输入需要修改的密码的用户账号,然后输入修改后的密码,即可完成对指定用户的密码修改。
3.Could not open extension control file "/usr/pgsql-16/share/extension/btree_gist.control": 没有那个文件或目录.
这个错误信息是 PostgreSQL 数据库服务器尝试加载 btree_gist
扩展时找不到对应的控制文件。btree_gist
是一个常用的 PostgreSQL 扩展,它提供了 GiST 索引支持的 B-tree 相关操作符类,适用于优化某些类型的数据查询。
首先,需要确保 btree_gist
扩展已经安装在你的 PostgreSQL 环境中。可以通过检查 /usr/pgsql-16/share/extension/
目录下是否有 btree_gist.control
文件来验证。如果确实没有这个文件,那么就需要安装这个扩展。
执行以下命令安装postgresql16-contrib扩展
yum install postgresql16-contrib
安装完成,应该能够在数据库中成功创建 btree_gist
扩展了。
可以通过以下 SQL 命令在想要使用的数据库中创建它。
CREATE EXTENSION IF NOT EXISTS btree_gist;
如果问题仍然存在,可能是因为 PostgreSQL 的安装路径不标准或者环境变量设置问题。