一、自建代码托管系统都需要做些什么工作?
1. 选择开源软件
Git 大家族的 GitLab ,它提供了完善的用户权限管理,除了涵盖 Git 所有的功能,同时又提供方便的后台管理。分别有CE(社区版)、EE(企业版)、OM(RPM 包完整版)三个版本,目前市面上开发者们的普遍选择是使用 CE 版的源码,成本较低且相对方便。
2. 硬件设施方面
如果是对于中小型企业来讲,自建机房一般成本较高,所以除非是大型集团企业。现在市面上存在太多的云服务器厂商,平均价格多在 5000元/年以上,都是不错的选择。
可能遇到的坑:
●需要对 GitLab 搭建非常熟悉的人,专门负责维护;
●需要采购单独服务器,费用不菲来说,还得在复杂的市场上费力挑选,更要处理各种可能发生的硬件和网络故障;
●需要独立的互联网线路以方便公司外的员工访问代码,不太适合有异地或者外包团队的企业;
●需要随时关注代码管理软件的各种漏洞和 Bug 并即刻更新;
●难以应对来自公司内部对代码仓库的恶意破坏,可能发生删库跑路事件。
3.由于个人眼界以及信息不对称,目前大部分公司都是在公司局域网内自行用GitLab搭建代码托管系统。部署Gitlab 是对服务器有配置要求的建议是CPU两核,内存4G以上。个人经验,勿喷啦。
二、搭建过程(这里仅是作者接触的,其实还有很多更高级的盘法)
Gitlab的服务构成
Nginx:静态Web服务器
gitlab-shell:用于处理Git命令和修改authorized keys列表
gitlab-workhorse:轻量级的反向代理服务器(这个是个敏捷的反向代理,它会处理一些大的HTTP请求,比如文件的上传下载,其他的请求会反向代理给Gitlab Rails应用)
logrotate:日志文件管理工具
postgresql:数据库
redis:缓存数据库
sidekiq:用于在后台执行队列的任务
unicorn:Gitlab Rails应用是托管在这个服务器上面的
1.搭建方法分为:传统方式安装GitLab和Docker安装(推荐)。
2.传统安装过程(平台使用centos7安装)
安装和配置必要的依赖项:
sudo yum install -y curl policycoreutils-python openssh-server //安装ssh sudo systemctl enable sshd //将SSH服务设置成开机自启动 sudo systemctl start sshd //启动SSH服务 sudo firewall-cmd --permanent --add-service=http //添加http服务到firewalld,pemmanent表示永久生效 sudo systemctl reload firewalld //重启防火墙
安装Postfix以发送通知邮件:
sudo yum install postfix sudo systemctl enable postfix sudo systemctl start postfix
在安装Postfix期间,可能会出现配置屏幕。选择“Internet Site”并按enter键。使用您的服务器的外部DNS以“mail name”并按enter。如果出现额外的屏幕,继续按enter键接受默认值。
添加GitLab镜像源并安装gitlab服务器:
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm //添加gitlab镜像 rpm -i gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm //安装gitlab
安装成功提示
vim /etc/gitlab/gitlab.rb //修改gitlab配置文件指定服务器ip和自定义端口
注意这里设置的端口不能被占用,默认是8080端口,如果8080已经使用,请自定义其它端口,并在防火墙设置开放相对应得端口。
重置并启动GitLab:
gitlab-ctl reconfigure gitlab-ctl restart
访问 GitLab页面:如果没有域名,直接输入服务器ip和指定端口进行访问
获取/修改超级管理员root的密码:
cd /opt/gitlab/bin sudo gitlab-rails console production //打开控制台 u=User.where(id:1).first //查询用户账号信息并赋值给u u.password=12345678 //设置该用户名的密码 u.password_confirmation=12345678 //确认密码, u.save! exit
最后我们使用默认的账号:root 和刚刚设置好的密码12345678进行登录。
后面的步骤配置SSH key,git Bash的global config等初始化设置跟GitHub一样。可是还有一点就是“汉化”。(英文不好的小伙伴)但是有一定风险,后面我打开报502错误。有两种方法:用git比对出英文与中文的补丁,将英文打补丁。第二是直接下载中文版,替换英文。
3.Docker安装(推荐)
(1)配置docker镜像
直接从 docker hub 获取的话速度非常慢,所以需要配置一个镜像。我使用的是 daocloud.io提供的加速器,速度很快。
(2)获取 GitLab 镜像
docker pull gitlab/gitlab-ce
下载完成后,查看镜像列表
docker images
(3)启动容器
sudo docker run --detach \ --hostname gitlab \ --publish 443:443 --publish 80:80 --publish 2222:22 \ --name gitlab \ --restart always \ --volume /root/data/gitlab/config:/etc/gitlab \ --volume /root/data/gitlab/logs:/var/log/gitlab \ --volume /root/data/gitlab/data:/var/opt/gitlab \ docker.io/gitlab/gitlab-ce
3个--publish指定容器与主机的端口映射,分别是 http、https、ssh
3个--volume指定数据卷的映射,分别是 gitlab 的 配置、日志、数据
(4)配置外部访问 URL
修改 gitlab 配置文件:
docker exec -it gitlab vi /etc/gitlab/gitlab.rb
找到 external_url 这一项修改为自己服务器的访问地址:
external_url 'http://192.168.0.222'
保存后,重启容器
docker restart gitlab
(5)访问