linux搭建GitLab

1.初始GitLab

  GitLab是利用Ruby on Rails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。
  与Github类似,GitLab能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。
  它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

2.准备安装GitLab

  yum install -y postfix sshd policycoreutils-python

  • postfix 邮件通知
  • sshd ssh服务(一般系统已经有了,可以不装)
  • policycoreutils-python GitLab必备依赖

  设置postfix开机自启: chkconfig --add postfix

3.开始安装GitLab

  官方下载地址:https://packages.gitlab.com/gitlab/gitlab-ce
  国内镜像:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/


wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.7.6-ce.0.el6.x86_64.rpm
yum install -y gitlab-ce-12.7.6-ce.0.el6.x86_64.rpm

4.配置GitLab

  主要配置两个地方: 访问GitLab的IP地址和发送邮件的账号配置

  vim /etc/gitlab/gitlab.rb

external_url 'http://192.168.183.200' # 你自己的IP

### Email Settings
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '你的邮箱'
gitlab_rails['gitlab_email_display_name'] = '邮件名字'

### GitLab email server settings
### 这里邮件服务器使用的是QQ企业邮箱,163自行修改
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "你的邮箱"
gitlab_rails['smtp_password'] = "邮箱密码"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true

  ESC保存并退出 :wq

5.更改gitlab默认端口

  若linux服务器的80和8080端口都已经被使用,则需修改gitlab监听的端口

  修改路径文件:vim /etc/gitlab/gitlab.rb

  1、修改external_url (将前面的#注释符号去掉),我改成了8099

## GitLab URL
##! URL on which GitLab will be reachable.
##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
##!
##! Note: During installation/upgrades, the value of the environment variable
##! EXTERNAL_URL will be used to populate/replace this value.
##! On AWS EC2 instances, we also attempt to fetch the public hostname/IP
##! address from AWS. For more details, see:
##! https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
external_url 'http://10.211.55.61:8099'

  2、找到Advanced settings 下的8080端口 将端口改成自己备用端口号
  (不能和上面url端口号相同,会冲突占用!),我改的28080

### Advanced settings
# unicorn['listen'] = 'localhost'
 unicorn['port'] = 28080
# unicorn['socket'] = '/var/opt/gitlab/gitlab-rails/sockets/gitlab.socket'
# unicorn['pidfile'] = '/opt/gitlab/var/unicorn/unicorn.pid'
# unicorn['tcp_nopush'] = true
# unicorn['backlog_socket'] = 1024

  3、运行下面命令

sudo gitlab-ctl stop --停止服务
sudo gitlab-ctl reconfigure --启动服务
sudo gitlab-ctl start --启动所有gitlab组件

  4、若访问不了gitlab,尝试关闭或开放防火墙

6.启动GitLab

  刷新配置: gitlab-ctl reconfigure
  重启服务: gitlab-ctl restart

7.访问GitLab

  此时还不能访问,需要关闭防火墙 service iptables stop 或者 在防火墙中开放8099端口:

  编辑iptables vi /etc/sysconfig/iptables

  添加配置 -A INPUT -m state --state NEW -m tcp -p tcp --dport 8099 -j ACCEPT

  重启防火墙 service iptables restart

  访问 http://10.211.55.61:8099/

  第一次登录需要修改root密码, 密码8位以上,修改完就可以登录

8.Linux下Gitlab个人界面汉化

  1.进入个人用户界面
  点击右上角个人头像->settings->profile->Preferred language
  2.默认是english,可以切换中文
  3.再刷新一下,我们看见语言变成中文了
  4.不过其它账号登录依然是英文,只有当前账号登录才会显示成功切换的语言

9.GitLab基本操作

  添加用户2种方式: root后台添加和自己注册

  用户权限:

Regular: 可以访问自己组和项目
Admin: 可以访问所有组和项目

  添加组

  组权限

Private: 私用,只允许组成员可见
Internal: 内部,所有登录用户可见
Public: 公共,所有人可见

  创建仓库和添加成员到组,很简单,不再赘述. 重点说下仓库成员权限,

Guest: 可以创建issue、发表评论,不能读写版本库
Reporter: 可以克隆代码,不能提交,QA、PM可以赋予这个权限
Developer: 可以克隆代码、开发、提交、push,RD可以赋予这个权限
Master: 可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限
Owner: 可以设置项目访问权限 (- Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限)

10.Gitlab相关操作及说明


/etc/gitlab/gitlab.rb          #gitlab配置文件
/opt/gitlab                    #gitlab的程序安装目录
/var/opt/gitlab                #gitlab目录数据目录
/var/opt/gitlab/git-data       #存放仓库数据
gitlab-ctl reconfigure         #重新加载配置
gitlab-ctl status              #查看当前gitlab所有服务运行状态
gitlab-ctl stop                #停止gitlab服务
gitlab-ctl stop nginx          #单独停止某个服务
gitlab-ctl tail                #查看所有服务的日志

Gitlab的服务构成:
nginx:                 静态web服务器
gitlab-workhorse        轻量级反向代理服务器
logrotate              日志文件管理工具
postgresql             数据库
redis                  缓存数据库
sidekiq                用于在后台执行队列任务(异步执行)