Gitlab是什么?
GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。
它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
GitLab 5.0以前版本要求服务器端采用 Gitolite 搭建,5.0版本以后不再使用 Gitolite ,采用自己开发的 gitlab-shell 来实现。如果你觉得安装麻烦可以使用 GitLab Installers 一键安装程序。
Gitlab文档
gitlab英文官网:
https://about.gitlab.com/
gitlab中文官网:
https://www.gitlab.com.cn/
gitlab使用手册:
https://docs.gitlab.com.cn/ce/README.html
Gitlab安装注意事项
Gitlab有EE版和CE版,EE版是企业版,需要付费,这里安装的是CE版
官网提示, 我们强烈建议综合包安装是快速安装,容易升级,它包含的功能提高可靠性在其它方法无法发现。我们还强烈
推荐至少4GB的内存运行gitlab
1。安装和配置必要的依赖
在
CentOS 7 (and RedHat/Oracle/Scientific Linux 7),下面的命令将在系统防火墙打开HTTP和SSH访问。
sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld
下一步,安装postfix发送通知邮件。如果你想使用另一个解决方案来发送电子邮件,请跳过这一步配置外部SMTP服务器在gitlab已安装。
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
在安装配置的屏幕可能会出现后缀。选择"
mail name"并回车。使用您的服务器的外部DNS名称“邮件”然后回车。如果额外的屏幕出现,继续按回车接受默认值。
2。添加gitlab包库安装包
添加gitlab仓库,并安装到服务器上
![](https://i-blog.csdnimg.cn/blog_migrate/219a098f58addf1342d78938bf3e96de.png)
下一步,安装gitlab包。 HTTPS协议的要求额外的配置安装后。
sudo yum install -y gitlab-ce
需要下载安装包,安装过程中需要消耗点时间
![](https://i-blog.csdnimg.cn/blog_migrate/dbe51bfb103c834f92c4250fdc939a8a.png)
安装成功
![](https://i-blog.csdnimg.cn/blog_migrate/219a098f58addf1342d78938bf3e96de.png)
3.配置并启动GitLab
3.1设置配置
sudo gitlab-ctl reconfigure
设置配置时间比较长,用了6分39秒
![](https://i-blog.csdnimg.cn/blog_migrate/a151f5412c2b7c357d782ed019c754a5.png)
3.2 修改gitlab配置文件指定服务器IP和端口
vim /etc/gitlab/gitlab.rb
设置url
![](https://i-blog.csdnimg.cn/blog_migrate/2257995408c92005306eeff4829e8f02.png)
设置监听端口
![](https://i-blog.csdnimg.cn/blog_migrate/395345d322de20ec421d36f9aad736d0.png)
设置防火墙
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
重新配置
sudo gitlab-ctl reconfigure
操作gitlab命令
sudo gitlab-ctl start #启动
sudo gitlab-ctl stop #停止
sudo gitlab-ctl restart #重启
sudo gitlab-ctl status #查看状态
sudo gitlab-ctl tail #查看日志
4.处理502错误的方案
如果出现502的错误,那可能是端口的占用,导致启动不了应用。
经过查看,我这里开启了一个tomcat服务,占用了8080端口,使GitLab的unicorn服务不能开启。unicorn是ruby的http server,可以通过
http://localhost:8080端口访问。
我这里修改成了8889,并在防火墙开放这个端口。
![](https://i-blog.csdnimg.cn/blog_migrate/dbe51bfb103c834f92c4250fdc939a8a.png)
然后重新编译 ,以及启动 访问: http://192.168.2.14:8888/
5.初次登录、修改初始密码
访问:http://192.168.2.14
第一次登录,需要重置密码:
效果:
![](https://i-blog.csdnimg.cn/blog_migrate/7fda6525a11fc3b5e72da0987d411bd5.png)
我这里设置 abc123ABC123 ,其他可以设置其他密码,设置完毕后,需要重新登录 ,默认超级管理员帐户 root
![](https://i-blog.csdnimg.cn/blog_migrate/bfbb8984103e8b9dbaf9b0662a7ae224.png)
登录成功,恭喜您,可以在gitlab上进行下一步操作了。
![](https://i-blog.csdnimg.cn/blog_migrate/b023fe6228f4f9711d1f1df0e2c65771.png)
6.安装汉化补丁
参考资料:
7.docker安装
docker pull twang2218/gitlab-ce-zh:11.1.4
8.docker-compose安装 启动
docker-compose.yml
version: '3.7'
services:
gitlab:
image: 'twang2218/gitlab-ce-zh:11.1.4'
restart: always
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.ngc.com'
gitlab_rails['time_zone'] = 'Asia/Shanghai'
gitlab_rails['gitlab_shell_ssh_port'] = 2222
ports:
- '80:80'
- '8443:443'
- '2222:22'
volumes:
- '/home/gitlab/config:/etc/gitlab'
- '/home/gitlab/data:/var/opt/gitlab'
- '/home/gitlab/logs:/var/log/gitlab'
启动:
docker-compose up -d
docker-compose logs
9.接入LDAP认证
修改config/gitlab.rb文件
gitlab_rails['ldap_enabled'] = true
###! **remember to close this block with 'EOS' below**
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
main: # 'main' is the GitLab 'provider ID' of this LDAP server
label: 'LDAP'
host: '192.168.2.8' #由于是docker中,所有要填宿主机ip
port: 389
uid: 'cn' # 这里是个很坑的地方,在这里,用的是ldap的uid字段作为用户登录名,所以直接写了uid,换句话说,冒号前面的uid跟ldap不是一个意思的。
bind_dn: 'cn=Manager,dc=***,dc=com'
password: '*******'
encryption: 'plain' # "start_tls" or "simple_tls" or "plain"
verify_certificates: false # 如果用的证书是自签名的,那么这里需要设置为false以保证不会出现服务器证书验证错误。
active_directory: false # 我用的slapd,如果用微软的ad,这里需要设置为true
allow_username_or_email_login: false
lowercase_usernames: false
block_auto_created_users: false
base: 'dc=***,dc=com' # 这里设置用户名查找位置
user_filter: ''
## EE only
group_base: ''
admin_group: ''
sync_ssh_keys: false
EOS
重新启动docker容器
uid读取:
![](https://i-blog.csdnimg.cn/blog_migrate/82aedfc9c0956478521b340a515453b2.png)