1.背景
在centos7.9上安装gitlab-ce,ce是免费版,
本机的ip是110.110.110.100,下面配的ip都是这个;
本机已经安装了nginx和redis,安装gitlab有自带的nginx和redis,我禁掉了,用我自己的nginx和redis。
2.配置repo源
到/etc/yum.repos.d目录下创建gitlab-ce.repo文件,以下是文件内容
[root@horse yum.repos.d]# cat gitlab-ce.repo
[gitlab-ce]
name=gitlab-ce
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
gpgcheck=0
enabled=1
3.安装
yum install -y gitlab-ce
安装好后,修改配置 vi /etc/gitlab/gitlab.rb ,默认是这个配置文件
1.external_url改成本机的ip,如下:
注意:我用了自己的nginx,这个参数后面还要加上nginx端口号,具体看下面nginx配置。如果用gitlab自带的nginx,默认端口号是80,就不用加上端口
external_url 'http://110.110.110.100:13033'
这个external_url作用就是gitlab告诉别人它的对外访问地址,就是外面用浏览器登录的地址。比如在gitlab界面上点了一个链接/a/b/c,这个链接跳回在浏览器上地址就是http://110.110.110.100:13033/a/b/c,如果不配external_url ,gitlab默认返回的是主机名,浏览器上地址就是http://{主机名}/a/b/c,这个主机名,如果你浏览器所在机器无法解析就不能访问,还要手动改成ip地址+端口。
2.修改git存储目录,先在磁盘上创建目录/mnt/disk2/gitlab-data,
修改配置git_data_dirs,注意这个配置加了注释“#”,要把注释去掉
git_data_dirs({
"default" => {
"path" => "/mnt/disk2/gitlab-data"
}
})
4.加载配置,gitlab-ctl reconfigure
这个会运行比较久(我这里大概20分钟)
这是运行成功的图,可以看到密码文件,和提示密码在24小时后过期
可以到/mnt/disk2/gitlab-data目录下,可以看到自动生成了相关目录。
5.启动gitlab-ctl start
启动好后,查看状态gitlab-ctl status
可以看到启动了哪些东西
很多服务是我不需要的,我只要git功能,所以禁用了一些服务
vi /etc/gitlab/gitlab.rb,把要禁的服务改成false,注意去掉前的注释,如下:
我禁用了这些
redis['enable'] = false
nginx['enable'] = false
logrotate['enable'] = false
gitlab_kas['enable'] = false
prometheus['enable'] = false
alertmanager['enable'] = false
node_exporter['enable'] = false
postgres_exporter['enable'] = false
gitlab_exporter['enable'] = false
改完配置后执行"gitlab-ctl reconfigure",这个执行完直接“gitlab-ctl status"查看服务是否还在。我只留了这几个服务。
注意,禁用了nginx,不能web访问,因为我本机安装了nginx,所以禁用了,后面配置成自己的nginx.
gitlab每个服务的功能如下(网上抄的,自己参考,不想用的就禁掉)
1.nginx:作为Web服务器和反向代理,用于访问GitLab的Web界面。可以关闭,但会导致无法通过Web界面访问GitLab。
2.prometheus_monitoring:提供监控和报警功能,收集和分析GitLab的性能指标。可以关闭,不影响基本代码存放功能。
3.registry:提供Docker镜像仓库功能。可以关闭,除非需要使用GitLab作为私有Docker镜像仓库。
4.gitlab_workhorse:提供HTTP请求代理和负载均衡功能,优化Git操作和文件传输。可以关闭,但可能影响性能优化。
5.puma:作为GitLab的Web服务器,处理HTTP请求和提供Web界面和API访问功能。不建议关闭,是GitLab的核心组件之一。
6.postgresql:作为数据库存储引擎,存储GitLab应用程序的数据。不建议关闭,是GitLab的核心组件之一。
7.redis:提供缓存和键值存储功能,改善GitLab的性能。可以关闭,但可能影响性能优化。
8.redis_master_role:作为Redis的主节点角色,提供高可用性和复制功能。不建议关闭,是GitLab的核心组件之一。
9.redis_replica_role:作为Redis的从节点角色,提供高可用性和复制功能。不建议关闭,是GitLab的核心组件之一。
10.logrotate:提供日志文件管理和轮转功能,管理GitLab的日志文件。可以关闭,但需要手动管理和清理日志文件。
1.manage_accounts:提供账户管理功能,包括用户和权限管理。可以关闭,但无法进行用户和权限管理操作。
12.manage_storage_directories:提供存储目录管理功能,管理GitLab的数据存储路径。可以关闭,但需要手动管理存储目录。
13.gitlab_pages:提供GitLab Pages服务的支持功能,用于托管静态网页。可以关闭,除非需要使用GitLab Pages功能。
14.pages_nginx:作为GitLab Pages服务的Nginx支持功能,处理静态网页请求。可以关闭,除非需要使用GitLab Pages功能。
15.gitlab_kas:提供Kubernetes集成功能。可以关闭,除非需要使用GitLab与Kubernetes集成。
16.mattermost:提供团队协作和聊天功能。可以关闭,除非需要使用GitLab内置的Mattermost功能。
17.mattermost_nginx:作为Mattermost的Nginx支持功能,处理Mattermost的HTTP请求。可以关闭,除非需要使用GitLab内置的Mattermost功能。
18.registry_nginx:作为Docker镜像仓库的Nginx支持功能,处理Docker镜像请求。可以关闭,除非需要使用GitLab作为私有Docker镜像仓库。
19.monitoring_role:提供监控组件的角色。可以关闭,不影响基本代码存放功能。
20.prometheus:提供监控和报警功能,收集和分析GitLab的性能指标。可以关闭,不影响基本代码存放功能。
21.alertmanager:用于接收和处理监控报警信息。可以关闭,不影响基本代码存放功能。
22.node_exporter:收集主机的系统和硬件指标,供Prometheus监控使用。可以关闭,不影响基本代码存放功能。
23.redis_exporter:收集Redis的性能指标,供Prometheus监控使用。可以关闭,不影响基本代码存放功能。
24.postgres_exporter:收集PostgreSQL数据库的性能指标,供Prometheus监控使用。可以关闭,不影响基本代码存放功能。
25.pgbouncer_exporter:收集PgBouncer连接池的性能指标,供Prometheus监控使用。可以关闭,不影响基本代码存放功能。
26.gitlab_exporter:提供GitLab自身的性能指标,供Prometheus监控使用。可以关闭,不影响基本代码存放功能。
27.grafana:提供可视化和仪表盘功能,用于展示和分析监控指标。可以关闭,不影响基本代码存放功能。
28.gitaly:提供Git分布式文件系统的后端存储服务,处理Git操作和文件传输。不建议关闭,是GitLab的核心组件之一。
29.praefect:提供Git分布式文件系统的负载均衡和高可用性功能。不建议关闭,是GitLab的核心组件之一。
30.storage_check:用于检查存储目录的完整性和状态,确保数据的一致性。可以关闭,但无法进行存储目录的完整性检查。
31.redis_sentinel_role:作为Redis Sentinel的角色,提供高可用性和故障切换功能。不建议关闭,是GitLab的核心组件之一。
32.sentinel:作为Redis Sentinel的组件,管理Redis的高可用性和故障切换。不建议关闭,是GitLab的核心组件之一。
33.geo_postgresql:用于GitLab Geo功能的数据库存储引擎,复制和同步GitLab数据。可以关闭,除非需要使用GitLab Geo功能。
34.pgbouncer:作为PgBouncer连接池的前端代理,提供连接池和性能优化功能。可以关闭,不影响基本代码存放功能。
35.patroni:提供PostgreSQL的高可用性和故障切换功能。可以关闭,除非需要使用高可用性的PostgreSQL数据库。
36.consul:提供服务发现和配置管理功能。可以关闭,不影响基本代码存放功能。
37.rails: 是基于ruby的一个web框架,用于快速开发基于ruby开发web应用的框架,类似springboot,
38.GitLab Workhorse: 处理大规模的HTTP请求,优化GitLab的性能
39.Sidek: GitLab的后端任务处理服务,用于处理队列中的作业。
4 配置本地nginx
注意我本地安装了redis
1.vi /etc/gitlab/gitlab.rb,改下面几个配置,改完记得重启
gitlab-ctl reconfigure,这个命令就可以重启,不放心的话再执行gitlab-ctl restart
external_url 'http://110.110.110.100:13033' #nginx代理的端口
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "110.110.110.100:18888"
gitlab_rails['trusted_proxies'] = ["110.110.110.100"]
gitlab_rails['redis_host'] = "127.0.0.1" #这是我本地redis服务
gitlab_rails['redis_port'] = 6379 #这是我本地redis端口
web_server['external_users'] = ['root'] #这是我本地nginx的启动用户
注意配置里有redis参数,用的是我本地装的redis,如果不配redis,gitlab_rails会报错连不上redis,用浏览器访问也会报错,也就是说必须要有redis,或用gitlab自带的redis(前面的步骤中不要禁掉,我是禁掉了,用我自己的redis)
2.在nginx配置中加入gitlab的配置,然后重启nginx
include /mnt/disk2/gitlab-data/gitlab-nginx.conf;
文件内容如下:
upstream my-gitlab {
server 110.110.110.100:18888;
}
server {
listen 13033;
server_name 110.110.110.100;
location / {
client_max_body_size 0;
gzip off;
## Some requests take more than 30 seconds.
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://my-gitlab;
}
}
3.浏览器访问
用root用户登录,从之前提示中获取密码文件,查看密码
cat /etc/gitlab/initial_root_password
改一下登录密码