您的位置:主页 > 营销知识 > 建站资讯 > GitLab 搭建以及配置 2
硬件配置可参见gitlab官方的硬件配置手册,以下是简单翻译:
gitlab的需要的硬盘的容量是根据仓库的数量来决定的。一般来说如果一台服务器只跑gitlab的话,40G的硬盘是足够的。
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的汉化版本是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证书,如果没有的话,可以去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 |
首先拿到汉化作者发布的源代码
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,
去掉开启注册
选中即可
由于gitlab能够直接导入github上的仓库,如果gitlab部署在境内的服务器上的话,使用这个功能导入速度将会很慢,而且失败率很高,这个时候就可以使用shadowsocks来让gitlab提速。
先更新apt源
1 | $ sudo apt-get update |
安装shadowsocks客户端依赖
1 | $ sudo apt-get install python-pip python-setuptools m2crypto |
安装shadowsocks客户端
1 | $ sudo pip install shadowsocks |
在home
目录当中创建shadowsocks.json
文件,将以下文本填入当中:
1 2 3 4 5 6 7 8 | { "server":"***.***.***.***", "server_port":***, "local_port":1080, "password":"******", "timeout":600, "method":"aes-256-cfb" } |
执行以下命令:
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 |
首先需要在gitlab上新建一个project:
点击github按钮
然后在”Personal Access Token”框当中填入github的access token,这样才能导入github的仓库
生成access token的方法,是登录网址:https://github.com/settings/tokens,登录github,然后再点击”Generate new token”:
在Token description当中填写CardInfoLink,勾选repo,最后点击”Generate token”,将会生成一个密钥
把token填入gitlab当中,点击import按钮,即可将github上的仓库导入到gitlab当中。
为了gitlab使用更加安全,可以关闭除了80,443以外的其他端口的外网访问。
如果gitlab服务器使用的是阿里云,那么可以直接使用阿里云的安全组规则:
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
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 |
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-ce的运行状态有问题,应该尝试重新启动gitlab-ce的所有组件
1 | $ sudo gitlab-ctl restart |
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的配置文件存储目录是/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 / |
上海云轩网络版权所有 Copyright©2008-2018 http://www.lvon8.com All Rights Reserved 备案号:沪ICP备14049216号