gitlab 团队协作工具(一)

github大家都不陌生吧,它是目前最为流行的代码托管平台,好多著名的开源项目都在github上进行托管。但github只能免费托管公有项目,如果要托管私有项目就要缴纳不菲的费用。一般公司的项目都是private的,那有没有一种既可以免费托管,又可以保证代码安全的方案呢。答案当然是肯定的,一种方案是使用 bitbucket进行代码托管,bitbucket提供免费的无限制的私有仓库托管服务。另外一种方案就是今天重点介绍的gitlab

####gitlab是什么

Version Control on your Server like GitHub but Open Source

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

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

####如何搭建

#####部署环境ubuntu14.04 server版操作系统
我们公司主机CPU是32位的,所以下载32位的ubuntu镜像。下载地址在这里,安装过程就不说了,我是用光驱引导安装的,当然也有其他方法。

#####安装openssh-server
为什么要安装它呢?openssh-server主要用于其他终端远程连接服务器。默认ubuntu14.04系统只有openssh-client,而openssh-server需要自己安装。怎么看系统有没有安装ssh呢,通过如下命令:dpkg --list|grep ssh,如果有的话,控制台会列出openssh-client和openssh-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 首先申请一个新的邮箱 比如:[email protected] ,尽量不要用自己的,否则容易混乱。

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 => "[email protected]",
: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: [email protected]

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

至此gitlab就搭建好了。不要走开,接下来更精彩!