Blog

使用 gitlab 搭建代码托管平台

github是目前最为流行的代码托管平台,很多著名的开源项目都在github上进行托管。但github只能免费托管公有项目,如果要托管私有项目就要缴纳不菲的费用。而且github服务器在国外,很难保证网络的稳定。为了保证代码的安全和可控,公司更倾向于自建代码服务器。

gitlab是什么

Version Control on your Server like GitHub but Open Source

一句话,gitlab就是github的开源实现。它的特点如下:

  • git仓库管理,代码审查,问题追踪,活动信息,维基和持续集成。
  • 容纳25000+的用户群同时在一台服务器上。LDAP/AD组同步和日志审计。
  • 社区驱动,700+贡献者,检查完善代码,方便集成。
  • 如果不想手动搭建gitlab,可以看这里

如何搭建

部署环境ubuntu14.04 server版操作系统

我们公司主机CPU是32位的,所以下载32位的ubuntu镜像。下载地址在这里,安装过程就不说了,我是用光驱引导安装的,当然也有其他方法。

安装openssh-server

为什么要安装它呢?openssh-server主要用于其他终端远程连接服务器。默认ubuntu14.04系统只有openssh-client,而openssh-server需要自己安装。怎么看系统有没有安装ssh呢,通过如下命令:dpkg --list|grep ssh,如果有的话,控制台会列出openssh-clientopenssh-server,说明已经安装了,如果没有openssh-server,需要通过如下命令安装sudo apt-get install openssh-server,结果在安装这个的时候报错

Reading package lists... Done
Building dependency tree
Reading state information... Done
Package openssh-server is not available,but is referred to by another package. This may mean that the package is missing, has been obsoleted, is only available from another source
E: Package 'openssh-server' has no installation candidate

google了一下,解决方案是更新包

sudo apt-get update
sudo apt-get upgrade

结果又报了如下错误:

Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be install.  This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
openssh-server : Depends: libwrap0(>= 7.6-4~) but it is not installable

Unable to correct problems, you have held broken packages.

控制台提示的意思是,安装openssh-server要依赖libwrap0这个库,于是我就又执行了sudo apt-get install libwrap0。结果又打印了一堆类似错误,提示又要依赖其他的库,于是觉的不对劲了,又google了一下,找到了原因,是因为在sudo apt-get update的时候没有update完全。遇到了 "Hash sum mismatch" error。怎么解决呢?

sudo rm -rf /var/lib/apt/lists/*   //首先清空/var/lib/apt/lists/目录,然后更新
sudo apt-get update

然后openssh-server就顺利安装上了,网上解决方案地址在这里。 如何判断sshserver是否启动了呢?

ps -e | grep ssh

如果只有ssh-agent,那说明ssh-server还没有启动,需要

/etc/init.d/ssh start

ssh-server配置文件位于/ etc/ssh/sshd_config,在这里可以定义SSH的服务端口,默认端口是22,你可以自己定义成其他端口号,如222。然后重启SSH服务:

sudo /etc/init.d/ssh resart

一般情况下用默认端口就行,操作完毕,这样我就可以在自己的电脑上通过ssh远程链接主机服务器了。

安装gitlab包

在安装gitlab包的时候又遇到个麻烦,gitlab官网的下载页面根本没有提供任何32位的包,全部是amd64。我立马郁闷了,好不容易到这儿了,难道还要换台64位的主机。为了给公司少找麻烦,我还是自己先找找有没有什么workaround吧,功夫不负有心人,终于找到了一个方案bitnami gitlab,提供一键式安装gitlab,最主要支持32位,太棒了!操作很简单

第一步下载installer

wget https://downloads.bitnami.com/files/stacks/gitlab/7.6.2-0/bitnami-gitlab-7.6.2-0-linux-installer.run

第二步安装installer

chmod 744 bitnami-gitlab-7.6.2-0-linux-installer.run //这步很关键,否则提示 command not found
./bitnami-gitlab-7.6.2-0-linux-installer.run

接下来就是一步一步安装了,需要配置很多信息,具体配置说明可以看这里

等配置完了,我在自己电脑浏览器输入 192.168.30.196 ,神奇的事情发生啦,gitlab服务器跑起来了。输入用户名,密码即可登录。

gitlab邮件系统

gitlab内置邮件系统,这样用户在执行相关操作的时候会自动发邮件来通知相关成员。 这个功能很赞,下面说一下配置流程:

1 首先申请一个新的邮箱 xxx@163.com

2 sudo vi /opt/gitlab-7.6.2-0/apps/gitlab/htdocs/config/environments/production.rb

修改如下信息:

config.action_mailer.smtp_settings = {
:address => "smtp.qiye.163.com",
:port => "25",
:domain => "163.com",
:authentication => :plain,
:user_name => "xxx@163.com",
:password => "your password",
:enable_starttls_auto => false
}

3 sudo vi /opt/gitlab-7.6.2-0/apps/gitlab/htdocs/config/gitlab.yml

找到email_from:这一行,改成 email_from: xxx@163.com

4 重启gitlab服务: sudo /opt/gitlab-7.6.2-0/ctlscript.sh restart gitlab_sidekiq

修改服务器IP地址

如果全部按照默认选项安装,创建一个project,生成的仓库地址是这样的:git@127.0.0.1:username/test.git,这显然不对,因为这是本机地址,而开发人员做git clone操作时,是在自己的电脑上完成的,如何配置服务器IP地址? 在gitlab.yml这个配置文件中定位到host:,设置IP即可 。

sudo vi /opt/gitlab-7.6.2-0/apps/gitlab/htdocs/config/gitlab.yml

## GitLab settings
gitlab:
## Web server settings (note: host is the FQDN, do not include http://)
host: 192.168.30.196 //把这里改成服务器ip就可以了
port: 80 # Set to 443 if using HTTPS, see installation.md#using-https for additional HTTPS configuration details

重启gitlab服务: sudo /opt/gitlab-7.6.2-0/ctlscript.sh restart gitlab_sidekiq

设置gitlab开机自启动

除了这些还有什么需要做吗?那就是开机自启动,这样可以保证服务器因为各种原因重启后,gitlab服务持续可用。

sudo cp /opt/gitlab-7.6.2-0/ctlscript.sh /etc/init.d/bitnami-gitlab
sudo update-rc.d -f bitnami-gitlab start 80 2 3 4 5 . stop 30 0 1 6 .
Tagged with:
👈 Swift 关键字--mutating