首先遇到这类安装,我一般都去官网上看看,因为官网上一般都会提供最简洁简单的安装方式,这就节省我们很多时间。遇到问题我们在去找其他安装攻略。
官网安装说明地址: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
出现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