首页 > 其他分享 >Centons7+GitLab私有库

Centons7+GitLab私有库

时间:2022-12-10 20:22:19浏览次数:78  
标签:Git GitLab run log 私有 gitlab pid Centons7 ctl

引言:公司代码的管理不统一,一部分人用SVN,一部分人用Git,对于习惯了使用Linux或者Mac命令行的人来说,Git的操作更方便和快捷,GitHub如果不是开源项目的话是需要付费使用,所以选择使用GitLab

一、gitlab 介绍

Gitlab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。Gitlab有乌克兰程序员DmitriyZaporozhets和ValerySizov开发,它由Ruby写成。后来,一些部分用Go语言重写,现今并在国内外大中型互联网公司广泛使用。gitlab-ce是它的社区版,gitlab-ee是企业版,是收费的。

二、git和svn 的区别

Git: 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

下图就是分布式版本控制工具管理方式:

Git是分布式版本控制系统,它没有中央服务器,每个人的电脑就是一个完整的版本库,这样工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

SVN: 是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。集中管理方式在一定程度上看到其他开发人员在干什么,而管理员也可以很轻松掌握每个人的开发权限。

下图就是标准的集中式版本控制工具管理方式:

但是相较于其优点而言,集中式版本控制工具缺点很明显:

服务器单点故障

容错性差

Git 的内容完整性要优于svn

GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

一个研发队伍的成员正常包括:需求分析、设计、美工、程序员、测试、实施、运维,每个成员在工作中都有产出物, 包括了文档、设计代码、程序代码,这些都需要按项目集中进行管理的。SVN能清楚的按目录进行分类管理, 使项目组的管理处于有序高效的状态,SVN更适用于项目管理, Git更适用于代码管理。

1、 集中式vs分布式

Subversion(svn)属于集中式的版本控制系统

Git属于分布式的版本控制系统

2. 版本库与工作区

SVN的版本库和工作区是分离的

Git 的版本库和工作区如影随形

3. 全局版本号和全球版本号

SVN的全局版本号和CVS的每个文件都独立维护一套版本号相比,是一个非常大的进步。在看似简单的全局版本号的背后,是Subversion提供对于事物处理的支持,每一个事物处理(即一次提交)都具有整个版本库全局唯一的版本号。

Git的版本号则更进一步,版本号是全球唯一的。Git 对于每一次提交,通过对文件的内容或目录的结构计算出一个SHA-1 哈希值,得到一个40位的十六进制字符串,Git将此字符串作为版本号

4、部分检出和全局检出

Subversion可以将整个库检出到工作区,也可以将某个目录检出到工作区。对于要使用一个庞大、臃肿的版本库的用户来说,部分检出是非常方便和实际的。
Git只能全部检出,不支持按照目录进行的部分检出。

5、更新和提交

在SVN中,因为只有一个中心仓库,所以所谓的远程更新,也就是svn update ,通过此命令来使工作区和版本库保持同步。如果不能连接到服务器上,基本上不可以工作。

对于git来说,别人的改动是存在于远程仓库上的,所以git checkout命令尽管在某些功能上和svn中的update类似(例如取仓库特定版本的内容),但是在远程更新这一点上,还是不同的,不属于git checkout的功能涵盖范围。 Git使用git fetch和git pull来完成远程更新任务,fetch操作只是将远程数据库的object拷贝到本地,然后更新remotes head的refs,git pull 的操作则是在git fetch的基础上对当前分支外加merge操作。可离线工作。

三、Git和svn的优缺点比较

1、SVN优缺点

优点:

1、 管理方便,逻辑明确,符合一般人思维习惯。

2、 易于管理,集中式服务器更能保证安全性。

3、 代码一致性非常高。

4、 适合开发人数不多的项目开发。

缺点:

1、 服务器压力太大,数据库容量暴增。

2、 如果不能连接到服务器上,基本上不可以工作,如果服务器不能连接上,就不能提交,还原,对比等等。

3、 不适合开源开发(开发人数非常非常多,但是Google app engine就是用svn的)。但是一般集中式管理的有非常明确的权限管理机制(例如分支访问限制),可以实现分层管理,从而很好的解决开发人数众多的问题。

2、Git优缺点

优点:

1、适合分布式开发,强调个体。

2、公共服务器压力和数据量都不会太大。

3、速度快、灵活。

4、任意两个开发者之间可以很容易的解决冲突。

5、离线工作。

缺点:

1、学习周期相对而言比较长。

2、不符合常规思维。

3、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

四、git、gitlab、GitHub的简单区别

git 是一种基于命令的版本控制系统,全命令操作,没有可视化界面

gitlab 是一个基于git实现的在线代码仓库软件,提供web可视化管理界面,通常用于企业团队内部协作开发

github 是一个基于git实现的在线代码托管仓库,亦提供可视化管理界面,同时免费账户和提供付费账户,提供开放和私有的仓库,大部分的开源项目都选择github作为代码托管仓库

其中:

1、Gitlab和GitHub的区别

相同点:二者都是基于web的Git仓库,在很大程度上Gitlab是仿照GitHub来做的;
它们都提供了分享开源项目的平台,为开发团队提供了存储、分享、发布
和合作开发项目的中心化云存储的场所。

不同点:GitHub如果要使用私有仓库,是需要付费的。Gitlab可以在上面创建私人的免费仓库。

Gitlab让开发团队对他们的代码仓库拥有更多的控制,相比于GitHub,它有不少的特色:允许免费设置仓库权限;允许用户选择分享一个project的部分代码;允许用户设置project的获取权限,进一步的提升安全性;可以设置获取到团队整体的改进进度;通过innersourceing让不在权限范围内的人访问不到该资源。从代码私有性方面来看有时公司并不希望员工获取到全部的代码,这个时候Gitlab无疑是更好的选择。但是对于开源项目而言,GitHub依然是代码托管的首选。

五、Gitlab 搭建

方法一、脚本安装gitlab

#!/bin/bash
  #安装依赖
systemctl stop firewalld
setenforce  0
a = `ifconfig ens33 |grep inet |awk  'NR==1{print $2}' `
  yum install curl wget policycoreutils policycoreutils - python openssh - server openssh - clients postfix  - y > / dev / null
  systemctl enable sshd
  systemctl start sshd
  sed  - i  's/inet_interfaces = localhost/inet_interfaces = all/g' / etc / postfix / main.cf

  #正式安装gitlab
  curl  - sS https: / / packages.gitlab.com / install / repositories / gitlab / gitlab - ce / script.rpm.sh | bash >  / dev / null
  sed  - i  "s/baseurl=https:\/\/packages.gitlab.com\/gitlab\/gitlab-ce\/el\/7\/\$basearch/baseurl=https:\/\/mirrors.tuna.tsinghua.edu.cn\/gitlab-ce\/yum\/el\$releasever\//g" / etc / yum.repos.d / gitlab_gitlab - ce.repo
  yum makecache &> / dev / null
  yum install gitlab - ce  - y
  #已经安装完成
  #验证是否安装成功
  right = $(yum  list installed | grep gitlab - ce)
  gitlab = 'gitlab-ce'
    if [[ ${right}  = ~  "${gitlab}" ]];then
      echo  "gitlab-ce已经安装成功啦!"
    else
      echo  "gitlab-ce没有安装成功,请重新检查!"
      exit
    fi
sed  - i  '32s/gitlab.example.com/' $a ':9099/' / etc / gitlab / gitlab.rb
gitlab - ctl reconfigure >  / dev / null
echo  "此时访问本地IP:9099 就可以显示gitlab 的页面了!"

方法二、清华开源软件rpm下载

 Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror  rp文件下载地址

 

## 安装依赖
yum install -y curl policycoreutils openssh-server openssh-clients

  ##启动ssh服务&设置为开机启动
  systemctl enable sshd
  systemctl start sshd

 

安装Postfix
Postfix是一个邮件服务器,GitLab发送邮件需要用到
#安装postfix
yum install -y postfix
 
#启动postfix并设置为开机启动
systemctl enable postfix
systemctl start postfix

开放ssh以及http服务(80端口)
#开放ssh、http服务
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
 
 说明允许ssh服务通过成功

 

 

 

#重载防火墙规则
firewall-cmd --reload

或者

直接关闭防火墙以及开机自关闭

systemctl stop firewalld
 
systemctl disable firewalld
 
setenforce 0

安装gitlab

 

 

 如果出现下图,则说明安装成功。

 

 安装完gitlab需要修改配置文件,并加载

Vim /etc/gitlab/gitlab.rb     进入配置文件

 #找到下面一行,修改ip

 

 

  修改好配置文件后,要使用 gitlab-ctl reconfigure 命令重载一下配置文件,否则不生效即可启动Gitlab。注意,启动过程较长,需要耐心等待。

 设置external_url ‘http://ip地址:端口号’,保存

修改puma端口号puma['port'] = xxxx,默认为8080,不修改可能会有端口冲突导致gitlab报502

执行:

 

[root@bd ~]# gitlab-ctl reconfigure// 可能会打印许多信息
#最后提示成功信息语句
Recipe: monitoring::alertmanager
  * runit_service[alertmanager] action restart (up to date)
Recipe: monitoring::postgres-exporter
  * runit_service[postgres-exporter] action restart (up to date)
Recipe: monitoring::grafana
  * runit_service[grafana] action restart (up to date)
 
Running handlers:
Running handlers complete
Chef Infra Client finished, 572/1516 resources updated in 04 minutes 33 seconds
 
Notes:
Default admin account has been configured with following details:
Username: root
Password: You didn't opt-in to print initial root password to STDOUT.
Password stored to /etc/gitlab/initial_root_password. This file will be cleaned up in first reconfigure run after 24 hours.
NOTE: Because these credentials might be present in your log files in plain text, it is highly recommended to reset the password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
gitlab Reconfigured!

 

如果reconfigure卡在ruby_block[wait for logrotate service socket]

执行

gitlab-ctl restart
[root@bd ~]# gitlab-ctl restart
[root@bd ~]# gitlab-ctl status //查看状态
-------------------------------------------------------------
run: alertmanager: (pid 8494) 31s; run: log: (pid 7854) 154s
run: gitaly: (pid 8503) 29s; run: log: (pid 7254) 285s
run: gitlab-exporter: (pid 8525) 29s; run: log: (pid 7779) 172s
run: gitlab-workhorse: (pid 8527) 29s; run: log: (pid 7688) 188s
run: grafana: (pid 8542) 28s; run: log: (pid 8149) 92s
run: logrotate: (pid 8553) 28s; run: log: (pid 7166) 298s
run: nginx: (pid 8559) 27s; run: log: (pid 7718) 183s
run: node-exporter: (pid 8565) 27s; run: log: (pid 7756) 177s
run: postgres-exporter: (pid 8571) 26s; run: log: (pid 7882) 148s
run: postgresql: (pid 8659) 26s; run: log: (pid 7396) 273s
run: prometheus: (pid 8661) 26s; run: log: (pid 7827) 160s
run: puma: (pid 8680) 25s; run: log: (pid 7621) 204s
run: redis: (pid 8685) 25s; run: log: (pid 7206) 290s
run: redis-exporter: (pid 8691) 24s; run: log: (pid 7801) 166s
run: sidekiq: (pid 8701) 22s; run: log: (pid 7652) 196s
 
#启动成功

输入刚才设置的ip和端口号,输入访问页面,正常

 

 

 如果出现问题可使用tail命令查看日志定位问题,看看是否有端口占用的情况

gitlab-ctl tail

修改root密码

’root初始密码在下面这个文件中,24小时候会自动删除,root账号登陆后需要尽快修改密码

/etc/gitlab/initial_root_password

常用操作命令

#配置重新加载
gitlab-ctl reconfigure
 
# 启动gitlab
gitlab-ctl start
 
# 停止gitlab
gitlab-ctl stop
 
# 查看gitlab命令
gitlab-ctl --help
 
#查看gitlab日志
gitlab-ctl tail [process name] #[process name可选]

卸载gitlab

#先杀死进程
kill -9 xxx
 
#卸载gitlab(ce是社区版)
rpm -e gitlab-ce
 
 
#最后删除文件
find / -name gitlab | xargs rm -rf

六、gitlab安装目录

以下是gitlab常用的默认安装目录

gitlab组件日志路径:/var/log/gitlab
 
gitlab配置路径:/etc/gitlab/  路径下有gitlab.rb配置文件
 
应用代码和组件依赖程序:/opt/gitlab
 
各个组件存储路径: /var/opt/gitlab/
 
仓库默认存储路径   /var/opt/gitlab/git-data/repositories
 
版本文件备份路径:/var/opt/gitlab/backups/
 
nginx安装路径:/var/opt/gitlab/nginx/
 
redis安装路径:/var/opt/gitlab/redis

七、GitLab常用命令汇总

#查看服务状态
gitlab-ctl status
使用控制台实时查看日志
# 查看所有的logs; 按 Ctrl-C 退出
gitlab-ctl tail
# 拉取/var/log/gitlab下子目录的日志
gitlab-ctl tail gitlab-rails
# 拉取某个指定的日志文件
gitlab-ctl tail nginx/gitlab_error.log
#启动关闭gitlab    
gitlab-ctl start      
gitlab-ctl stop                                #停止            
gitlab-ctl status                              #查看状态
gitlab-ctl restart                             #重启
gitlab-ctl reconfigure               #更新配置文件
gitlab-ctl help                                #帮助
gitlab-rake gitlab:check SANITIZE=true --trace    检查gitlab
#gitlab 默认的日志文件存放在/var/log/gitlab 目录下
gitlab-ctl tail                                #查看所有日志
#禁止 Gitlab 开机自启动
systemctl disable gitlab-runsvdir.service 
#启用 Gitlab 开机自启动
systemctl enable gitlab-runsvdir.service

剩余内容可参考
https://blog.csdn.net/weixin_56270746/article/details/125427722

标签:Git,GitLab,run,log,私有,gitlab,pid,Centons7,ctl
From: https://www.cnblogs.com/dj2016/p/16971820.html

相关文章