网站建设
建站资讯Website News

您的位置:主页 > 营销知识 > 建站资讯 > GitLab 搭建以及配置 2

GitLab 搭建以及配置 2

上海网站建设公司建站资讯2017-09-05

硬件配置

硬件配置可参见gitlab官方的硬件配置手册,以下是简单翻译:

硬盘

gitlab的需要的硬盘的容量是根据仓库的数量来决定的。一般来说如果一台服务器只跑gitlab的话,40G的硬盘是足够的。

CPU

  • 1核的CPU能够支撑100个用户,但是gitlab应用会比较慢,因为所有的后台进程都是用跑在一个核上

  • 推荐配置是2核CPU,能够支撑500个用户

  • 4核能支撑2,000个用户

  • 8核能支撑5,000个用户

  • 16核能支撑10,000个用户

  • 32核能支撑20,000个用户

  • 64核能支撑40,000个用户

内存

  • gitlab需要至少4GB的内存(RAM swap),因为操作系统和其他应用进程都会使用内存。如果服务器的内存低于4G,配置gitlab的时候将会出错,使用gitlab的时候将有更多错误。

  • 1GB RAM 3GB swap 是最低的配置,但是强烈建议不要用这种配置

  • 2GB RAM 2GB swap 能够支撑100个用户,但是gitlab运行会非常慢

  • 4GB RAM是推荐的配置,能够支撑100个用户

  • 8GB RAM能支撑1,000个用户

  • 16GB RAM能支撑2,000个用户

  • 32GB RAM能支撑4,000个用户

  • 64GB RAM能支撑8,000个用户

  • 128GB RAM能支撑16,000个用户

  • 256GB RAM能支撑32,000个用户

  • 除了以上的配置,gitlab官方还建议在服务器上至少能有2GB的swap,即使已经有了足够大的RAM。

操作系统

gitlab官方推荐的操作系统是Ubuntu 16.04LTS版本,考虑到16.04LTS版本比较新,这里使用Ubuntu 14.04LTS版本

安装

安装相关依赖包

1

$ sudo apt-get install curl openssh-server ca-certificates postfix

在安装postfix的时候,如果弹出图形界面,请选择internet Site

选择gitlab的版本

  • 由于社区对gitlab汉化的进度比较慢,如果安装最新的gitlab版本可能打不上汉化补丁,所以选择一个能够汉化的gitlab的版本进行安装,当前gitlab的汉化版本是8.14

  • 汉化版的gitlab的地址是:https://gitlab.com/xhang/gitlab

  • 执行以下命令:

    1

    2

    $ curl -JLO https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/trusty/gitlab-ce_8.14.4-ce.0_amd64.deb/download

    $ sudo dpkg -i gitlab-ce_8.14.4-ce.0_amd64.deb


配置

域名和端口号

  • 打开gitlab的默认配置文件

    1

    $ sudo vim /etc/gitlab/gitlab.rb


  • 将external_url的值设置为以下文本(这里填入自己的域名):

    1

    external_url \'https://git.adair.com\'


  • 在/etc/hosts当中加入127.0.0.1和设置好的域名的映射

    1

    127.0.0.1 git.adair.com


路径

  • 配置gitlab资料备份的路径(在/etc/gitlab/gitlab.rb配置文件当中找到gitlab_rails[‘backup_path’]配置项,修改为以下文本)

    1

    gitlab_rails[\'backup_path\'] = "/opt/gitlab/gitlab_backup"


  • 配置gitlab仓库存储的路径(在/etc/gitlab/gitlab.rb配置文件当中找到git_data_dirs配置项,修改为以下文本)

    1

    git_data_dirs({"default" => "/opt/gitlab/git_data"})


https

  • 首先确认自己使用的域名有没有https证书,如果没有的话,可以去startssl免费申请一个https证书,安装证书的方式可以参考阿里云CentOS 6.5系统LNMP环境安装SSL证书

  • 申请完证书之后,建立ssl目录

    1

    2

    $ sudo mkdir /etc/gitlab/ssl

    $ sudo chmod 700 /etc/gitlab/ssl


  • 拷贝https证书到ssl目录

    1

    $ sudo cp git.adair.com.crt git.adair.com.key /etc/gitlab/ssl/


  • 打开gitlab的默认配置文件

    1

    $ sudo vim /etc/gitlab/gitlab.rb


  • 将nginx的配置设置为以下文本

    1

    2

    3

    nginx[\'redirect_http_to_https\'] = true

    nginx[\'ssl_certificate\'] = "/etc/gitlab/ssl/gjit.adair.com.crt"

    nginx[\'ssl_certificate_key\'] = "/etc/gitlab/ssl/git.adair.com.key"


  • 打开ubuntu的ufw

    1

    $ sudo ufw allow https


  • 这里需要使用以下命令来让配置先生效

    1

    $ sudo gitlab-ctl reconfigure


  • 打开gitlab的nginx的配置文件

    1

    $ sudo vim /var/opt/gitlab/nginx/conf/gitlab-http.conf


  • 找到443端口(https的端口)的配置,并修改为以下的格式:

    1

    2

    3

    4

    5

    6

    listen *:443 default_server;

    ssl on;

    ssl_certificate /etc/gitlab/ssl/git.adair.com.crt;

    ssl_certificate_key /etc/gitlab/ssl/git.adair.com.key;

    ssl_protocols SSLv3 TLSv1;

    ssl_ciphers ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4 RSA: HIGH: MEDIUM;


  • 接着再创建一个/var/opt/gitlab/nginx/conf/index.conf文件用来HTTP跳转HTTPS

    1

    2

    3

    4

    5

    server {

    listen *:80;

    server_name git.adair.com;

    rewrite ^(.*)$ https://$host$1 permanent;

    }


  • 最后修改/var/opt/gitlab/nginx/conf/nginx.conf配置文件, 在其中加入以下内容, 来让nginx载入index.conf

    1

    2

    include /var/opt/gitlab/nginx/conf/index.conf;

    include /var/opt/gitlab/nginx/conf/gitlab-http.conf;


重启服务

配置https完成之后,使用gitlab-ctl restart来重启所有服务

1

$ sudo gitlab-ctl restart

汉化gitlab

  • 首先拿到汉化作者发布的源代码

    1

    $ git clone https://gitlab.com/xhang/gitlab.git


拿到的gitlab代码默认分支是8-14-stable-zh

  • 停止gitlab

    1

    $ sudo gitlab-ctl stop


  • 应用汉化

    1

    2

    $ cd gitlab/

    $ sudo cp -r ./* /opt/gitlab/embedded/service/gitlab-rails/


  • 重启gitlab

    1

    $ sudo gitlab-ctl start


执行完这一步,gitlab的部署就告一段落,更加高级的功能请往下看

关闭开放注册

一般来说,使用gitlab的都是公司,而非社区,不希望自己搭建的gitlab能够被公司外的人员注册进去,更加希望由管理员来分配登录帐号,这就用到了gitlab的关闭开放注册的功能。

  • 使用root账户登录gitlab,
    1.jpg
    2.jpg
    去掉开启注册选中即可

配置git代理

由于gitlab能够直接导入github上的仓库,如果gitlab部署在境内的服务器上的话,使用这个功能导入速度将会很慢,而且失败率很高,这个时候就可以使用shadowsocks来让gitlab提速。

Ubuntu 安装shadowsocks命令行客户端

  • 先更新apt源

    1

    $ sudo apt-get update


  • 安装shadowsocks客户端依赖

    1

    $ sudo apt-get install python-pip python-setuptools m2crypto


  • 安装shadowsocks客户端

    1

    $ sudo pip install shadowsocks


shadowsocks.json

home目录当中创建shadowsocks.json文件,将以下文本填入当中:

1

2

3

4

5

6

7

8

{

"server":"***.***.***.***",

"server_port":***,

"local_port":1080,

"password":"******",

"timeout":600,

"method":"aes-256-cfb"

}

启动shadowsocks客户端

  • 执行以下命令:

    1

    $ nohup sslocal -c ~/gitlabInstall/shadowsocks.json 2>&1 &


  • 检测是否启动成功:

    1

    $ telnet 127.0.0.1 1080


如果telnet成功,说明启动成功

配置代理

  • 在gitlab服务器上切换到root用户,将以下文本填入/var/opt/gitlab/.gitconfig当中:

    1

    2

    3

    4

    [https]

    proxy = socks5://127.0.0.1:1080

    [http]

    proxy = socks5://127.0.0.1:1080


迁移github仓库

  • 首先需要在gitlab上新建一个project:
    3.jpg

  • 点击github按钮
    4.jpg

  • 然后在”Personal Access Token”框当中填入github的access token,这样才能导入github的仓库
    5.jpg

  • 生成access token的方法,是登录网址:https://github.com/settings/tokens,登录github,然后再点击”Generate new token”:
    6.jpg

  • 在Token description当中填写CardInfoLink,勾选repo,最后点击”Generate token”,将会生成一个密钥
    7.jpg

  • 把token填入gitlab当中,点击import按钮,即可将github上的仓库导入到gitlab当中。
    8.jpg

端口访问权限控制

为了gitlab使用更加安全,可以关闭除了80,443以外的其他端口的外网访问。

方法一:阿里云直接设置

如果gitlab服务器使用的是阿里云,那么可以直接使用阿里云的安全组规则:
9.jpg

10.jpg

方法二:使用iptables进行设置

  • Ubuntu安装iptables

    1

    $ sudo apt-get install iptables


  • 查看防火墙的配置信息

    1

    $ sudo iptables -L


一般能看到一下信息,说明防火墙允许所有的请求:

Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination

  • 编辑iptables配置文件

    1

    $ sudo vim /etc/iptables.rules


  • 填入以下文本(中文字是注释,填入的时候需要删掉)

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    *filter

    表示FORWARD表的默认策略是ACCEPT

    :FORWARD ACCEPT [0:0]

    表示OUTPUT表的默认策略是ACCEPT

    :OUTPUT ACCEPT [0:0]

    开启syn-flood攻击的默认策略

    :syn-flood - [0:0]

    允许所有本机向外的访问

    -A OUTPUT -j ACCEPT

    允许回环网卡

    -A INPUT -i lo -j ACCEPT

    允许已建立的连接接收数据

    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

    开放80端口(http端口)

    -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT

    开放443端口(https端口)

    -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT

    开放9418端口(git端口)

    -A INPUT -m state --state NEW -p tcp --dport 9418 -j ACCEPT

    仅仅对公司办公外网(xxx.xxx.xxx.xxx)开放22号端口(ssh端口)

    -A INPUT -m state --state NEW -s xxx.xxx.xxx.xxx -p tcp --dport 22 -j ACCEPT

    允许ping

    -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

    syn-flood防御

    -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j syn-flood

    -A syn-flood -p tcp -m limit --limit 3/sec --limit-burst 6 -j RETURN

    -A syn-flood -j DROP

    禁止其它未允许的规则访问:

    -A INPUT -j REJECT --reject-with icmp-port-unreachable

    COMMIT


  • 加载iptables配置文件

    1

    $ sudo iptables-restore < /etc/iptables.rules


  • 配置服务器开机的时候自动加载配置文件
    编辑/etc/network/interface文件

    1

    $ sudo vim /etc/network/interface


在文件的末端插入以下文本:

1

pre-up iptables-restore < /etc/iptables.rules

卸载gitlab

  • 首先停止gitlab

    1

    $ sudo gitlab-ctl stop


  • 使用dpkg卸载gitlab

    1

    $ sudo dpkg -r gitlab-ce


  • 删除安装文件

    1

    $ sudo rm -rf /opt/gitlab /etc/gitlab /var/opt/gitlab /var/log/gitlab


gitlab服务器维护

查看gitlab-ce的运行状态

1

$ sudo gitlab-ctl status

如果运行正常的话,会看到以下的状态

run: gitlab-workhorse: (pid 8127) 20813s; run: log: (pid 8064) 20818s
run: logrotate: (pid 16845) 2813s; run: log: (pid 8115) 20814s
run: nginx: (pid 8089) 20816s; run: log: (pid 8088) 20816s
run: postgresql: (pid 7641) 20848s; run: log: (pid 7640) 20848s
run: redis: (pid 7608) 20850s; run: log: (pid 7607) 20850s
run: sidekiq: (pid 8048) 20820s; run: log: (pid 8047) 20820s
run: unicorn: (pid 8014) 20822s; run: log: (pid 8013) 20822s

这些进程的状态都是run就说明gitlab状态正常

重启gitlab

如果发现gitlab-ce的运行状态有问题,应该尝试重新启动gitlab-ce的所有组件

1

$ sudo gitlab-ctl restart

gitlab资料全量备份和恢复

  • gitlab-rake备份资料

    1

    $ sudo gitlab-rake gitlab:backup:create


执行完成之后可以看到在/opt/gitlab/gitlab_backup目录下生成了一个tar包: 1478507134_gitlab_backup.tar,其中1478507134是备份时间的时间戳
注意:在配置文件当中配置的目录的owner需要是git,否则执行的时候会报错:Errno::EACCES: Permission denied

  • gitlab-rake恢复资料(需要停服)
    停止相关数据库的连接服务

    1

    2

    $ sudo gitlab-ctl stop unicorn

    $ sudo gitlab-ctl stop sidekiq


从1478507134编号备份当中恢复

1

$ gitlab-rake gitlab:backup:restore BACKUP=1478507134

启动gitlab所有组件

1

$ sudo gitlab-ctl start

gitlab配置备份和恢复

  • 备份:
    gitlab的配置文件存储目录是/etc/gitlab,首先建立配置的备份目录:

    1

    $ mkdir -p /opt/gitlab/etc_gitlab_backup/


通过以下命令进行备份:

1

$ sudo bash -c \'cd /opt/gitlab/etc_gitlab_backup/; tar -zcvf $(date " etc-gitlab-%Y-%m-%d.tar.gz") /etc/gitlab\'

  • 还原:
    还原配置前,先备份当前配置:

    1

    $ sudo mv /etc/gitlab /etc/gitlab.$(date %Y-%m-%d %H:%M:%S)


解压包含了所备份配置的压缩包

1

$ sudo tar -zxvf etc-gitlab-2016-11-08.tar.gz -C /

原文标题:GitLab 搭建以及配置 2
欢迎您访问,如有疑问请联系客服
TAG[db:关键字],上海网站建设,上海网站制作,上海APP开发

最新案例

相关文章

更多最新文章

网站关键词

上海云轩网络版权所有 Copyright©2008-2018 http://www.lvon8.com All Rights Reserved 备案号:沪ICP备14049216号