CentOS7安装Gitlab13详细步骤
环境配置
CentOS Version | 7.6 |
Gitlab Version | gitlab-ce-13.12.15-ce.0.el7.x86_64 |
下载rpm包
Gitlab历史版本下载地址:https://packages.gitlab.com/gitlab/gitlab-ce(我在这里下载的 gitlab-ce-13.12.15-ce.0.el7.x86_64.rpm 建议使用下载工具进行下载)
wget https://d20rj4el6vkp4c.cloudfront.net/7/8/el/7/package_files/76487.rpm?t=1718811948_59a1b0efcb67106db99181bc8e4ceecdd9b6f3d9
清华大学的镜像站更新比较慢,有的老版本(如13版本)都没有更新到13版本的最新版本
安装依赖
yum -y install policycoreutils openssh-server openssh-clients postfix policycoreutils-python
开始rpm安装gitlab-ce-13.12.15-ce.0.el7.x86_64.rpm文件
rpm -ivh gitlab-ce-13.12.15-ce.0.el7.x86_64.rpm
安装完成关注以下输出,表示已经安装成功
修改gitlab配置文件信息,指定服务ip和端口号
view /etc/gitlab/gitlab.rb
修改内容如下:
将external_url后面的url替换为自己的ip+端口号,(查看端口是否被占用,防火墙是否放开)
修改gitlab仓库存储目录
# 把注释取消然后指定新的仓库存储位置 git_data_dirs({ "default" => { "path" => "/home/gitlab/git-data" } })
添加配置信息
第一次配置信息,需要一定的时间,请耐心等待,直到最后看到gitlab Reconfigured! 表示配置完成。
[root@localhost ~]# gitlab-ctl reconfigure ..... ..... ..... Running handlers: Running handlers complete Chef Client finished, 426/609 resources updated in 02 minutes 55 seconds gitlab Reconfigured!
注:如果发现ip或者端口等配置信息需要更改,每次更改完之后,一定要重新加载配置 gitlab-ctl reconfigure
重启gitlab服务
看到如下的信息,“ok,run ”表示各个模块启动成功。gitlab-ctl start | stop | restart
[root@localhost ~]# gitlab-ctl restart ok: run: alertmanager: (pid 224124) 0s ok: run: gitaly: (pid 224146) 0s ok: run: gitlab-monitor: (pid 224167) 1s ok: run: gitlab-workhorse: (pid 224192) 0s ok: run: logrotate: (pid 224211) 1s ok: run: nginx: (pid 224218) 0s ok: run: node-exporter: (pid 224294) 1s ok: run: postgres-exporter: (pid 224307) 0s ok: run: postgresql: (pid 224318) 0s ok: run: prometheus: (pid 224327) 0s ok: run: redis: (pid 224371) 0s ok: run: redis-exporter: (pid 224376) 1s ok: run: sidekiq: (pid 224393) 0s ok: run: unicorn: (pid 224409) 0s
到这里已经完成了对gitlab的安装
浏览器登陆
浏览器访问,http://ip:端口号
第一次访问,直接进入更改root账号密码的页面,只需要填写密码即可,修改完,直接跳入到登陆页面
进入到gitlab页面后,即可开始创建自己项目(完成)
遇到问题
1、访问首页报502查看后台日志返现两个错误
2024-06-20_01:12:21.24719 {"timestamp":"2024-06-20T01:12:21.245Z","pid":24887,"message":"* Listening on unix:///var/opt/gitlab/gitlab-rails/sockets/gitlab.socket"} 2024-06-20_01:12:21.25125 bundler: failed to load command: puma (/opt/gitlab/embedded/bin/puma) 2024-06-20_01:12:21.25130 Errno::EADDRINUSE: Address already in use - bind(2) for "127.0.0.1" port 8080 2024-06-20_01:12:21.25131 /opt/gitlab/embedded/lib/ruby/gems/2.7.0/gems/puma-5.1.1/lib/puma/binder.rb:288:in `initialize' 2024-06-20_01:12:21.25133 /opt/gitlab/embedded/lib/ruby/gems/2.7.0/gems/puma-5.1.1/lib/puma/binder.rb:288:in `new' 2024-06-20_01:12:21.25134 /opt/gitlab/embedded/lib/ruby/gems/2.7.0/gems/puma-5.1.1/lib/puma/binder.rb:288:in `add_tcp_listener' 2024-06-20_01:12:21.25135 /opt/gitlab/embedded/lib/ruby/gems/2.7.0/gems/puma-5.1.1/lib/puma/binder.rb:168:in `block in parse' 2024-06-20_01:12:21.25139 /opt/gitlab/embedded/lib/ruby/gems/2.7.0/gems/puma-5.1.1/lib/puma/binder.rb:152:in `each' 2024-06-20_01:12:21.25141 /opt/gitlab/embedded/lib/ruby/gems/2.7.0/gems/puma-5.1.1/lib/puma/binder.rb:152:in `parse' 2024-06-20_01:12:21.25142 /opt/gitlab/embedded/lib/ruby/gems/2.7.0/gems/puma-5.1.1/lib/puma/runner.rb:144:in `load_and_bind' 2024-06-20_01:12:21.25143 /opt/gitlab/embedded/lib/ruby/gems/2.7.0/gems/puma-5.1.1/lib/puma/cluster.rb:342:in `run' 2024-06-20_01:12:21.25144 /opt/gitlab/embedded/lib/ruby/gems/2.7.0/gems/puma-5.1.1/lib/puma/launcher.rb:182:in `run' 2024-06-20_01:12:21.25145 /opt/gitlab/embedded/lib/ruby/gems/2.7.0/gems/puma-5.1.1/lib/puma/cli.rb:80:in `run' 2024-06-20_01:12:21.25151 /opt/gitlab/embedded/lib/ruby/gems/2.7.0/gems/puma-5.1.1/bin/puma:10:in `<top (required)>' 2024-06-20_01:12:21.25194 /opt/gitlab/embedded/bin/puma:23:in `load' 2024-06-20_01:12:21.25197 /opt/gitlab/embedded/bin/puma:23:in `<top (required)>'
第1个报错是:/var/opt/gitlab/gitlab-rails/sockets/gitlab.socket: connect: connection refused
第2个报错是:Errno::EADDRINUSE: Address already in use - bind(2) for "127.0.0.1" port 8080
在我的环境只解决端口被占用的问题就可以了,把上面“修改gitlab配置文件信息,指定服务ip和端口号”,调整为8082就可以了(重新gitlab-ctl reconfigure/gitlab-ct restart即可)
补充:报8080端口被占用,查看8080端口发现是puma在监听8080端口;经过上诉办法调整成8082后重启,发现监听8082端口的是nginx,8080看来是puma的端口所以冲突了
补充(since24-06-26):后来发现8082也是gitlab服务群中sidekiq服务默认监听的端口(所以要换一个没有用的端口)
我这里还是把gitlab对外服务的端口修改成8080,操作如下:
view /etc/gitlab/gitlab.rb
external_url 'http://172.16.68.85:8080' ##对外服务端口还是改成8080
puma['port'] = 8070 ##放开这一行,并且把端口改成8070(注意挑选一个gitlab没有使用的端口,之前我改成8060发现gitlab的nginx也默认在监听8060端口,艹,导致访问还是一直报502)
然后执行 gitlab-ctl reconfigure
配置完成后,会自动重新生成puma的配置文件/var/opt/gitlab/gitlab-rails/etc/puma.rb而且里面的端口也同步成了8070
完成,已经把gitlab的对外服务端口就调整成为了8080
其他
邮件配置
gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "your.smtp.server" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "your.smtp user" gitlab_rails['smtp_password'] = "your.smtp password" gitlab_rails['smtp_domain'] = "your.demain.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_openssl_verify_mode'] = 'peer' gitlab_rails['gitlab_email_from'] = 'gitlab@mail.domain.com' gitlab_rails['gitlab_email_reply_to'] = 'noreply@mail.domain.com'
查看服务
查看服务状态
[root@localhost ~]# gitlab-ctl status run: alertmanager: (pid 224124) 81166s; run: log: (pid 223418) 81323s run: gitaly: (pid 224146) 81166s; run: log: (pid 223304) 81324s run: gitlab-monitor: (pid 224167) 81166s; run: log: (pid 223352) 81324s run: gitlab-workhorse: (pid 224192) 81165s; run: log: (pid 223250) 81325s run: logrotate: (pid 236092) 1964s; run: log: (pid 223251) 81325s run: nginx: (pid 227942) 80560s; run: log: (pid 223181) 81326s run: node-exporter: (pid 224294) 81164s; run: log: (pid 223308) 81324s run: postgres-exporter: (pid 224307) 81163s; run: log: (pid 223428) 81323s run: postgresql: (pid 224318) 81163s; run: log: (pid 223216) 81325s run: prometheus: (pid 224327) 81162s; run: log: (pid 223417) 81323s run: redis: (pid 224371) 81162s; run: log: (pid 223215) 81325s run: redis-exporter: (pid 224376) 81162s; run: log: (pid 223354) 81324s run: sidekiq: (pid 227863) 80573s; run: log: (pid 223158) 81326s run: unicorn: (pid 228149) 80549s; run: log: (pid 223157) 81326s 格式: 进程名称:(进程ID编号)进程运行时间(秒);进程的日志服务进程Id 日志运行时间 run 表示进程运行正常 down 表示进程没有启动或者挂掉,我们可以查看服务的日志信息,来定位问题。
查看服务日志
# 检查redis的日志 gitlab-ctl tail redis # 检查postgresql的日志 gitlab-ctl tail postgresql # 检查gitlab-workhorse的日志 gitlab-ctl tail gitlab-workhorse # 检查logrotate的日志 gitlab-ctl tail logrotate # 检查nginx的日志 gitlab-ctl tail nginx # 检查sidekiq的日志 gitlab-ctl tail sidekiq # 检查unicorn的日志 gitlab-ctl tail unicorn
注:每次修改完配置,记得启动配置更新。
到这里gitlab已经安装完成
补充:
一、gitlab 存储仓库目录设置及数据迁移
注:一开始没有考虑到把gitlab划分好存储目录,占用系统磁盘,由于gitlab是默认安装的,随着公司代码越来越多,导致gitlab数据目录空间不足
- 设置存储仓库数据
默认情况下omnibus-gitlab 将仓库数据存储在/var/opt/gitlab/git-data目录下,仓库存放在子目录repositories里面,以可以通过修改/etc/gitlab/gitlab.rb
的这一行来自定义 git-data 的父目录
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb # 把注释取消然后指定新的仓库存储位置(建议事先以root用户创建/home/gitlab/这一层级的目录) git_data_dirs({ "default" => { "path" => "/home/gitlab/git-data" } })
注意 :目标路径和其子路径必须不能为软链接。
- 使设置生效
原仓库目录,在没有数据的情况下
[root@gitlab ~]# gitlab-ctl stop [root@gitlab ~]# gitlab-ctl reconfigure //使修改生效
如果 /var/opt/gitlab/git-data
目录已经存在Git仓库数据, 你可以用下面的命令把数据迁移到新的位置:
# 准备迁移之前要停止GitLab服务,防止用户写入数据。 [root@gitlab ~]# gitlab-ctl stop # 注意 'repositories'后面不带斜杠,而 # '/home/gitlab/git-data'后面是有斜杠的。 [root@gitlab ~]# rsync -av /var/opt/gitlab/git-data/repositories /home/gitlab/git-data/ # 如果需要修复权限设置, # 可运行下面的命令进行修复。 [root@gitlab ~]# gitlab-ctl reconfigure # 再次检查下 /home/gitlab/git-data 的目录. 正常情况应该有下面这个子目录: # repositories [root@gitlab ~]# ls /home/gitlab/git-data/ repositories # 完工! 启动GitLab,验证下是否能 # 通过web访问Git仓库。 [root@gitlab ~]# gitlab-ctl start
->设置存储仓库数据的备用目录(有需要的设置)
注意的是:自GitLab 8.10开始,可以通过在/etc/gitlab/gitlab.rb
文件中添加下面的几行配置, 来增加多个 git 数据存储目录。
git_data_dirs({ "default" => { "path" => "/var/opt/gitlab/git-data" }, //默认存储目录 "alternative" => { "path" => " /home/gitlab-data" } //备用存储目录 })