虽然github目前是全球最火的分布式代码托管平台,但是github有一个缺点就是,project如果想要建为private,那就得付费。还有data存储在github平台,而不是自己的本地服务器。相比之下gitlab有两点好处,一是project想要public还是private不受平台限制,二是可以在团队内部搭建,自然数据也是存储在本地服务器。好了,废话不多说,进入正题吧!
一、在远程服务器搭建gitlab
说明一下,本人的服务器系统是centos 7,在其他系统上不知道本博客所说的方法是否可行。还有时间充足的话建议直接看官网文档安装更靠谱,在官网文档中给出了很详细的gitlab配置说明。这里是gitlab中文官网链接。
1、安装gitlab
安装并配置必要的依赖关系
其实这个安装依赖是官网给出的安装步骤,有的人安装时没有安装这些依赖也没报错,不过最好还是按照官网的来吧。
sudo yum install -y curl policycoreutis-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewallctl-cmd --permanent --add-service=http
sudo systemctl reload firewalld
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
使用 GitLab 提供仓库在线安装
说明一下,官网提供的是gitlab-ee版本(企业版)的在线安装,本博客这里提供的是gitlab-ce版本(社区版)的在线安装,社区版是免费的。
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
yum install gitlab-ce
通过上面的方式访问的是国外的gitlab仓库站点,如果速度慢的话,就是用下面国内的站点,都一样。
curl -sS http://packages.gitlab.cc/install/gitlab-ce/script.rpm.sh | sudo bash
yum install gitlab-ce
2、启动gitlab
在安装完gitlab后,启动之前,先做一个基本配置,如果安装成功的话,在/etc/gitlab/目录下会有一个gitlab.rb文件,使用vim打开它。
vim /etc/gitlab/gitlab.rb
将external_url 'http://ip_address'这一行中的ip_address字符串替换成你自己的ip地址,随便给它换成一个你喜欢的ip地址名就行。然后重新编译配置。
gitlab-ctl reconfigure
至于其他配置,比如邮箱啊,端口啊(gitlab默认使用80端口),开启的进程数,访问超时时间之类的配置请参看官方文案,这里就不做详细介绍了,其实本人也还没来得及看这些官方文案。
3、安装过程中可能会遇到的bug
下面说一说在安装、编译时可能会遇到的bug。
编译时卡在ruby block[supervice_redis_sleep] action run不动,本人就遇到了这个问题,下面是一个截图:
解决办法:
sudo systemctl restart gitlab-runsvdir
gitlab-ctl reconfigure
二、将gitlab托管的code单独存储到移动硬盘
gitlab搭建成功后,在远程服务器目录/var/opt/gitlab/git-data/下会自动生成一个仓库repositories来存放你将来push到该服务器上的数据。如果你想单独将push到gitlab的数据保存到一块移动硬盘上怎么办?
首先你要将硬盘格式化(分不分区看个人),然后挂载到一个你指定的目录下,最后修改gitlab的配置文件,指定存储目录就可以了。
具体操作如下:
1、查看服务器的硬盘
使用命令fdisk -l查看服务器上有几块硬盘,可以看到我的有4块硬盘(sda, sdb, sdc, sdd),2个1T的和2个4T的硬盘。
2、格式化硬盘
首先查看一下服务器上采用的文件格式,使用命令blkid查看一下所有硬盘的格式
可以看到应该应该将硬盘格式化为ext4格式
mkfs.ext4 /dev/sdb
3、挂载硬盘和卸载硬盘
新建目录/mnt/gitlab/git-data,将移动硬盘sdb挂载到目录/mnt/gitlab/git-data下
mount /dev/sdb /mnt/gitlab/git-data
卸载硬盘的操作为
umount /dev/sdb
挂载完后再使用df -h查看一下,下图是本人挂载后的截图,可以看到sdb已经挂载到/mnt/gitlab/git-data下了
4、开机自动挂载硬盘
上面的挂载操作有一个问题,就是每次机器重启后,都要重新手动挂载一次,这谁受得了,所以得给它配置为开机自动挂载。首先使用命令klbid查看所用硬盘的UUID,然后修改文件/etc/fstab,在上面使用blkid操作中可以获取sdb的UUID。
vim /etc/fstab
5、修改gitlab配置,指定数据存储目录
使用vim打开文件/etc/gitlab/gitlab.rb,搜索git_data_dirs,添加一行字符串来指定目录
然后在重新配置gitlab和重启
gitlab-ctl reconfigure
gitlab-ctl restart
如果配置成功的话,这时应该可以在/mnt/gitlab/git-data/目录下看到repositories目录。