Centos7安装gitlab

发布时间:2020-08-30 11:48:06阅读:(130)

一、安装

1、登录gitlab官网,找到安装命令 https://about.gitlab.com/install/ ,这里我选择CentOS7

2、根据提示,配置必备的环境(以root用户运行)

$ yum install -y curl policycoreutils-python openssh-server
$ systemctl enable sshd
$ systemctl start sshd
$ firewall-cmd --permanent --add-service=http
$ firewall-cmd --permanent --add-service=https
$ systemctl reload firewalld

3、安装postfix以支持邮件功能

$ yum install -y postfix
$ systemctl enable postfix
$ systemctl start postfix

4、添加Gitlab镜像源,注意:官方文档上的镜像源为gitlab-ee,只能试用30天,我们需要安装的是gitlab-ce版本,因此将命令中的gitlab-ee修改为gitlab-ce即可

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

5、开始执行安装

$ sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-ce # 这里的url就是安装完成后你想要访问的url

6、等待安装完成,打开浏览器访问上面配置的url,设置管理员密码(默认管理员用户名为root)

至此,gitlab安装完成

二、高级配置

gitlab的配置文件路径为/etc/gitlab/gitlab.rb

1、修改默认的仓库存储目录

gitlab默认的存储路径在/var/opt/gitlab/git-data目录下,可以通过修改gitlab.rb中的git_data_dirs参数来修改目录路径

#1.创建一个新的目录
$ mkdir -p /data/git-data
#2.停止Gitlab服务
$ gitlab-ctl stop
#3.迁移数据至新的目录
$ rsync -av /var/opt/gitlab/git-data/repositories /data/git-data/ # 注意:第一个地址后面没有斜杠,第二个地址后面有斜杠
#4.修改配置文件
$ vi /etc/gitlab/gitlab.rb
git_data_dirs({
"default" => {
"path" => "/data/git-data"
}
})
#5.使配置生效并重启服务
$ gitlab-ctl reconfigure
$ gitlab-ctl start # 稍等一段时间后访问web检查服务是否正常

2、邮箱配置

$ vi /etc/gitlab/gitlab.rb
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.server"
gitlab_rails['smtp_port'] = 25 # 如果使用ssl,则这里是465
gitlab_rails['smtp_user_name'] = "user@example.com" # 发件用户
gitlab_rails['smtp_password'] = "password" # 密码
gitlab_rails['smtp_domain'] = "example.com" # 邮箱域名
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = fals

# 修改发件邮箱展示名称等
gitlab_rails['gitlab_email_from'] = 'user@example.com'
gitlab_rails['gitlab_email_display_name'] = 'Gitlab'
gitlab_rails['gitlab_email_reply_to'] = 'noreplay@example.com'

# 使配置生效
$ gitlab-ctl reconfigure
# 测试邮件是否能正常发送
$ gitlab-rails console # 进入控制台
$ Notify.test_mail('收件人邮箱','邮件标题','邮件正文').deliver_now

3、开启Ldap认证并关闭注册功能

$ vi /etc/gitlab/gitlab.rb
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
main: # 'main' is the GitLab 'provider ID' of this LDAP server
label: 'LDAP'
host: 'xxx.xxx.xxx.xxx' # LDAP服务器地址
port: 389
uid: 'sAMAccountName'
bind_dn: 'cn=gitlab,dc=example,dc=com' # 用户dn
password: 'password' # 密码
encryption: 'plain' # "start_tls" or "simple_tls" or "plain"
verify_certificates: false
smartcard_auth: false
active_directory: true
allow_username_or_email_login: true # 邮箱、用户名均可登录
lowercase_usernames: false
block_auto_created_users: true # 不允许用户注册
base: 'ou=xxx,dc=example,dc=com' # base ou
user_filter: ''
...
EOS

# 使配置生效
$ gitlab-ctl reconfigure

配置完成后,打开网页至登录页面,查看是否有LDAP登录选项。

关闭注册功能:以管理员身份登录,进入Admin Area > Settings > Sign-up restrictions, 将Sign-up enabled的勾去掉,点击保存即可

4、使用外部的PostgreSql、Redis

首先在PostgreSql中创建好用户和数据库,并配置好权限

$ vi /etc/gitlab/gitlab.rb

# 外部数据库配置
gitlab_rails['db_adapter'] = "postgresql"
gitlab_rails['db_encoding'] = "unicode"
gitlab_rails['db_collation'] = nil
gitlab_rails['db_database'] = "gitlab_production" # 数据库名称
gitlab_rails['db_username'] = "gitlab" # 数据库用户
gitlab_rails['db_password'] = "password" # Mima
gitlab_rails['db_host'] = "xx.xx.xx.xx" # 数据库地址
gitlab_rails['db_port'] = 5432

# 外部redis配置
gitlab_rails['redis_host'] = "xx.xx.xx.xx" # redis地址
gitlab_rails['redis_port'] = 6379
gitlab_rails['redis_ssl'] = false
gitlab_rails['redis_password'] = "password" # redis密码
gitlab_rails['redis_database'] = 0
gitlab_rails['redis_enable_client'] = true

# 关闭内置的postgresql
postgresql['enable'] = false
# 关闭内置的redis
redis['enable'] = false

# 使配置生效
$ gitlab-ctl stop
$ gitlab-ctl reconfigure
$ gitlab-c

5、关闭不需要的内置服务,如prometheus等

$ vi /etc/gitlab/gitlab.rb
prometheus['enable'] = false
grafana['enable'] = false
...

# 使配置生效
$ gitlab-ctl reconfigure

6、证书配置

a. 使用Let's Encrypt, 在配置文件中添加: letsencrypt['enable'] = true, reconfigure后就会自动生成证书(需要gitlab以配置域名并且公网能访问)

b. 使用已有证书: (将证书改成已有证书的地址)

nginx['ssl_certificate'] = "/etc/gitlab/ssl/fullchain.pem"

nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/privkey.pem"

标签:GitlabDocker

发表评论

评论列表(有0条评论130人围观)
暂无评论