Gitlab安装使用及汉化配置

一、GitLab简介

GitHub是2008年由Ruby on Rails编写而成,与业界闻名的Github类似;但要将代码上传到GitHub上面,而且将项目设为私有还要收费。GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,可通过Web界面进行访问公开的或者私人项目,非常适合在团队内部使用。

在gitlab中有三个版本,分别是CE(社区版)、EE(企业版)、OM(RPM包完整版,里面包括nginx、redis等其它软件,比较大)。这里的编译安装版,是指CE版的源码安装

官网https://docs.gitlab.com/

这里呢建议大家使用rpm安装

1.1 Gitlab提供的功能

1.     代码托管服务

2.     访问权限控制

3.     问题跟踪,bug的记录和讨论

4.     代码审查,可以查看、评论代码

5.     社区版基于 MIT License开源完全免费

1.2 Gitlab(Github)和Git区别

Github和Git是两回事。

Git是版本控制系统,Github是在线的基于Git的代码托管服务。

1.3 Github PK Sourceforge

为什么现在Github这么火,以至于世界顶级公司和项目的源码很多都托管在Github上

Why?

1.     颜值高

2.     简洁大方

2011年,Github已经取代Sourceforge,成为最活跃的代码交流社区。这意味着在Open SourceCommunity(开源社区),Git取代了SVN已经成为事实。

1.3.1 Github界面

1.3.2 Sourceforge界面

1.4 搭建私有Git服务的优势

公司的项目,因为商业层面的原因,需要把代码托管到自有的服务器上,并且服务器很有可能是放在企业内网中,不对公网开放。

出于安全性的考虑,暂时没有使用国内的Git服务平台的计划。

GitHub和BitBucket,GitLab,由于服务商是在国外,受地域的影响,因此在网络访问上会有延迟。

现有的服务商,对于免费的套餐都有一定的限制,比如GitHub只允许建立免费的开源repository,不允许建立私有的仓库。BitBucket允许建立无限制的私有项目,不过对于项目中参与的开发人员是有人数限制的。当团队中开发者规模达到一定数量后,需要付费购买相应的套餐。

二、Gitlab安装

2.1 环境配置

硬件:

redhat-7.x系列_x86_64

Mem建议至少2G

软件:

       gitlab-ce.x86_64 0:8.8.0-ce

       git-2.11.0

       ruby2.1(至少是2.1)

server

client

192.168.201.148

192.168.201.130(作为测试端)

本次采用Omnibus 安装方式

2.2 gitlab环境要求

#系统层

Ubuntu

Debian

CentOS

Red Hat Enterprise Linux (please use the CentOSpackages and instructions)

Scientific Linux (please use the CentOSpackages and instructions)

Oracle Linux (please use the CentOS packagesand instructions)

不支持win

#Ruby versions

GitLab需要Ruby(MRI)2.3。支持低于2.3(2.1,2.2)的Ruby版本将停止与GitLab 8.13

#硬件要求

必要的硬盘驱动器空间很大程度上取决于您要存储在GitLab中的存档的大小,但是根据经验,您应该至少拥有与所有存档组合相同的可用空间。

如果你希望在将来考虑使用LVM来安装硬盘驱动器空间方面具有灵活性,那么您可以在需要时添加更多的硬盘驱动器。

除本地硬盘驱动器外,你还可以安装支持网络文件系统(NFS)协议的卷。此卷可能位于文件服务器,网络连接存储(NAS)设备,存储区域网络(SAN)或Amazon Web Services(AWS)弹性块存储(EBS)卷上。

如果你有足够的RAM内存和最近的CPU,则GitLab的速度主要受硬盘搜索时间的限制。快速驱动(7200 RPM或更高)或固态硬盘(SSD)将提高GitLab的响应速度

#CPU

1核心的CPU,基本上可以满足需求,大概支撑100个左右的用户,不过在运行GitLab网站的同时,还需要运行多个worker以及后台job,显得有点捉襟见肘了。

两核心的CPU是推荐的配置,大概能支撑500个用户.

4核心的CPU能支撑 2,000 个用户.

8核心的CPU能支撑 5,000 个用户.

16核心的CPU能支撑 10,000 个用户.

32核心的CPU能支撑 20,000 个用户.

64核心的CPU能支持多达 40,000 个用户.

#Memory 

你需要至少4GB的可寻址内存(RAM交换)来安装和使用GitLab!操作系统和任何其他正在运行的应用程序也将使用内存,因此请记住,在运行GitLab之前,您至少需要4GB的可用空间。使用更少的内存GitLab将在重新配置运行期间给出奇怪的错误,并在使用过程中发生500个错误.

1GBRAM + 3GB of swap is the absolute minimum but we strongly adviseagainst this amount of memory. See the unicorn worker section belowfor more advice.

2GBRAM + 2GB swap supports up to 100 users but it will be very slow

4GBRAM isthe recommended memory size for all installations and supportsup to 100 users

8GBRAM supports up to 1,000 users

16GBRAM supports up to 2,000 users

32GBRAM supports up to 4,000 users

64GBRAM supports up to 8,000 users

128GBRAM supports up to 16,000 users

256GBRAM supports up to 32,000 users

建议服务器上至少有2GB的交换,即使您目前拥有足够的可用RAM。如果可用的内存更改,交换将有助于减少错误发生的机会。

#Unicorn Workers(进程数) 

可以增加独角兽工人的数量,这通常有助于减少应用程序的响应时间,并增加处理并行请求的能力.

对于大多数情况,我们建议使用:CPU内核1 =独角兽工人。所以对于一个有2个核心的机器,3个独角兽工人是理想的。

对于所有拥有2GB及以上的机器,我们建议至少三名独角兽工人。如果您有1GB机器,我们建议只配置两个Unicorn工作人员以防止过度的交换.

#Database 

PostgreSQL

MySQL/MariaDB

强烈推荐使用PostgreSQL而不是MySQL/ MariaDB,因为GitLab的所有功能都不能与MySQL/ MariaDB一起使用。例如,MySQL没有正确的功能来以有效的方式支持嵌套组.

运行数据库的服务器应至少有5-10 GB的可用存储空间,尽管具体要求取决于GitLab安装的大小

#PostgreSQL要求

从GitLab 9.0起,PostgreSQL 9.2或更新版本是必需的,不支持早期版本。

#Redis and Sidekiq

Redis存储所有用户会话和后台任务队列。Redis的存储要求最低,每个用户大约25kB。

Sidekiq使用多线程进程处理后台作业。这个过程从整个Rails堆栈(200MB)开始,但是由于内存泄漏,它可以随着时间的推移而增长。在非常活跃的服务器(10,000个活跃用户)上,Sidekiq进程可以使用1GB的内存。

#Prometheus and its exporters

从Omnibus GitLab 9.0开始,默认情况下,Prometheus及其相关出口商启用,可以轻松,深入地监控GitLab。这些进程将使用大约200MB的内存,具有默认设置。这个还可以监控k8s

#Node exporter

节点导出器允许您测量各种机器资源,如内存,磁盘和CPU利用率。默认端口9100

#Redis exporter

       Redis出口商允许您测量各种Redis指标。

#Postgres exporter

Postgres导出器允许您测量各种PostgreSQL度量。

#GitLab monitor exporter

GitLab监视器导出器允许您测量各种GitLab指标。

#Supported web browsers

支持Firefox,Chrome /Chromium,Safari和Microsoft浏览器(Microsoft Edge和Internet Explorer 11)的当前和之前的主要版本。

2.3 安装

1、关闭SELinux

#下面的命令实现永久关闭SELinux

[root@git ~]# sed -i's/^SELINUX=.*/#&/;s/^SELINUXTYPE=.*/#&/;/SELINUX=.*/aSELINUX=disabled' /etc/sysconfig/selinux

#下面的命令实现临时关闭SELinux

[root@git ~]# setenforce 0

setenforce: SELinux is disabled

#永久修改下主机名,需要重启系统之后生效

Redhat6中修改

[root@git ~]# vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=git.server.com #修改成你自己的主机名

Redhat7中修改

[root@noede1 ~]# vi /etc/hostname

gitlab.server.com

#永久修改

[root@git ~]#hostnamectl set-hostname gitlab.server.com

#添加域名

[root@git ~]#cat /etc/hosts

192.168.201.131 gitlab.server.com

2、关闭firewall

#临时关闭

[root@git yum.repos.d]# iptables -F

或者

[root@git gitlab_pack]# systemctl stopfirewalld.service

#永久关闭,需要下次重启系统之后生效

[root@git gitlab_pack]# systemctl disablefirewalld.service

Removed symlink/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

Removed symlink/etc/systemd/system/basic.target.wants/firewalld.service.

#线上开启防火墙

[root@gitlab ~]# firewall-cmd --permanent--add-service=http

success

[root@gitlab ~]# firewall-cmd --permanent--add-service=https

Success

[root@gitlab ~]# firewall-cmd --reload

success

#重新加载配置

[root@gitlab ~]#systemctl reload firewalld

3、同步时间

[root@git yum.repos.d]# ntpdate time.nist.gov

10 Apr 11:00:04 ntpdate[40122]: step timeserver 216.229.0.179 offset 53747.856066 sec

4、配置gitlab-ce yum源

[root@git yum.repos.d]# cat gitlab.repo

[gitlab-ce]

name=gitlab-ce

baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7

repo_gpgcheck=0

gpgcheck=0

enabled=1

gpgkey=https://packages.gitlab.com/gpg.key

注解:

如果想要在centos6系列上安装,只需把el7修改成el6

5、Gitlab安装方式

Gitlab两种安装方式

编译安装

优点:可定制性强。数据库既可以选择MySQL,也可以选择PostgreSQL;服务器既可以选择Apache,也可以选择Nginx。

缺点:国外的源不稳定,被墙时,依赖软件包难以下载。配置流程繁琐、复杂,容易出现各种各样的问题。依赖关系多,不容易管理,卸载GitLab相对麻烦。

rpm包安装

优点:安装过程简单,安装速度快。采用rpm包安装方式,安装的软件包便于管理。

缺点:数据库默认采用PostgreSQL,服务器默认采用Nginx,不容易定制。

gitlab安装

1,下载

https://about.gitlab.com/installation/

2,安装

#官方地址

https://about.gitlab.com/downloads/#centos7

#如果想查看rpm中内容,默认安装的位置

[root@gitlab gitlab_pack]# rpm2cpiogitlab-ce-8.8.0-ce.0.el6.x86_64.rpm | cpio -ivd

[root@git yum.repos.d]# yum install curlopenssh-server openssh-clients postfix -y

[root@git yum.repos.d]# yum install gitlab-ce-8.8.0-y

#这里为了节省时间,直接rpm安装

[root@git gitlab_pack]# rpm -ivhgitlab-ce-8.8.0-ce.0.el6.x86_64.rpm

Preparing...                         ################################# [100%]

Updating / installing...

  1:gitlab-ce-8.8.0-ce.0.el6        ################################# [100%]

gitlab: Thank you for installing GitLab!

gitlab: To configure and start GitLab, RUN THEFOLLOWING COMMAND:

sudo gitlab-ctl reconfigure

gitlab: GitLab should be reachable athttp://localhost

gitlab: Otherwise configure GitLab for yoursystem by editing /etc/gitlab/gitlab.rb file

gitlab: And running reconfigure again.

gitlab:

gitlab: For a comprehensive list ofconfiguration options please see the Omnibus GitLab readme

gitlab:https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md

gitlab:

It looks like GitLab has not been configuredyet; skipping the upgrade script.

至此gitlab安装成功

注意:

       rpm 安装Gitlab的默认位置在/opt下

6、修改下配置文件

#修改url,供外部访问

[root@gitlab ~]# vi /etc/gitlab/gitlab.rb

external_url'http://gitlab.server.com'

external_url 修改成自己的ip或者域名

#修改配置文件之后,需要重新是配置文件生效下,初始化下

[root@gitlab ~]#gitlab-ctl reconfigure #这里会花费一定的时间(1-10min),如果这里内存小,将会花费大量时间

Recipe: gitlab::gitlab-rails

  *execute[clear the gitlab-rails cache] action run

    -execute /opt/gitlab/bin/gitlab-rake cache:clear

  *execute[clear the gitlab-rails cache] action run

    -execute /opt/gitlab/bin/gitlab-rake cache:clear

Recipe: gitlab::unicorn

  *service[unicorn] action restart

    -restart service service[unicorn]

Recipe: gitlab::redis

  *ruby_block[reload redis svlogd configuration] action create

    -execute the ruby block reload redis svlogd configuration

Recipe: gitlab::postgresql

 *ruby_block[reload postgresql svlogd configuration] action create

    -execute the ruby block reload postgresql svlogd configuration

Recipe: gitlab::unicorn

  *ruby_block[reload unicorn svlogd configuration] action create

    -execute the ruby block reload unicorn svlogd configuration

Recipe: gitlab::sidekiq

  *ruby_block[reload sidekiq svlogd configuration] action create

    -execute the ruby block reload sidekiq svlogd configuration

Recipe: gitlab::gitlab-workhorse

  *service[gitlab-workhorse] action restart

    -restart service service[gitlab-workhorse]

  *ruby_block[reload gitlab-workhorse svlogd configuration] action create

    -execute the ruby block reload gitlab-workhorse svlogd configuration

Recipe: gitlab::gitlab-workhorse

  *service[gitlab-workhorse] action restart

    -restart service service[gitlab-workhorse]

  *ruby_block[reload gitlab-workhorse svlogd configuration] action create

    -execute the ruby block reload gitlab-workhorse svlogd configuration

Recipe: gitlab::nginx

  *ruby_block[reload nginx svlogd configuration] action create

    -execute the ruby block reload nginx svlogd configuration

Recipe: gitlab::logrotate

  *ruby_block[reload logrotate svlogd configuration] action create

    -execute the ruby block reload logrotate svlogd configuration

Running handlers:

Running handlers complete

Chef Client finished, 222/309 resources updatedin 02 minutes 50 seconds

gitlab Reconfigured!#如果在此期间没有出现error,证明成功

7、启动Gitlab服务

[root@gitlab ~]# gitlab-ctl start

ok: down:gitaly: 0s, normally up

ok: down:gitlab-monitor: 1s, normally up

ok: down: gitlab-workhorse: 0s, normally up

ok: down: logrotate: 0s, normally up

ok: down: nginx: 0s, normally up

ok: down:node-exporter: 0s, normally up

ok: down:postgres-exporter: 1s, normally up

ok: down: postgresql: 0s, normally up

ok: down:prometheus: 1s, normally up

ok: down: redis: 0s, normally up

ok: down:redis-exporter: 0s, normally up

ok: down: sidekiq: 0s, normally up

ok: down: unicorn: 1s, normally up

注解:

绿色部分是9中新添加的

ü  gitlab-workhorse这个“工作马”,就是gitlab-Git-http-server(GitlabV8.0出现,V8.2名称变更为Gitlab-workhorse)

ü  sidekiq多线程启动

ü  unicorn是ruby的http server,可以通过http://localhost:8080端口访问, 默认端口是8080

ü  nginx作为方向代理,代理到unicorn,nginx默认端口是80

ü  postgresql作为数据库,默认端口是5432

ü  redis作为一个队列(NoSql),用于存储用户session和任务,任务包括新建仓库、发送邮件等等,默认端口是6379

ü  logrotate切割日志

ü  prometheus监控,默认端口9090

ü  gitlab-monitor默认端口9168

注:

(可选)如果系统资源不足,可以通过以下命令关闭Sidekiq来释放一部分内存

[root@gitlab ~]# gitlab-ctl stop sidekiq

ok: down: sidekiq: 0s, normally up

7.1 RPM安装模式下的启动、停止、重启

#初次配置服务

# gitlab-ctlreconfigure

#启动服务

# gitlab-ctl start

#停止服务

# gitlab-ctl stop

#重启服务

# gitlab-ctl restart

#状态

#gitlab-ctl status

#监控

#gitlab-ctl tailunicorn 监控unicorn日志

#gitlab-ctl tail

8、登录

访问地址http://ip

由于第一次登陆,需要设置密码

登录

登录之后的界面

Gitlab8的界面

Gitlab9版本

9、卸载

重新安装清理

1,卸载

[root@git Gitlab-cn]# rpm -e gitlab-ce

2,删除文件

[root@git Gitlab-cn]#rm -rf /etc/gitlab/*/var/log/gitlab/ /var/opt/gitlab/ /opt/gitlab/

2.4 汉化

#查看版本

[root@git .ssh]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

9.1.2

#8版本下载汉化包并汉化

[root@git hanhua]# git clonehttps://gitlab.com/larryli/gitlab.git Gitlab-cn && cd Gitlab-cn

#备份/opt/gitlab/embedded/service目录下的gitlab-rails目录,该目录下的内容主要是web应用部分

#备份

[root@git Gitlab-cn]#\cp -rf/opt/gitlab/embedded/service/gitlab-rails{,.ori}

#关闭gitlab这个服务

[root@git Gitlab-cn]#gitlab-ctl stop

#开始汉化

[root@git gitlab_pack]# \cp -rf Gitlab-cn/*/opt/gitlab/embedded/service/gitlab-rails/

测试是否汉化成功

[root@git ~]# gitlab-ctl start

ok: run: gitlab-workhorse: (pid 1407) 263s

ok: run: logrotate: (pid 1403) 263s

ok: run: nginx: (pid 1404) 263s

ok: run: postgresql: (pid 1405) 263s

ok: run: redis: (pid 1402) 263s

ok: run: sidekiq: (pid 1400) 263s

ok: run: unicorn: (pid 1401) 263s

登录

http://192.168.201.131/users/sign_in

#9版本汉化

[root@gitlab ~]#gitclone https://gitlab.com/xhang/gitlab.git

Cloning into 'gitlab'...

remote: Counting objects: 496150, done.

remote: Compressing objects: 100%(103590/103590), done.

remote: Total 496150 (delta 387041), reused495906 (delta 386824)Receiving objects: 100% (496150/496150), 220.14 MiB | 2

Resolving deltas: 100% (387041/387041), done.

Checking out files: 100% (9254/9254), done

#更新包

[root@gitlab ~]# cd gitlab/

[root@gitlab [9-1-stable-zh ≡]# git fetch

#生成补丁,进入到gitlab目录下

[root@gitlab gitlab]# git diff v9.1.2 v9.1.2-zh> ../9.1.2-zh.diff

#打补丁

[root@gitlab gitlab]# patch -d/opt/gitlab/embedded/service/gitlab-rails -p1 < ../9.1.2-zh.diff

2.5 Gitlab命令使用

语法:

gitlab-ctl command (subcommand)

Service Management Commands

start

启动所有服务

stop

关闭所有服务

restart

重启所有服务

status

查看所有服务状态

tail

查看日志信息

service-list

列举所有启动服务

graceful-kill

平稳停止一个服务

例子:

#启动所有服务

[root@gitlab ~]# gitlab-ctl start

#启动单独一个服务

[root@gitlab ~]# gitlab-ctl start nginx

#查看日志,查看所有日志

[root@gitlab ~]# gitlab-ctl tail

#查看具体一个日志,类似tail -f

[root@gitlab ~]# gitlab-ctl tail nginx

General Commands

help

帮助

reconfigure

修改配置文件之后,需要重新加载下

show-config

查看所有服务配置文件信息

uninstall

卸载这个软件

cleanse

删除gitlab数据,重新白手起家

例子:

#显示所有服务配置文件

[root@gitlab ~]#gitlab-ctl show-config

#卸载gitlab

[root@gitlab ~]#gitlab-ctl uninstall

DatabaseCommands(慎重使用)

Database Commands

pg-upgrade

更新postgresql版本

revert-pg-upgrade

还远先前的(离现在正在使用靠近的版本)一个数据库版本

例子:

#升级数据库

[root@gitlab ~]# gitlab-ctl pg-upgrade

Checking for an omnibus managed postgresql: OK

Checking if we already upgraded: OK

The latest version 9.6.1 is already running,nothing to do

#降级数据库版本

[root@gitlab ~]# gitlab-ctl revert-pg-upgrade

Toggling deploy page:cp/opt/gitlab/embedded/service/gitlab-rails/public/deploy.html/opt/gitlab/embedded/service/gitlab-rails/public/index.html

Toggling deploy page: OK

Toggling services:ok: down: gitaly: 129s,normally up

ok: down: gitlab-monitor: 128s, normally up

ok: down: logrotate: 127s, normally up

ok: down: node-exporter: 127s, normally up

ok: down: postgres-exporter: 126s, normally up

ok: down: prometheus: 125s, normally up

ok: down: redis-exporter: 125s, normally up

ok: down: sidekiq: 123s, normally up

Toggling services: OK

Checking if we need to downgrade: NOT OK

/var/opt/gitlab/postgresql/data.9.2.18 does notexist, cannot revert data

Will proceed with reverting the running programversion only, unless you interrupt

Reverting database to 9.2.18 in 5 seconds

=== WARNING ===

This will revert the database to what it wasbefore you upgraded, including the data.

Please hit Ctrl-C now if this isn't what youwere looking for

=== WARNING ===

== Reverting ==

ok: down: postgresql: 131s, normally up

ok: run: postgresql: (pid 12102) 0s

== Reverted ==

Toggling deploy page:rm -f/opt/gitlab/embedded/service/gitlab-rails/public/index.html

Toggling deploy page: OK

Toggling services:ok: run: gitaly: (pid 12107)1s

ok: run: gitlab-monitor: (pid 12111) 0s

ok: run: logrotate: (pid 12115) 1s

ok: run: node-exporter: (pid 12121) 0s

ok: run: postgres-exporter: (pid 12125) 0s

ok: run: prometheus: (pid 12130) 1s

ok: run: redis-exporter: (pid 12139) 0s

ok: run: sidekiq: (pid 12144) 1s

Toggling services: OK

2.6 gitlab配置详解

名称

配置路径

gitlab配置文件

/etc/gitlab/gitlab.rb

unicorn配置文件

/var/opt/gitlab/gitlab-rails/etc/unicorn.rb

nginx配置文件

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

gitlab仓库默认位置

/var/opt/gitlab/git-data/repositories

#修改web端口

如果80和8080端口被占用可以修改

[root@gitlabgitlab_pack]# vi /var/opt/gitlab/gitlab-rails/etc/unicorn.rb

listen"127.0.0.1:8080", :tcp_nopush => true #这一行端口修改为你要端口

#修改nginx端口

[root@gitlabgitlab_pack]# vi /var/opt/gitlab/nginx/conf/gitlab-http.conf

server{ #这里的80端口修改为你所需要的端口

  listen *:80;

注:

只要修改了配置文件一定要重新加载配置

#修改Prometheus端口

#Prometheus默认端口是9090

[root@gitlabgitlab_pack]# vi /etc/gitlab/gitlab.rb

#根据自己情况自行修改成自己需要的port

#修改项目工程数量

默认安装好,你能创建的项目,只能创建10个

#第一种方式修改

[root@gitlab gitlab_pack]# vi/opt/gitlab/embedded/service/gitlab-rails/config/initializers/1_settings.rb

Settings.gitlab['default_projects_limit'] ||=10

修改成你自己所需要的参数,保存

Settings.gitlab['default_projects_limit'] ||=10000

#重新初始化

[root@gitlab postgresql]# gitlab-ctlreconfigure

#查看修改之后项目数量

注:

这个是在安装完gitlab之后修改,如果已经使用一段时间,在修改项目的数量,需要你自己在自己的用户下修改,第二次初始化,会缩短时间

#第二种方式修改

#首先登录gitlab

#点击Adminstrator这个用户

#点击编辑

#关闭注册功能

默认注册功能是开启的, 对于个人的gitlab, 没有对外公布的必要

#首先点击管理区域---à在点击设置按钮

找到注册限制

选中,然后保存

#关闭监控

#关闭服务

[root@gitlab gitlab_pack]# gitlab-ctl stop

[root@gitlabgitlab_pack]# vi /etc/gitlab/gitlab.rb

把true改成false

prometheus_monitoring['enable']= true

prometheus_monitoring['enable']= false

#保存

#重新加载配置文件

[root@gitlabgitlab_pack]# gitlab-ctl reconfigure

#启动服务

[root@gitlab gitlab_pack]# gitlab-ctl start

ok: run: gitaly: (pid 21611) 0s

ok: run: gitlab-workhorse: (pid 21615) 1s

ok: run: logrotate: (pid 21622) 0s

ok: run: nginx: (pid 21628) 1s

ok: run: postgresql: (pid 21633) 0s

ok: run: redis: (pid 21641) 0s

ok: run: sidekiq: (pid 21645) 1s

ok: run: unicorn: (pid 21648) 0s

#很显然没有prometheus这个服务

2.7 gitlab安全

#Custom password length limits

#初始化器的密码长度设置为最少8个字符

[root@gitlab opt]# cd/opt/gitlab/embedded/service/gitlab-rails/config/initializers

[root@gitlab initializers]#cpdevise_password_length.rb.example devise_password_length.rb

#重启gitlab服务

#Rack attack

为了防止滥用客户造成损害GitLab使用机架攻击,提供一个保护路径

默认情况下,用户登录,用户注册(如果启用)和用户密码重置被限制为每分钟6个请求。尝试6次后,客户端将不得不等待下一分钟再次尝试。

如果发现节流不足以保护您免遭滥用客户端,机架式攻击宝石提供IP白名单,黑名单,Fail2ban样式过滤器和跟踪。

[root@gitlab opt]# cd/opt/gitlab/embedded/service/gitlab-rails/config/initializers

[root@gitlab initializers]# cp rack_attack.rb.example rack_attack.rb

#编辑application.rb

[root@gitlab config]#vi/opt/gitlab/embedded/service/gitlab-rails/config/application.rb

config.middleware.use Rack::Attack

保存

#重新启动GitLab实例

#Information exclusivity

Git是分布式版本控制系统(DVCS)。这意味着每个与源代码一起工作的人都具有完整存储库的本地副本。在GitLab中,不是客人的所有项目成员(因此,记者,开发人员和主人)都可以克隆资料库以获取本地副本。获取本地副本后,用户可以随时上传完整的存储库,包括其控制下的另一个项目或其他服务器。结果是您无法构建访问控制,阻止有权访问源代码的用户有意共享源代码。这是DVCS的固有特性,所有git管理系统都有这个限制。很明显,你可以采取措施,防止意外分享和破坏信息,这就是为什么只有一些人被允许邀请他人,没有人可以强制推行一个受保护的分支机构。

#How to reset your root password

[root@gitlab config]# gitlab-railsconsole production

Loading production environment (Rails 4.2.8)

irb(main):001:0> user = User.where(id: 1).first#查看信息

=> #<User id: 1, email: "admin@example.com",created_at: "2017-05-16 09:04:59", updated_at: "2017-05-1707:18:16", name: "Administrator", admin: true, projects_limit:100000, skype: "", linkedin: "", twitter: "",authentication_token: "k44aWyAaaaJaHYx4B_QP", bio: nil, username:"root", can_create_group: true, can_create_team: false, state:"active", color_scheme_id: 1, password_expires_at: nil,created_by_id: nil, last_credential_check_at: nil, avatar: nil,hide_no_ssh_key: false, website_url: "", notification_email:"admin@example.com", hide_no_password: false, password_automatically_set:false, location: nil, encrypted_otp_secret: nil, encrypted_otp_secret_iv: nil,encrypted_otp_secret_salt: nil, otp_required_for_login: false,otp_backup_codes: nil, public_email: "", dashboard: 0, project_view:2, consumed_timestep: nil, layout: 0, hide_project_limit: false,otp_grace_period_started_at: nil, ldap_email: false, external: false,incoming_email_token: "9wt82lanyjoakil3asrhfevvh", organization: nil,authorized_projects_populated: true, ghost: nil, last_activity_on: nil, notified_of_own_activity:false, require_two_factor_authentication_from_group: false,two_factor_grace_period: 48>

irb(main):002:0> user.password = 'admin123' #设置新的密码

=> "admin123"

irb(main):003:0> user.password_confirmation = 'admin123' #验证密码

=> "admin123"

irb(main):004:0> user.save! #保存密码

Enqueued ActionMailer::DeliveryJob (Job ID:b2ba5d30-853c-405d-8d95-fa938d88f32c) to Sidekiq(mailers) with arguments:"DeviseMailer", "password_change", "deliver_now",gid://gitlab/User/1

=> true

irb(main):005:0> #ctrl+d退出

#User email confirmation at sign-up

如果您想在所有用户电子邮件登录之前确认,Gitlab管理员可以在注册时启用电子邮件确认。

2.8 gitlab集群

2.9 GitLab Runner 构建任务

官方:https://docs.gitlab.com/runner/

#简介

GitLab Runner是用于运行作业并将结果发送回GitLab的开源项目。它与GitLab CI结合使用,GitLab CI是GitLab中协调工作的开源连续集成服务。

#Requirements

GitLab Runner是用Go编写的,可以作为一个二进制文件运行,不需要任何语言特定的要求。它被设计为在GNU / Linux,macOS和Windows操作系统上运行。只要您可以编译一个Go二进制文件,其他操作系统就可能会工作。

#Features

Allows to run

  • multiple jobs concurrently(多个工作同时进行)
  • use multiple tokens with multiple server (even per-project)( 使用多个令牌与多个服务器(甚至每个项目))
  • limit number of concurrent jobs per-token(限制每个令牌的并发作业数)

Jobs can be run

  • locally(本地)
  • using Docker containers(使用Docker容器)
  • using Docker containers and executing job over SSH(使用Docker容器并通过SSH执行作业)
  • using Docker containers with autoscaling on different clouds and virtualization hypervisors(使用Docker容器在不同的云和虚拟化管理程序上进行自动缩放)
  • connecting to remote SSH server(连接到远程SSH服务器)

#安装

#安装gitlab-ci-multi-runner源

[root@gitlab ~]#curl -Lhttps://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh| sudo bash

#安装

[root@gitlab ~]#yum installgitlab-ci-multi-runner

#gitlab-runner使用

必须是在8版本以上才能使用这个集成功能

https://docs.gitlab.com/runner/commands/README.html

语法

gitlab-runner

[root@gitlab ~]# gitlab-runner --help

USAGE:

   gitlab-runner[global options] command [command options] [arguments...]

COMMANDS

名称

作用

exec

显示runner配置文件

list

run

运行多个runner服务

register

注册一个新的runner

install

安装服务

uninstall

卸载服务

start

启动一个服务

stop

停止一个服务

restart

重启

status

一个服务状态

run-single

运行单独的一个runner

unregister

注销特定的runner

verify

验证所有注册的runner

artifacts-downloader    downloadand extract build artifacts (internal)

  artifacts-uploader   create andupload build artifacts (internal)

  cache-archiver  create and uploadcache artifacts (internal)

  cache-extractor       download andextract cache artifacts (internal)

例子:

#list

[root@gitlab ~]# gitlab-runner list

Listing configured runners                         ConfigFile=/etc/gitlab-runner/config.toml

#debug

[root@gitlab ~]# gitlab-runner --debug  list

Runtime platform                                    arch=amd64 os=linuxrevision=0118d89 version=9.1.0

Listing configured runners                         ConfigFile=/etc/gitlab-runner/config.toml

gitlab-ci-multi-runner

[root@gitlab gitlab]# gitlab-ci-multi-runnerregister --help

Runner类型

GitLab-Runner可以分类两种类型:

Shared Runner(共享型)

Specific Runner(指定型)。

Shared Runner:

这种Runner(工人)是所有工程都能够用的。只有系统管理员能够创建Shared Runner。

Specific Runner:

这种Runner(工人)只能为指定的工程服务。拥有该工程访问权限的人都能够为该工程创建Shared Runner。

注册runner

1,copy 注册授权码
2,register

安装好gitlab-ci-multi-runner这个软件之后,我们就可以用它向GitLab-CI注册Runner了。

向GitLab-CI注册一个Runner需要两样东西:GitLab-CI的url和注册token。

其中,token是为了确定你这个Runner是所有工程都能够使用的Shared Runner还是具体某一个工程才能使用的Specific Runner

#查看register帮助

[root@gitlab gitlab]# gitlab-ci-multi-runnerregister --help

#注册Shared Runner

在注册Runner的时候,需要填入Token,GitLab根据不同的Token确定这个Runner是被设置为Shared Runner还是Specific Runner

[root@gitlab gitlab]# gitlab-ci-multi-runnerregister

Running in system-mode.                           

Please enter the gitlab-ci coordinator URL(e.g. https://gitlab.com/):

http://192.168.201.148/ci#输入ci

Please enter the gitlab-ci token for thisrunner:

2RBdZavdy6UsZvbyCcMF#注册授权码

Please enter the gitlab-ci description for thisrunner:

[gitlab.server.com]: test_runner #描述

Please enter the gitlab-ci tags for this runner(comma separated):

hello_tom #写个标签,可以多个,用逗号隔开

Whether to run untagged builds [true/false]:

[false]: #输入回车

Whether to lock Runner to current project[true/false]:

[false]: #输入回车

Registering runner... succeeded                     runner=2RBdZavd

Please enter the executor: virtualbox, docker-ssh+machine,kubernetes, parallels, shell, ssh, docker+machine, docker, docker-ssh:

shell #输入选择通讯方式

Runner registered successfully. Feel free tostart it, but if it's running already the config should be automaticallyreloaded!

#查看服务是否运行

[root@gitlab gitlab]# ps -ef|grep runner

root      7998      1  0 13:09 ?        00:00:02/usr/bin/gitlab-ci-multi-runner run --working-directory /home/gitlab-runner --config/etc/gitlab-runner/config.toml --service gitlab-runner --syslog --usergitlab-runner

注意:

如果不运行gitlab-ci-multi-runner register命令,直接在配置文件里面添加Runner的配置信息可以吗

当然不行。因为gitlab-ci-multi-runner register的作用除了把Runner的信息保存到配置文件以外,还有一个很重要的作用,那就是向GitLab-CI发出请求,在GitLab-CI中登记这个Runner的信息并且获取后续通信所需要的token。

3,查看register

# 登陆

http://my_url/admin/runners

#查看gitlab-runner配置文件

[root@gitlab ~]# cat/etc/gitlab-runner/config.toml

concurrent = 1

check_interval = 0

[[runners]]

  name ="test_ci"

  url ="http://192.168.201.148/ci"

  token ="c6f62fe5a2b4ec072f5cc2fb096c02"

 executor = "shell"

 [runners.cache]

4,运行runner

要让一个Runner运行起来,--url、--token和--executor选项是必要的.

[root@gitlab gitlab]# gitlab-ci-multi-runnerrun-single --help

[root@gitlab ~]# gitlab-ci-multi-runner install--user=gitlab-runner --working-directory=/home/gitlab-runner

[root@gitlab ~]# gitlab-ci-multi-runner status

gitlab-runner: Service is running!

[root@gitlab test]# gitlab-ci-multi-runner list

Listing configured runners                          ConfigFile=/etc/gitlab-runner/config.toml

popop                                              Executor=shell Token=8bfcd3b988ae348111b5500a355273URL=http://192.168.201.149/ci

5,yaml

https://docs.gitlab.com/ee/ci/yaml/README.html

从7.12版本开始,GitLab CI使用YAML 文件(.gitlab-ci.yml)来配置project's builds

.gitlab-ci.yml 使用YAML语法, 需要格外注意缩进格式,要用空格来缩进,不能用tabs来缩进。

6,实战

3.0 实战测试

http客户端测试

#创建测试目录

[root@client ~]# mkdir test2

[root@client ~]# cd test2

#把服务器的上仓库clone下来

[root@cleint test2]# git clone http://gitlab.server.com/root/test.git

Cloning into 'test'...

warning: You appear to have cloned an emptyrepository.

Checking connectivity... done.

或者

[root@cleint test2]# git clone http://gitlab.server.com/root/test.git

Username for 'http://git.server.com':root

Password for 'http://root@git.server.com':adminroot

Counting objects: 3, done.

Writing objects: 100% (3/3), 216 bytes | 0bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

To http://git.server.com/root/go.git

 * [newbranch]      master -> master

Branch master set up to track remote branchmaster from origin.

[root@git test2]# ls

test

#配置用户

[root@cleint test2]# git config --globaluser.name "Administrator"

[root@client test2]# git config --globaluser.email "admin@example.com"

[root@client test2]# cd test/

#创建文件

[root@client test]# touch README.md

[root@client test]# vi README.md

[root@client test]# git add README.md

[root@client test]# git commit -m "addREADME"

[master (root-commit) 874889b] add README

 1 filechanged, 1 insertion(+)

 createmode 100644 README.md

#push

[root@client test]# git push -u origin master

Username for 'http://git.server.com': root

Password for 'http://root@gitlab.server.com': adminroot

Counting objects: 3, done.

Writing objects: 100% (3/3), 223 bytes | 0bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

To http://git.server.com/root/test.git

 * [newbranch]      master -> master

Branch master set up to track remote branchmaster from origin.

从web上查看test仓库下是否上传了README.md这个文件

#查看是否成功

上传成功

ssh客户端测试

#生成公钥

[root@node6 .ssh]# ssh-keygen 

Generating public/private rsa key pair.

Enter file in which to save the key(/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in/root/.ssh/id_rsa.

Your public key has been saved in/root/.ssh/id_rsa.pub.

The key fingerprint is:

d9:0d:43:2b:17:cc:3b:01:fa:c9:cb:2c:6e:b7:27:6droot@node6

The key's randomart image is:

+--[ RSA 2048]----+

|       .+o      |

|       ..+o     |

|      .. =o     |

|       o*o+     |

|       S ...    |

|       o.       |

|      .+.       |

|    ...o E      |

|    ....=       |

+-----------------+

[root@node6 .ssh]#

[root@node6 .ssh]# ls

id_rsa id_rsa.pub

[root@node6 .ssh]# cat id_rsa.pub

ssh-rsaAAAAB3NzaC1yc2EAAAABIwAAAQEAoOLsYhPPlHPOnGh6SoVDPlVn2o8rfO55J60Gz7E0EDB0ugKgTu4VGOE8vVta7HH5exNAjw2UqHIliYcmVvrj5eFbvXLdLYGypiMfuP4H7dVwGXfxSzeG17aIbZma0fpB2bTQr3tN+nVA7tokVSmO+jC61/H6Qj9G1TEiedq0wtTuSQ8pza5hyeWRO9oi0W7ccZkYg7lSQ3Eo2n2/RJbmQHWdIcoBO8c64h5vq/gB1s7ZjHKUjSFvGTyHu7uYE6yD2PXylavLfq2FHUc4syV8yAvyW2ehgIcc+xDWMFC85SNuPvTOt0YNzG628gWB2lm+D8CPhZBUbz2IUkFN0jEdyQ==root@node6

#添加域名(如果是真实的域名,这步不需要做)

[root@node6 .ssh]# vi /etc/hosts

192.168.201.131 git.server.com

#添加到gitlab上

#测试ssh是否可用

[root@node6 .ssh]# ssh -T git@gitlab.server.com

The authenticity of host 'git.server.com(192.168.201.134)' can't be established.

RSA key fingerprint is45:1f:76:55:cb:72:fe:65:22:75:10:eb:d5:2e:35:d5.

Are you sure you want to continue connecting(yes/no)?yes

Warning: Permanently added'git.server.com,192.168.201.134' (RSA) to the list of known hosts.

Welcome to GitLab, Administrator!

证明成功

#克隆数据

[root@node6 .ssh]# git clone git@gitlab.server.com:root/test.git

Initialized empty Git repository in/root/.ssh/test/.git/

remote: Counting objects: 3, done.

remote: Total 3 (delta 0), reused 0 (delta 0)

Receiving objects: 100% (3/3), 223 bytes, done

Gitlab-runner

在创建register之前,需要拿到token和ci地址

1,找到你要register的项目地址

2,进入到这个项目

3,点击设置

4,点击pipline,查看token和ci

#register

[root@gitlab test]# gitlab-ci-multi-runnerregister

#查看register

# 登陆

http://my_url/admin/runners

#查看gitlab-runner配置文件

[root@gitlab ~]# cat/etc/gitlab-runner/config.toml

concurrent = 1

check_interval = 0

[[runners]]

  name ="test_ci"

  url ="http://192.168.201.148/ci"

  token ="c6f62fe5a2b4ec072f5cc2fb096c02"

 executor = "shell"

 [runners.cache]

#配置pipline

1,打开runner

2,编辑runner

#clone仓库

[root@gitlab test]# git clone http://root@gitlab.server.com/root/test.git

[root@gitlab test]#cd test

#创建gitlab-ci.yml文件

[root@gitlab test]# cat .gitlab-ci.yml

stages:

  - test

job1:

  stage:test

  script:

    -echo "I am job1"

- echo "I am intest stage"

#上传到gitlab仓库中

[root@gitlab test]# git add .gitlab-ci.yml

[root@gitlab test]# git commit -m"kskksksk"

[master 9376c70] kskksksk

 1 filechanged, 1 insertion(+), 1 deletion(-)

[root@gitlab test]# git push origin master

Password for 'http://root@gitlab.server.com':

Counting objects: 5, done.

Compressing objects: 100% (3/3), done.

Writing objects: 100% (3/3), 363 bytes | 0bytes/s, done.

Total 3 (delta 1), reused 0 (delta 0)

To http://root@gitlab.server.com/root/test.git

  df0b7b4..9376c70  master ->master

#查看效果

#点击passwd

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hadoop实操

如何使用StreamSets实时采集Kafka数据并写入Hive表

3192
来自专栏「3306 Pai」社区

构建狂拽炫酷屌的 MySQL 监控平台

prometheus+grafana 对于现在这个时间点来说,相信很多同行都应该已经开始玩起来了,当仍然可能有一部分人可能还不知道prometheus+graf...

922
来自专栏云计算教程系列

如何在CentOS 6.5上使用 Nginx+Passenger 部署Railes应用程序

对于某个计算机编程领域的新手来说,挑战永远不会结束。本文的主题是Rails,以及如何在线获取基于Ruby On Rail的 Web应用程序 - 这是最简单,最快...

1092
来自专栏Coding01

自建 Laravel 的 Docker 开发环境

好久没写东西,今天说一说怎么自建一个 Laravel 运行的 Docker 环境。

702
来自专栏owent

atsf4g完整游戏工程示例

近期仍然在搭建完整的游戏服务器架构。基于atsf4g(asynchronously-tree server framework fo game)的完整解决方案终...

431
来自专栏令仔很忙

Hybrid app(二)----开发主要应用技术

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量...

771
来自专栏IT笔记

Grafana+Prometheus打造全方位立体监控系统

前言 本文主要介绍如何使用Grafana和Prometheus以及node_exporter对Linux服务器性能进行监控。下面两张图分别是两台服务器: 服务器...

69713
来自专栏漫漫全栈路

【译】Windows下的Docker Machine - 如何设置你的Docker主机

原文作者:Markus Eisele 原文地址:https://dzone.com/articles/docker-machine-windows-how 最近...

3295
来自专栏云上大文件传输

win10和win server 2016新的TCP功能介绍

TFO允许在TCP握手期间发送和接收初始SYN分组中的数据。如果客户端和服务器都支持TFO功能,则可以减少建立到同一服务器的多个TCP连接的延迟。这是通过在初始...

3754

Docker / OSX快速入门

Docker(容器技术)始于2013年,自那时起我便经常可以看到有关docker的消息。之前我已经尝试过docker的入门例子,但我觉得自己没有真正理解dock...

19310

扫码关注云+社区