首先遇到这类安装,我一般都去官网上看看,因为官网上一般都会提供最简洁简单的安装方式,这就节省我们很多时间。遇到问题我们在去找其他安装攻略。

官网安装说明地址:https://about.gitlab.com/install/#centos-7

安装依赖

sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd

安装邮件服务(可选)

sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix

防火墙设置(如果你开启了防火墙,需要执行以下代码,否则不用执行)

sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld

添加GitLab软件包存储库

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

安装GitLab(这里安装的是 gitlab-ee企业版,gitlab-ce是社区版)

sudo yum install -y gitlab-ee

centos 源码安装git centos7安装gitlab_centos 源码安装git

出现Complete,说明安装成功

配置域名:vim /etc/gitlab/gitlab.rb

## GitLab URL
##! URL on which GitLab will be reachable.
##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab

#外部访问url(经过编译后,自动将这个配置编译到nginx配置,nginx就无需配置了)
external_url 'http://wwww.mygeilab.com'

注意:gitlab中有自定义nginx,配置external_url后,这里如果有端口就会直接重新生成这个nginx的配置,如果不满足你的需求,你可以修改nginx的配置。

配置GitLab的nginx(可选):vim /var/opt/gitlab/nginx/conf/gitlab-http.conf

# 外网访问的端口,如果服务器已经有服务器占用了80,那么这里可以改成其它
listen *:8888;
server_name gitlab.test.domain.com;
    
set $http_host_with_default "gitlab.test.domain.com:8888";

配置端口:命令状态输入/unicorn['port'],按Enter进入查找状态,按n往下查找,直到看到unicorn['port'] =8080,修改端口,删除#号,解除注释状态

### Advanced settings
# unicorn['listen'] = 'localhost'

#默认值就是8080。如果端口被占用,可将8080修改为其它(例如:9090)
unicorn['port'] = 8080

启动GitLab

gitlab-ctl reconfigure

修改账号密码

使用root权限登录服务器并启动Ruby on Rails 控制台

[root@localhost ~]# gitlab-rails console production
Loading production environment (Rails 4.2.8)
irb(main):001:0>

gitlab-rails console production 命令执行后,感觉没响应,耐心等待1分钟左右

有多种方式可以重置密码

irb(main):001:0> user = User.where(id: 1).first
=> #<User id:1 @root>
irb(main):002:0>user.password = '123456'
irb(main):002:0>user.password_confirmation = '123456'
irb(main):002:0>user.save

或者下面这种

irb(main):001:0> user = User.find_by(email: 'admin@local.host')
=> #<User id:1 @root>
irb(main):002:0>user.password = '123456'
irb(main):002:0>user.password_confirmation = '123456'
irb(main):002:0>user.save

修改密码后可以尝试使用新密码登录。

 

1.GitLab配置生效

#使配置生效
gitlab-ctl reconfigure

#重新启动GitLab 
gitlab-ctl restart

注意:执行 reconfigure 命令会把gitlab的nginx组件的配置还原,导致自定义修改的端口以及域名等都没有了。

2.查看gitlab版本

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

3.GitLab备份和恢复

备份

# 可以将此命令写入crontab,以实现定时备份
/usr/bin/gitlab-rake gitlab:backup:create

备份的数据会存储在/var/opt/gitlab/backups,用户通过自定义参数 gitlab_rails['backup_path'],改变默认值。

恢复

# 停止unicorn和sidekiq,保证数据库没有新的连接,不会有写数据情况
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
    
# 进入备份目录进行恢复,1476900742为备份文件的时间戳
cd /var/opt/gitlab/backups
gitlab-rake gitlab:backup:restore BACKUP=1476900742
cd -
    
# 启动unicorn和sidekiq
sudo gitlab-ctl start unicorn
sudo gitlab-ctl start sidekiq

4.GitLab发送邮件配置

gitlab_rails['smtp_enable'] = true  
gitlab_rails['smtp_address'] = “smtp.exmail.qq.com”  
gitlab_rails['smtp_port'] = 25  
gitlab_rails['smtp_user_name'] = “huangdc@domain.com“  
gitlab_rails['smtp_password'] = "smtp password"  
gitlab_rails['smtp_authentication']= “plain"  
gitlab_rails['smtp_enable_starttls_auto']= true  
gitlab_rails['gitlab_email_from']= 'huangdc@domain.com'  
gitlab_rails['gitlab_email_reply_to']= ‘noreply@domain.com'

5.服务器修改过ssh端口的坑(需要修改配置ssh端口)

#修改过ssh端口,gitlab中项目的的ssh地址,会在前面加上协议头和端口号“ssh://git@gitlab.domain.com:55725/huangdc/test.git”
gitlab_rails['gitlab_shell_ssh_port'] = 55725

6.启动GitLab 502问题

启动后遇到访问 GitLab 502 的问题,一般就两种情况,要么是内存不够用,要么是unicorn['port'] 的端口问题。特别需要注意的是,unicorn['port'] 的端口不能和 external_url 上的端口重复。因为配置在external_url上的端口,是有gitlab内置nginx自动映射的,他会占一个端口。unicorn是一个单独的服务,他也会占一个端口。

再具体的解决思路可参考:

7.常用目录

日志地址:/var/log/gitlab/   # 对应各服务的打印日志 
服务地址:/var/opt/gitlab/   # 对应各服务的主目录

8.GitLab常用命令

gitlab-ctl start    # 启动所有 gitlab 组件;
gitlab-ctl stop        # 停止所有 gitlab 组件;
gitlab-ctl restart        # 重启所有 gitlab 组件;
gitlab-ctl status        # 查看服务状态;
vim /etc/gitlab/gitlab.rb        # 修改gitlab配置文件;
gitlab-ctl reconfigure        # 重新编译gitlab的配置;
gitlab-rake gitlab:check SANITIZE=true --trace    # 检查gitlab;
gitlab-ctl tail        # 查看日志;
gitlab-ctl tail nginx/gitlab_access.log