Mac安装gitlab

以前采用gitosis在Mac OS上架设Git服务器,用于集中管理课题组中的所有Git仓库。Gitosis 是一套用来管理 authorized_keys文件和实现简单连接限制的脚本,用来添加用户和设定权限。它并非通过网页程序,而只是管理一个特殊的 Git 仓库。管理员只需在这个特殊仓库内做好相应的设定,然后推送到服务器上,Gitosis 就会随之改变运行策略。

Gitosis没有web页面,使用较为复杂。Gitlab是一个用Ruby on Rails开发的开源项目管理程序,可以通过WEB界面进行访问公开的或者私人项目。它和Github有类似的功能,能够浏览源代码,管理缺陷和注释,但github无法免费建立私有仓库。

Gitlab在linux下很容易安装,既可以编译源代码安装,也可以通过rpm包或deb包安装,但目前还没有可供Mac OS X安装的软件包,只能编译源代码安装,既复杂又容易出错。因此我们采用Docker来部署Gitlab。

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。Docker Hub (https://hub.docker.com) 上提供了很多的容器镜像,可以直接安装使用。

基于Docker在Mac OS X系统中的部署和设置GitLab的具体过程如下:

1. 安装Docker for Mac (参见Install Docker Desktop on Mac | Docker Docs

2. 下载GitLab镜像

     docker pull gitlab/gitlab-ce

    文档可参见GitLab Docker images | GitLab

3. 运行GitLab实例

  sudo docker run -d \

    --hostname xxxx.xxxx.xx \

    --name gitlab \

    --restart always \

    --publish 30001:22 --publish 30000:80 --publish 30002:443 \

    --volume $HOME/gitlab/data:/var/opt/gitlab \

    --volume $HOME/gitlab/logs:/var/log/gitlab \

    --volume $HOME/gitlab/config:/etc/gitlab \

    gitlab/gitlab-ce

其中volume选项将gitlab的目录挂载为用户当地目录,以免容器在停止或被删除的时候丢失数据。publish选项将宿主机器的30000、30001和30002映射为容器的80(http)、22(ssh)和443(https)端口。

4.配置GitLab实例

GitLab的配置存储在/etc/gitlab/gitlab.rb文件中。

利用命令“sudo docker exec -it gitlab /bin/bash”可以在gitlab容器中进入bash,也可以用命令“sudo docker exec -it gitlab vi /etc/gitlab/gitlab.rb”直接执行vi编辑GitLab配置文件。由于在运行GitLab实例时,已经用volume选项将gitlab的目录挂载为用户当地目录,因此gitlab.rb文件实际位于$HOME/gitlab/config目录下。

修改gitlab.rb文件后,在容器中执行命令gitlab-ctl reconfigure重新配置gitlab。

4.1 配置GitLab服务器的访问地址

4.1.1 配置http协议所使用的访问地址

将external_url修改为GitLab服务器的访问地址:

    external_url 'http://xxxx.xxxx.xxx:30000'

由于定义的url中有端口号,需要将nginx监听的端口号改回80,否则nginx将监听容器的30000端口,造成GitLab无法使用:

    nginx['listen_port'] = 80

4.1.2 配置ssh协议所使用的访问地址和端口

    gitlab_rails['gitlab_ssh_host'] = ‘data.comdyn.cn'

    gitlab_rails['gitlab_shell_ssh_port'] =30001

4.2 配置邮箱

为了采用SMTP服务器而不是缺省的Sendmail发送邮件,需要修改gitlab.rb中的内容,

下面以网易163邮箱为例配置邮箱:

    gitlab_rails['gitlab_email_from'] = "xxxx@163.com”

    gitlab_rails['gitlab_email_reply_to'] = ‘xxxx@163.com'

    

    gitlab_rails['smtp_enable'] = true

    gitlab_rails['smtp_address'] = "smtp.163.com"

    gitlab_rails['smtp_port'] = 465

    gitlab_rails['smtp_user_name'] = "xxxx@163.com"

    gitlab_rails['smtp_password'] = "xxxxpassword"

    gitlab_rails['smtp_domain'] = "163.com"

    gitlab_rails['smtp_authentication'] = "login"       

    gitlab_rails['smtp_enable_starttls_auto'] = true

    gitlab_rails['smtp_tls'] =true

    gitlab_rails['smtp_openssl_verify_mode'] = "peer"

最后,用命令docker restart gitlab重启GitLab,或者在容器中执行命令gitlab-ctl reconfigure重新配置gitlab。

5. 导入现有的git仓库

将现有的git仓库(如test)导入gitlab需要三步:

5.1 将已有的所有git仓库的裸库(如test.git)都拷贝到gitlab目录中。

前面在运行gitlab实例时,利用volume选项已经将gitlab的数据目录指定为$HOME/gitlab/data/,因此git仓库将存放在目录$HOME/gitlab/data/git-data/repositories/下。

gitlab允许创建组,将多个仓库纳入到一个组中,每个组在repositories下面对应于一个与组名称相同的子目录。将所有裸库拷贝到与其组所对应的子目录中。例如,如果要要将test仓库导入到sub组中的话,则应执行:

    sudo cp -r test.gig $HOME/gitlab/data/git-data/repositories/sub/

5.2 利用sudo chown命令,将test.git的拥有者的用户名和组名改为和repositories目录的拥有者相同,以保证gitlab可以访问该仓库。

5.3 导入仓库

在gitlab容器中执行gitlab-rake命令:

    sudo docker exec -it gitlab gitlab-rake gitlab:import:repos['$HOME/gitlab/data/git-data/repositories’]

导入repositories下的所有仓库,并自动创建组。如果某仓库在gitlab中已存在,则会跳过该仓库。

6. 升级gitlab

由于gitlab的设置、日志和数据都已经保存在用户目录中,升级gitlab时只需停止和删除当前的gitlab实例,再执行第2步和第3步,重新下载gitlab镜像并启动gitlab实例即可。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值