GitLab
和GitHub
一样,都是基于Git
开发了一些功能,然后商业化的产品,它俩唯一的不同之处在于GitLab
可以私有化部署,这也就导致受到了很多企业的青睐。
本篇文章主要介绍如何以Docker
化的方式安装GitLab,以及简单的配置,使用的是GitLab-CE社区版
,操作系统CentOS 7
。
$ sudo yum update -y
$ sudo reboot
$ hostname
gitlab
$ uname -a
Linux gitlab 3.10.0-957.27.2.el7.x86_64 #1 SMP Mon Jul 29 17:46:05 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
$ whoami
ansheng
$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
$ getenforce
Disabled
$ sudo systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
$ curl -sSL https://get.docker.com/ | sudo sh
$ sudo systemctl enable --now docker
$ sudo docker run --detach \
--hostname git.ansheng.me \
--publish 443:443 \
--publish 80:80 \
--publish 8022:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
上面的配置中,请根据自己的实际情况进行调整,GitLab产生的数据都将存储在/srv/gitlab/
目录下,如果不需要SSL是不用开放443端口的,因为系统本身占用了22端口,所以我把默认的22改成了8022
。
本地位置 | 容器位置 | 作用 |
---|---|---|
/srv/gitlab/data | /var/opt/gitlab | 数据 |
/srv/gitlab/logs | /var/log/gitlab | 日志 |
/srv/gitlab/config | /etc/gitlab | 配置文件 |
启动之后可能需要很长时间才能运行起来,你可以通过sudo docker logs -f gitlab
来跟踪日志,第一次访问的时候系统会要求设置管理员密码
设置完密码之后进行登陆,默认的用户名是root
登陆成功之后,如下是默认的首页,至此,安装部分以及完成。
接着上图,我们点击首页上面的Create a project
来创建一个项目
如上,我们创建了一个私有的项目,项目命名为caca
,隶属人root
下,我这里只是作为演示,生产环境中是不会使用root用户的,毕竟不太安全,创建完成之后会进入项目首页,如下:
然后我们点击右上角的Clone,尝试把项目下载下来
复制Clone with SSH
下的指令git clone ssh://git@git.ansheng.me/root/caca.git
,这条指令默认使用的是22端口,但是我们在运行gitlab时指定的端口是8022,所以我们还需要进行一些配置才能够正确的clone项目。
容器使用的是官方Omnibus GitLab
软件包,配置文件默认在/etc/gitlab/gitlab.rb
中,若要修改配置,我们首先需要进入容器
$ sudo docker exec -it gitlab /bin/bash
root@git:/#
$ vim /etc/gitlab/gitlab.rb
# 默认使用的是22端口,我们需要更改为8022
gitlab_rails['gitlab_shell_ssh_port'] = 8022
# 如果你更换了域名,需要将下面的配置改为新域名,这里不需要更改
# external_url 'http://newgit.ansheng.me'
当然你也可以编辑
/srv/gitlab/config/gitlab.rb
这个配置文件
然后退出并重启容器使配置生效
$ sudo docker restart gitlab
再次刷新页面,复制Clone with SSH
链接,发现端口以及改成了8022
然后你就可以愉快的把项目clone
到本地玩耍了!
邮件还是挺重要的,修改密码,消息通知等都会用到邮件,若要配置邮件,进入gitlab容器,然后打开配置文件
$ vim /etc/gitlab/gitlab.rb
# 增加如下配置
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "xxx@gmail.com"
# 这里的密码是应用专用密码,不是你登陆gmail的密码
gitlab_rails['smtp_password'] = "xxxx"
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'
配置修改完之后需要reconfig下,执行如下指令
$ gitlab-ctl reconfigure
然后进入gitlab的console来发送一封测试邮件
$ gitlab-rails console
Notify.test_email('ooo@gmail.com', 'Message Subject', 'Message Body').deliver_now
打开你的邮箱,你就可以收到如下的测试邮件
在登陆的时候不知道你有没有发现,旁边还有一个注册栏
作为一个私有的git,有时我们是不希望别人进行注册的,所以我们需要关闭注册功能,若要添加用户,只能让管理员手动添加。
关闭注册功能需要使用root用户,以root用户登陆之后执行如下操作
Admin Area
;Settings
;Sign-up Restrictions
设置;Sign-up enabled
并点击下方的保存;最后再次打开你的登陆页面就会发现已经没有注册功能了
GitLab更新还是挺勤快的….,还是使用新版本吧
$ sudo docker stop gitlab
$ sudo docker rm gitlab
$ sudo docker pull gitlab/gitlab-ce:latest
$ sudo docker run --detach \
--hostname git.ansheng.me \
--publish 443:443 \
--publish 80:80 \
--publish 8022:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
然后经过漫长的等待,再次打开会发现版本已经是最新的了,然后打开顶部栏的Admin Area
,有一个栏目Components,会显示你当前gitlab的组件版本
当然我们刚刚升级完,肯定是最新的咯