Gitlab搭建内网服务器一篇就够

Gitlab搭建内网服务器一篇就够0写在前面首先大概捋一下概念:Git是版本管理工具,GitServer是远程管理仓库,但是这个仓库没有界面只能命令行管理。多个仓库时又很麻烦,Gitlab是一个私有的仓库Web管理工具,基于RoR。GitHub则可以看成一个世界级公开的GitLab。总结起来大概如下:*支持类似于github那样强大而又简单的UI交互型操作*支持安装包部署在自己服务器上,安全、开源,并且免费*

大家好,欢迎来到IT知识分享网。Gitlab搭建内网服务器一篇就够"

0 写在前面

首先大概捋一下概念:Git是版本管理工具,GitServer是远程管理仓库,但是这个仓库没有界面只能命令行管理。多个仓库时又很麻烦,Gitlab是一个私有的仓库Web管理工具,基于RoR。GitHub则可以看成一个世界级公开的GitLab。
总结起来大概如下:
* 支持类似于github那样强大而又简单的UI交互型操作
* 支持安装包部署在自己服务器上,安全、开源,并且免费
* 支持邮件服务
* 支持分支保护(权限机制,以免被人胡乱push)等等

本文分两部分,第一部分介绍传统方式安装GitLab,第二部分介绍Docker安装(推荐)。

1 安装过程

平台使用centos7.4安装。

#yum install curl policycoreutils openssh-server openssh-clients 
#systemctl enable sshd 
#systemctl start sshd 
#yum install postfix 
#systemctl enable postfix 
#systemctl start postfix 
#firewall-cmd --permanent --add-service=http 
#systemctl reload firewalld

上述命令,安装ssh、postfix(邮件通知),配置防火墙。下面开始下载、安装(较大,380M+):

#curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash 
#yum install -y gitlab-ce 

编辑gitlab.rb

#vi /etc/gitlab/gitlab.rb

要编辑的项有(以QQ邮箱为例):

external_url表示你要访问gitlab时的url,http打头。另,若自定义端口,可以用X.X.X.X:port。警告:此处不要用8080端口,且要保证没有其他服务使用8080,因为unicorn(git的webserver)默认使用8080.

猜测:貌似gitlab使用nginx作为反向代理,unicorn作为webserver。也就是说gitlab会用掉两个端口(80用于对外访问,8080用于unicorn使用)。

...
external_url 'http://10.211.55.5' #默认80端口
...
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = 'smtp.qq.com'
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = '123456@qq.com'
gitlab_rails['smtp_password'] = 'XXXXXX'
gitlab_rails['smtp_domain'] = 'smtp.qq.com'
gitlab_rails['smtp_authentication'] = :plain
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = '123456@qq.com'
gitlab_rails['gitlab_user_email'] = '123456@qq.com'
gitlab_rails['gitlab_email_display_name'] = 'Kyle_Gitlab'
gitlab_rails['gitlab_email_reply_to'] = '123456@qq.com'
gitlab_rails['smtp_tls'] = false
...
#unicorn默认使用8080,除非你修改这里,否则请保持系统8080无占用。
#unicorn['port'] = 8080
...

接下来让配置生效(以后每次编辑gitlab.rb都要重新配置):

#firewall-cmd --zone=public --add-port=8080/tcp --permanent
#firewall-cmd --reload
#gitlab-ctl reconfigure

重启后进入X.X.X.X,设置密码,然后就能用了。

2 汉化

汉化有一定风险,比如我汉化后打开就报502,后来发现/var/log/gitlab/gitlab-rails/sidekiq.log不停的刷错误日志,cpu使用率暴增……

建议先做好快照吧(特指虚拟机)。
最后,善用 gitlab-ctl tail unicorn这个监控命令。

#gitlab-ctl stop
#cat /opt/gitlab/embedded/service/gitlab-rails/VERSION //查看版本
10.3.5
#git clone https://gitlab.com/xhang/gitlab.git
#cd gitlab
#cat VERSION
10.3.5    //恰好版本相同,如果不同要diff换一下。
#git diff 

疑难杂症参考:
http://blog.csdn.net/wangxicoding/article/details/43738137


使用docker安装Gitlab

上面讲的都是传统的搭建过程,下面说一下使用docker如何搭建。

1 先决条件

你需要在物理机上安装如下软件:
* docker(版本不要太老)
* docker-compose
– $sudo curl -L https://github.com/docker/compose/releases/download/1.19.0-rc2/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
– chmod a+x /usr/local/bin/docker-compose

2 安装

到gitlab官网,找到docker的安装方法。
在centos上创建一个gitlab数据卷目录,如:

#/home/kyle/dockers/gitlab

然后使用docker中国来先下载gitlab镜像(注意版本tag):

#docker pull registry.docker-cn.com/gitlab/gitlab-ce:10.4.1-ce.0

接着使用docker tag 重命名你的docker镜像(下面命令根据实际情况不能照抄):

#docker images
#docker tags re....218/gitlab-ce-zh:10.4.1 gitlab/gitlab-ce:10.4.1
#docker rmi ...<img:tag>(那个旧镜像)...
#docker images (再次查看)

然后创建一个docker-compose.yml文件用来控制gitlab的容器的参数:

version: '2'
services:
    gitlab:
        image: 'twang2218/gitlab-ce-zh:10.4'
        restart: unless-stopped
#        hostname: 'localhost' 若有域名就写上
        container_name: gitlab
        environment:
            TZ: 'Asia/Shanghai'
            GITLAB_OMNIBUS_CONFIG: |
                external_url 'http://10.211.55.5'
                gitlab_rails['time_zone'] = 'Asia/Shanghai'
                gitlab_rails['gitlab_shell_ssh_port'] = 2222
                gitlab_rails['smtp_enable'] = true
                gitlab_rails['smtp_address'] = 'smtp.qq.com'
                gitlab_rails['smtp_port'] = 25
                gitlab_rails['smtp_user_name'] = '503819723@qq.com'
                gitlab_rails['smtp_password'] = '<密码或授权码>'
                gitlab_rails['smtp_domain'] = 'smtp.qq.com'
                gitlab_rails['smtp_authentication'] = :plain
                gitlab_rails['smtp_enable_starttls_auto'] = true
                gitlab_rails['gitlab_email_from'] = '503819723@qq.com'
                gitlab_rails['gitlab_user_email'] = '503819723@qq.com'
                gitlab_rails['gitlab_email_display_name'] = 'Kyle_Gitlab'
                gitlab_rails['gitlab_email_reply_to'] = '503819723@qq.com'
                gitlab_rails['smtp_tls'] = false
        ports:
            - '80:80'
            - '443:443'
            - '2222:22'
        volumes:
            - ./config:/etc/gitlab
            - ./logs:/var/log/gitlab
            - ./data:/var/opt/gitlab
volumes:
    config:
    data:
    logs:

[1] 上方关于docker-compose的config配置语法格式详见其文档。这里要注意我们用了https,开放443(稍后我们会建一个证书)。如果你不用证书,就改成’http’。

[2] docker拥有默认的几个网络(使用docker network ls可以查看到),最著名到当属brideg(172.17.0.0/16)。使用docker run时容器默认加入bridge。而compose up每启动一个容器默认都会为创建名为_default的网络。该网络拥有新的网段(如172.18.0.0/16),且可以和原bridge通信。假设未来你要启动Jenkins并让它使用Gitlab,那么就在yml里使用networks标签指定external网络(详见Jenkins搭建笔记)。

然后在yml目录下运行镜像(-d表示挂在后台):

#docker-compose up -d

提示:通常你都dockerd服务都是root运行的,所以这里docker-compose也要使用root,否则会导致‘cannot connect to docker daemon…is it running?’

然后查看端口映射:

docker ps

yml目录下实时输出日志(-f):

#docker-compose logs -f

首次启动时间会很长(5min),稳定后,你会发现一直不断的输出错误,说找不到X.X.X.X.crt证书,那是因为我们使用的是https但却没有为他设置证书。

3 设置https证书(谨慎使用)

要谨慎了,自签名证书可能会引起和jenkins连接的问题。所以如果领导并没要求,尽量不要用https。

进入到./config/下,可以看到已经有很多以root身份创建的文件了。

# mkdir ssl
# cd ssl
# openssl req -newkey rsa:4096 -nodes -sha256 -keyout 10.211.55.5.key -x509 -days 3650 -out 10.211.55.5.crt
###在CountryName输入【CN】;CommonName输入【10.211.55.5】或你的域名(重要!);其余字段直接回车。

完成后ssl目录下就有了证书文件,#docker-compose logs -f应该不会再报错了。

这时打开浏览器访问https://10.211.55.5,应该有错误提示,选择信任证书即可(若需要安装证书,请安装到Trusted Root Certification Authorities路径下)。然后就提示你设置root密码到界面。

4 汉化gitlab

直接找非官方到民间镜像(hub.docker.com)然后部署使用,或许会更加容易。原始docker镜像不建议再修改。
推荐https://hub.docker.com/r/twang2218/gitlab-ce-zh/

5 初始化设置

5.1添加ssh-key

用你的账户登陆后,在右上方头像找到Settings -> SSH Keys,添加你的key(你的客户端电脑(即将来要推送git项目的那台电脑的~/.ssh/id_rsa.pub)到这里。

ssh-keygen -t rsa -C "your-email"

上面这个命令用来生成key

5.2 禁止注册

管理员登陆,然后点击顶部中间扳手图标(admin area) -> Settings -> Sign-up Enabled -> 取消勾选 -> 点击底部Save按钮。
此时再回到登陆页面,就发现注册功能已经没有了。

6 升级与备份数据

由于gitlab升级十分频繁,所以升级有时候很重要。仓库数据其实都在:

#tree .data/git-data-repositories

该目录存放了所有仓库。有时候你会看到”XXX.wiki.git”,这些是gitlab维护的内置仓库。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/21466.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信