zoukankan      html  css  js  c++  java
  • gitlab之一: gitlab安装配置使用

    参考:  gitlab 安装和配置

            gitlab下载地址: https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/

           官方教程: https://about.gitlab.com/downloads/

    1. gitlab 安装

    实验环境: ubuntu 14.04.

    1.1、下载CE版 gitlab 安装包

    注意要下载ubuntu对应版本的gitlab,  如   trusty(ubntu 14.04的代号),bionic(ubntu 18.04代号),xenial(ubntu 16.04代号).

    官网下载不下来,用下面的源下载.

    wget  https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/trusty/main/g/gitlab-ce/gitlab-ce_7.14.3-ce.1_amd64.deb  

    注意:  第一次实验的是安装gitlab-ce_7.14.3-ce.1_amd64.deb  ,第二次实验安装了  gitlab-ce_11.0.0-ce.0_amd64.deb.安装过程一模一样,照样可以跑起来.

    1.2、安装依赖

    debian/ubuntu
    sudo apt-get install curl openssh-server ca-certificates postfix
     

    1.3、配置postfix邮箱

    1、选择Internet site→使用FQDN默认即可
     

    1.4、安装gitlab安装包

    dpkg -i gitlab-ce_7.14.3-ce.1_amd64.deb

    1.5、配置gitlab

    sudo mkdir -p /etc/gitlab
    sudo touch /etc/gitlab/gitlab.rb
    sudo chmod 600 /etc/gitlab/gitlab.rb
    sudo nano /etc/gitlab/gitlab.rb
     
    把external_url改成部署机器的域名或者IP地址。
    external_url 'http://gitlab.chepingan.com'
     
    重新配置启动gitlab
    sudo gitlab-ctl reconfigure
     

    1.6.查看状态

    sudo gitlab-ctl status
     
    在浏览器中使用external_url中地址登陆
     
    http://gitlab.chepingan.com/
     
    默认管理员用户名和密码:
    Username: root
    Password: 5iveL!fe

     登录不上可能是防火墙的问题.

    第一次启动的时候,需要初始化大量的东西,经常会出现502错误,通常是由于内存不足的原因导致,所以需要准备好足够的内存。官方推荐生产环境中使用2G内存,2核CPU。虚拟机中测试1GB内存基本就可以了。

    管理员登陆,在网页设置中,去掉Sign-up enabled的勾选,拒绝注册
     
    使用管理员可以添加用户和组
     
     

    2. 汉化包的安装

    这里汉化的是11.0.0 版本.
     
    查看版本: 
    cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
    11.0.0
     
    汉化包下载地址:
     
    8.8 以前: git clone https://gitlab.com/larryli/gitlab.git
     
    8.8 以后:git clone  https://gitlab.com/xhang/gitlab.git

    2.1   第一种汉化方法(没成功尴尬)

    我这里11.0.0汉化包的下载。因为上面默认的不是下载11.0.0的汉化包(zh结尾的分支),需要自己指定分支来下载.
    git clone https://gitlab.com/xhang/gitlab.git -b 11-0-stable-zh
     
    下载下来名字是 gitlab  .
     
    汉化:
     
    gitlab-ctl stop
     
    cp -r /opt/gitlab/embedded/service/gitlab-rails{,.ori}
     
    cp -rf gitlab/*  /opt/gitlab/embedded/service/gitlab-rails/
     
    gitlab-ctl start
     
    访问的时候出现了502,
     
     

    2.2 第二种汉化方法(成功耶)

    参考:  https://blog.whsir.com/post-3081.html

    Gitlab中文社区版地址:https://gitlab.com/xhang/gitlab

    1、克隆版本库

    cd /usr/local/src/
    git clone https://gitlab.com/xhang/gitlab.git

    2、获取当前Gitlab版本

    gitlab_version=$(cat /opt/gitlab/embedded/service/gitlab-rails/VERSION)

    3、比较汉化标签和原标签,导出patch用的diff文件

    cd /usr/local/src/gitlab
    git diff v${gitlab_version} v${gitlab_version}-zh > ../${gitlab_version}-zh.diff

    4、先停止gitlab

    gitlab-ctl stop

    5、导入汉化补丁

    patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < ../11.0.0-zh.diff

    PS:如果出现类似以下内容,则按住回车,一直跳过就行了

    can't find file to patch at input line 5
    Perhaps you used the wrong -p or --strip option?
    The text leading up to this was:
    --------------------------
    |diff --git a/app/assets/javascripts/awards_handler.js b/app/assets/javascripts/awards_handler.js
    |index eb0f06e..73e4833 100644
    |--- a/app/assets/javascripts/awards_handler.js
    |+++ b/app/assets/javascripts/awards_handler.js
    --------------------------
    File to patch:

    6、然后启动gitlab

    3. gitlab 的使用

    3.1 关闭注册功能 

    在gitlab的首页点击,  配置GitLab ---->设置---->Sign-up restrictions   里面去设置.

     3.2 gitlab组件和目录

    组件

    root@A1-Back:/# gitlab-ctl  status
    run: alertmanager: (pid 30583) 1901863s; run: log: (pid 11484) 1989543s
    run: gitaly: (pid 30600) 1901856s; run: log: (pid 11464) 1989544s
    run: gitlab-monitor: (pid 30612) 1901856s; run: log: (pid 11439) 1989544s
    run: gitlab-workhorse: (pid 30625) 1901855s; run: log: (pid 11446) 1989544s
    run: logrotate: (pid 31410) 1011s; run: log: (pid 11396) 1989545s
    run: nginx: (pid 30641) 1901855s; run: log: (pid 11395) 1989545s
    run: node-exporter: (pid 30643) 1901855s; run: log: (pid 11465) 1989544s
    run: postgres-exporter: (pid 30729) 1901854s; run: log: (pid 11575) 1989542s
    run: postgresql: (pid 30735) 1901854s; run: log: (pid 11377) 1989545s
    run: prometheus: (pid 30743) 1901853s; run: log: (pid 11456) 1989544s
    run: redis: (pid 30754) 1901853s; run: log: (pid 11376) 1989545s
    run: redis-exporter: (pid 30758) 1901852s; run: log: (pid 11435) 1989544s
    run: sidekiq: (pid 30774) 1901852s; run: log: (pid 11379) 1989545s
    run: unicorn: (pid 30781) 1901852s; run: log: (pid 11378) 1989545s

    目录

    3.3 gitlab 权限管理

    参考:  https://www.cnblogs.com/zangxueyuan/p/9222014.html

    参考:  gitlab权限管理--issue管理

    1. 添加user

    2. 添加 Group,往Group中添加user并且设定user的权限. 

    3. 创建project,项目的 url  组成如下:

    http://ip  +  Groups/Users 的名字 +  项目名字.

    3.4 gitlab 命令使用

     参考: https://blog.csdn.net/wh211212/article/details/72627803

    语法:

    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

    3.3 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这个用户 

    #点击编辑

    #关闭监控

    #关闭服务

    [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

    4. gitlab 代码管理

    参考: http://lishao378.blog.sohu.com/323704341.html   个人开发管理

        https://blog.csdn.net/u012764358/article/details/62886427  sourcetree 和 gitlab的结合

        https://blog.csdn.net/predict_wise/article/details/77898577   团队协作开发

    4.1.  gitlab管理使用的两种方式(http协议和ssh) 

    使用http协议的时候,每次pull,push 等都需要输入 用户名和密码(不同的用户不同的权限)

    使用ssh免密码的话,每个用户必须先上传密钥。不同的密钥对应不同的用户所以权限也是不一样的。(假如某个开发者得到项目管理者的密钥对,他在本地认证使用的是这个密钥,那么就有了项目管理者的权限,比如管理master,所以每个用户用自己的密钥对)

    4.2  gitlab团队协作开发

    1. 使用fork

    • 项目负责人在gitlab上新建一个项目,并分享URL给开发人员
    • 开发人员在负责人的gitlab项目页面上点击“fork”按钮,将此项目fork到自己的gitlab上,这相当于是从负责人那拷贝了一份项目副本,无论开发人员如何修改代码都不会影响负责人那master分支上的代码
    • 然后开发人员可以根据自己的项目分工,像对待普通项目一样做clone、add、commit、push等操作
    • 如果开发人员人为一个小模块做好了,可以点击“pull request”按钮,向负责人发送代码合并请求,要合并的代码文件也会以列表的形式同时发送给负责人,此时负责人会看到开发人员的请求,经审核如果代码没问题则会合并模块,并向开发人员发送确认合并的通知
    • 有的时候项目负责人也在开发,在不断更新项目,如何也让自己Github上的也跟着同步,这里参考这篇博文: 
      http://blog.csdn.net/sjt19910311/article/details/50596714

    2. 不使用fork

    1. 负责人为开发人员分别创建开发分支(namedev_branch)

      • 项目负责人在gitlab上新建一个项目,并为每一个开发人员创建一个开发分支(namedev_branch)
      • 开发人员clone项目之后,经git branch检查发现本地只有master分支,因此也需要把属于自己的开发分支也一起获取下来

      • 切换到namedev_branch分支

        
        
      • 之后的操作如同对待普通项目一样

      2. 负责人不为开发人员分别创建开发分支 (开发者自己创建)

        虽然项目负责人不分别为开发人员创建分支,但是需要把他们添加到一个team中,否则开发人员在向项目push自己的开发分支时遇到权限错误

    • 开发人员在把项目clone之后需要为自己新建一个开发分支(namedev_branch),因为经由git branch查看发现本地只有master分支

    • 之后的操作如同对待普通项目一样(是在namedev_branch分支进行操作        

    •     

          

    之后,项目负责人可以在项目的gitlab主页上看到每个开发人员的工作进度,并考虑何时merge开发人员的分支到master分支上以完善项目

    4.3  实验1: 多人协作开发。不用fork

    1. 关闭注册功能(管理员权限)

    2. 管理员添加用户(给项目负责人创建组的权限), 并给每个用户添加一个 ssh 密钥(密钥可以管理员这边生成,也可以用户自己生成发给管理员)。每个用户一个密钥对(不同的密钥在 push 等操作的时候权限是不同的,你用的哪个用户的密钥连接,你就有哪个用户的权限, ssh密钥会默认添加到 git用户的authorized_keys文件中.

    3. 项目负责人 创建项目,  初始化项目,使项目拥有master分支,开启分支保护(master分支是没人开启的,只有项目管理人可以直接操作master分支)。给该项目添加成员分配权限(一般是开发者权限),并且给每个成员创建一个分支。 也可以不给项目添加成员而是在创建项目的时候选择组。

    4. 开发者克隆版本库,在自己的分支上开发,提交等操作。开发者想要将自己的分支合并到master分支,需要登录gitlab发起合并请求,负责人审核后处理合并请求. 

    4.4 用fork

    1.  管理员 禁用注册功能,建立开发人员帐号,给权限。可以给项目leader多一点权限。

    2.  leader创建项目并且初始化项目,使其拥有master分支。 将项目url给开发人员

    3. 开发人员用自己的帐号登录,并且 派生 源项目。

    4. 开发人 clone 派生的项目到本地进行开发,开发一个功能后发起合并请求。

    5. 如何让自己 派生的空间 的代码和 源作者的代码同步, 参考: http://blog.csdn.net/sjt19910311/article/details/50596714

    5. git客户端(TortoiseGit)Windows下的使用

    参考: https://www.jianshu.com/p/9beb880332ba

             https://blog.csdn.net/bird3014/article/details/72355648

       https://www.cnblogs.com/ywlaker/p/6344334.html

      https://www.cnblogs.com/wntd/p/5889118.html

    6. gitlab 集群

  • 相关阅读:
    thinkphp---部署在IIS8.0服务器上
    程序员撩妹小技巧
    php---进行签名验证
    php---进行RSA进行非对称加密
    python---使用md5加密
    (原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 顺序分析和聚类分析算法)
    (原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 关联规则分析算法)
    (原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 时序算法——结果预算+下期彩票预测篇)
    (原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 时序算法)
    (原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(结果预测篇)
  • 原文地址:https://www.cnblogs.com/yitianyouyitian/p/9214940.html
Copyright © 2011-2022 走看看