安装使用Gitlab进行内部代码管理

Jan 30 2019 tool

这里选择你的系统,按照提示安装。

下面以Ubuntu 16.04 LTS版本为例,以后会补充使用docker来管理 gitlab。

安装依赖包

sudo apt-get install curl openssh-server ca-certificates postfix

添加gitlab源

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

网络不好的选项

这里 找到你的版本号并替换下面 url
sudo curl -LJO <url>
sudo dpkg -i gitlab-ce-XXX.deb

更新源以及安装

sudo apt-get update && sudo apt-get install gitlab-ce -y

配置 /etc/gitlab/gitlab.rb

sudo vim /etc/gitlab/gitlab.rb

配置访问接口

external_url = ‘http://git.example.com'

配置邮件服务

1
2
3
4
5
6
7
8
9
gitlab_rails['smtp_enable'] = true  
gitlab_rails['smtp_address'] = ""
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = ""
gitlab_rails['smtp_password'] = ""
gitlab_rails['smtp_domain'] = ""
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = false
gitlab_rails['smtp_tls'] = false

注意:

1
2
3
smtp_address和smtp_domain的设置,以阿里云企业邮箱为例  
gitlab_rails['smtp_address'] = "smtp.mxhichina.com"
gitlab_rails['smtp_domain'] = "mxhichina.com"

关闭 prometheus

个人经验:如果不关闭的话,会一直报错。
prometheus_monitoring[‘enable’] = false

重启GitLab

sudo gitlab-ctl reconfigure && sudo gitlab-ctl restart

一些推荐设置

首次进入设置管理员密码,设置 your-domain/admin/application_settings

  1. 建议关闭 Gravatar 头像功能
    在 Account and Limit Settings 关闭 Gravatar enabled,国内访问不友好。

  2. 关闭注册功能
    在 Sign-in Restrictions 关闭 Sign-in enabled,如果是内部使用建议关闭,然后管理员工分配注册。

升级Gitlab

在管理后台位置 overview 界面如果红色提示需要升级,那么尽快升级到最新版本。

  1. 关闭 gitlab
    sudo gitlab-ctl stop
  2. 升级 gitlab
    sudo apt-get install gitlab -y

修改为国内镜像

详情: https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/

1
2
3
4
vim /etc/apt/sources.list.d/gitlab_gitlab-ce.list
## 添加
deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu xenial main
deb-src https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu xenial main

使用 Docker

配置 docker-compose

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
version: "3" 

services:
gitlab:
image: gitlab/gitlab-ce
ports:
- "80:80"
- "443:443"
- "2222:2222"
volumes:
- gitlab-config:/etc/gitlab
- gitlab-logs:/var/log/gitlab
- gitlab-data:/var/opt/gitlab
- $PWD/gitlab.rb:/etc/gitlab/gitlab.rb
- $PWD/ssh_config:/etc/ssh/ssh_config
- $PWD/sshd_config:/assets/sshd_config
- $PWD/ssl:/etc/gitlab/ssl
volumes:
gitlab-config:
gitlab-logs:
gitlab-data:

这里我们使用了 HTTPS,需要配置一下:

创建 ssl 目录,并导入证书和私钥。这里以 example.crt 和 example.key 为例

1
2
3
4
5
6
7
# 设置 ssh 端口为 2222
gitlab_rails['gitlab_shell_ssh_port'] = 2222

# nginx config
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/example.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/example.key"

增加 ssh_config 文件

1
2
3
4
5
6
7
Host *
# 设置 ssh 端口为 2222
Port 2222
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
GSSAPIDelegateCredentials no

增加 sshd 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 设置 ssh 端口为 2222
Port 2222
ChallengeResponseAuthentication no
HostKey /etc/gitlab/ssh_host_rsa_key
HostKey /etc/gitlab/ssh_host_ecdsa_key
HostKey /etc/gitlab/ssh_host_ed25519_key
Protocol 2
PermitRootLogin no
PasswordAuthentication no
MaxStartups 100:30:200
AllowUsers git
PrintMotd no
PrintLastLog no
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys /gitlab-data/ssh/authorized_keys

UsePAM yes
UseDNS no