社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

Linux 环境下安装 GitLab 与配置

杰哥的IT之旅 • 4 年前 • 489 次点击  
阅读 207

Linux 环境下安装 GitLab 与配置

这是我参与 8 月更文挑战的第 16 天,活动详情查看: 8月更文挑战

一名致力于在技术道路上的终身学习者、实践者、分享者,一位忙起来又偶尔偷懒的原创博主,一个偶尔无聊又偶尔幽默的少年。

欢迎各位掘友们微信搜索「杰哥的IT之旅」关注!

原文链接:Linux 环境下安装 GitLab 与配置

什么是 GitLab?

GitLab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。

GitLab的功能特点

提供了管理,计划,创建,验证,打包,发布,配置,监视和保护应用程序的功能 是一个在线代码仓库托管软件,是提供代码托管、提交审核和问题跟踪的代码管理平台

对服务器的要求:配置建议CPU2核心,内存4G以上

Git、GitLab、GitHub三者的区别

Git 基于命令的版本操作,全命令操作,无可视化界面;

Gitlab 基于 Git 实现的在线代码仓库软件,提供了 web 的管理界面,用于企业内部;

Github 基于 Git 实现的在线代码仓库软件,提供了可视化管理界面,提供开放和私有的仓库。大部分开源项目选择 Github 作为代码托管仓库;

服务组成部分

  • nginx:静态web服务器:端口号为80;
  • gitlab-shell:用于处理 git 命令和修改 authorized key 列表;
  • gitlab-workhorse:轻量级反向代理服务器(go语言);
  • gitlab-workhorse 是一个敏捷的反向代理,它会处理一些大的 HTTP 请求,比如文件上传、下载,git
  • push/pull 和 git 包下载,其他请求会反向代理到 gitlab rails 应用,即反向按代理给后端的unicorn;
  • logrotate:日志文件管理工具;
  • postgresql:数据库;
  • reids:缓存数据库;
  • sidekiq:用于在后台执行队列任务(异步执行) (ruby);
  • unicorn:用ruby编写的一个HTTP服务器:端口号为8080;
  • gitlab rails应用:是托管在这个服务器上

功能介绍

  • 基于web方式的管理平台;
  • 拥有完善的权限的控制和身份认证模块;
  • 问题追踪和代码质量管理;
  • 代码review(复查)功能;
  • 文档管理、知识库管理;

安装 GitLab 的步骤


[root@localhost ~]# ls /var/cache/yum/x86_64/\$releasever/gitlab_gitlab-ce/packages/     //从网络上yum下载的包的位置
[root@localhost ~]# yum install -y curl openssh-server openssh-clients cronie policycoreutils-python postfix     //安装依赖包
[root@localhost ~]# curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash   //下载gitlab的yum(仓库)源,sudo用于提权(适用于普通用户)
[root@localhost ~]# yum list | grep gitlab-ce           //查看是否有gitlab-ce
gitlab-ce.x86_64                        11.7.5-ce.0.el7            gitlabgitlab-ce
[root@localhost ~]# yum -y install gitlab-ce        //安装gitlab-ce 
[root@localhost ~]# ls /var/cache/yum/x86_64/\$releasever/gitlab_gitlab-ce/packages/     //从网络上yum下载的包的位置

###设置URL
[root@localhost ~]# vim /etc/gitlab/gitlab.rb  //修改一个URL地址
  external_url 'http://gitlab.bdqn.cn'
[root@localhost ~]# vim /etc/hosts  //编辑一个域名解析
  192.168.1.21    gitlab.bdqn.cn
[root@localhost ~]# gitlab-ctl reconfigure   //重新配置gitlab的配置文件

[root@localhost ~]# gitlab-ctl start   //启动gitlab服务
ok: run: alertmanager: (pid 5151) 363s
ok: run: gitaly: (pid 4934) 368s
ok: run: gitlab-monitor: (pid 5070) 366s
ok: run: gitlab-workhorse: (pid 4897) 370s
ok: run: logrotate: (pid 4120) 416s
ok: run: nginx: (pid 4071) 418s
ok: run: node-exporter: (pid 4974) 367s
ok: run: postgres-exporter: (pid 5178) 362s
ok: run: postgresql: (pid 3564) 458s
ok: run: prometheus: (pid 5111) 364s
ok: run: redis: (pid 3420) 464s
ok: run: redis-exporter: (pid 5090) 365s
ok: run: sidekiq: (pid 3934) 430s
ok: run: unicorn: (pid 3862) 431s
[root@localhost ~]# gitlab-ctl restart          //重新启动gitlab服务
[root@localhost ~]# free -m    //查看运行内存
[root@localhost ~]# firefox gitlab.bdqn.cn   //查看gitlab页面,或者使用ip地址访问
[root@localhost ~]# firefox 192.168.1.21
复制代码

gitlab页面的出现的问题; 检测端口号80和8080是否被占用; 访问主页502的时候,看一下端口号8080是否被占用


gitlab相关命令
gitlab-ctl start       //启动gitlab服务
gitlab-ctl stop        //停止gitlab服务
gitlab-ctl start unicorn(添加组件名称)   //单独开启某个组件
gitlab-ctl status        //查看gitlab的运行状态
gitlab-ctl reconfigure    //修改完配置文件重新编译
gitlab-ctl tail       //查看gitlab的日志
复制代码

配置 GitLab 邮件服务

sendmail /postfix /smtp 古老邮箱 邮件服务服务器 在线邮箱

配置smtp邮箱步骤




    

###修改配置文件
[root@localhost ~]# vim /etc/gitlab/gitlab.rb
 gitlab_rails['gitlab_email_from'] = 'bm73333@163.com'   //说明邮箱从哪里发,设置自己的邮箱地址
 #ctrl+v 进入可视块 +x
 gitlab_rails['smtp_enable'] = true
 gitlab_rails['smtp_address'] = "smtp.163.com" //在线邮件服务器地址
 gitlab_rails['smtp_port'] = 25   //端口号,开启本地发邮件的端口
 gitlab_rails['smtp_user_name'] = "bm73333@163.com"  //邮箱地址
 gitlab_rails['smtp_password'] = "qwerty567890"  //邮箱授权码,调用邮箱
 ###邮箱授权码的获取
 设置 
 POP3/SMTP/IMAP
 客户端授权密码,在里面就可以设置授权码
 
 gitlab_rails['smtp_domain'] = "163.com"
 gitlab_rails['smtp_authentication'] = "login"   //在登录时,查看是否有授权码
 gitlab_rails['smtp_enable_starttls_auto'] = true   //加密方式
 gitlab_rails['smtp_tls'] = false    //加密方式

  user['git_user_email'] = "bm73333@163.com"
###修改完成

重新编译配置文件
[root@localhost ~]# gitlab-ctl reconfigure
重启gitlab服务
[root@localhost ~]# gitlab-ctl restart
进入控制台
[root@localhost ~]# gitlab-rails console
-------------------------------------------------------------------------------------
 GitLab:       11.7.5 (c5b5b18)
 GitLab Shell: 8.4.4
 postgresql:   9.6.11
-------------------------------------------------------------------------------------
Loading production environment (Rails 5.0.7.1)
irb(main):001:0> Notify.test_email('18256001006@163.com','yangxiaofeiNB','hello,world!').deliver_now  //发送邮件,deliver_now代表立刻发送
(格式:收件人的邮箱地址,邮件标题,邮件内容)
irb(main):003:0> exit   //退出控制台
复制代码

GitLab 的日常操作

gitlab的备份
[root@localhost ~]# gitlab-rake gitlab:backup:create    //gitlab的备份
备份的数据的目录
[root@localhost ~]# ls /var/opt/gitlab/backups/
1550541218_2019_02_19_11.7.5_gitlab_backup.tar   //备份完成后会形成tar包,文件名格式:时间戳,当前日期,当前gitlab版本,backup备份包
复制代码

恢复数据的步骤
首先停止一下两个组件
[root@localhost ~]# gitlab-ctl stop sidekiq
ok: down: sidekiq: 0s, normally up
[root@localhost ~]# gitlab-ctl stop unicorn
ok: down: unicorn: 0s, normally up

切换到备份目录
[root@localhost ~]# cd /var/opt/gitlab/backups/
[root@localhost backups]# ls
1550541218_2019_02_19_11.7.5_gitlab_backup.tar
[root@localhost backups]# gitlab-rake gitlab:backup:restore BACKUP=1550541218_2019_02_19_11.7.5   //进行数据的恢复,名字为上面的时间戳,日期,版本号组成
出现以下提示
Do you want to continue (yes/no)? yes
Do you want to continue (yes/no)? yes
[root@localhost backups]# gitlab-ctl start sidekiq  //启动组件服务
ok: run: sidekiq: (pid 19474) 0s
[root@localhost backups]# gitlab-ctl start unicorn  //启动组件服务
ok: run: unicorn: (pid 19536) 1s
数据恢复完成
复制代码

访问gitlab的web页面

gitlab.bdqn.com 或者 http://localhost 的 ip 地址

进入控制台的两种方法


1、[root@localhost ~]# gitlab-rails console   //进入控制台
-------------------------------------------------------------------------------------
 GitLab:       11.7.5 (c5b5b18)
 GitLab Shell: 8.4.4
 postgresql:   9.6.11
-------------------------------------------------------------------------------------
Loading production environment (Rails 5.0.7.1)  //加载生产环境
irb(main):001:0>

2、[root@localhost ~]# gitlab-rails console production
-------------------------------------------------------------------------------------
 GitLab:       11.7.5 (c5b5b18)
 GitLab Shell: 8.4.4
 postgresql:   9.6.11
-------------------------------------------------------------------------------------
Loading production environment (Rails 5.0.7.1)
irb(main):001:0>
复制代码

忘记 root 密码,进行修改


[root@localhost ~]# gitlab-rails console production
-------------------------------------------------------------------------------------
 GitLab:       11.7.5 (c5b5b18)
 GitLab Shell: 8.4.4
 postgresql:   9.6.11
-------------------------------------------------------------------------------------
Loading production environment (Rails 5.0.7.1)
irb(main):001:0> user = User.where(id:1).first   //切换到root用户
=> #<User id:1 @root>    
irb(main):002:0> user.password='1234.com'   //''里面修改密码,密码为8位
=> "1234.com"
irb(main):003:0> user.save!
Enqueued ActionMailer::DeliveryJob (Job ID: 7661b452-fcb4-48a0-b9f0-35995ba21258) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", #<GlobalID:0x00007f4360748a10 @uri=#<URI::GID gid://gitlab/User/1>>
=> true
irb(main):004:0> exit

验证是都修改成功,使用web进行登录测试
##至此修改完成
复制代码

查看 GitLab 的日志

[root@localhost ~]# gitlab-ctl tail   //查看整体的日志
查看组件的相关日志
[root@localhost ~]# gitlab-ctl tail redis   //查看redis的日志
[root@localhost ~]# gitlab-ctl tail logrotate
复制代码

通过 ssh 远程连接方式往 GitLab 上传文件

查看密钥
[root@localhost ~]# ssh-keygen -t rsa -C "zhangsan@bdqn.cn"  //为创建用户时输入的邮箱地址
[root@localhost .ssh]# pwd 
/root/.ssh
[root@localhost .ssh]# ls
id_rsa  id_rsa.pub
[root@localhost .ssh]# cat id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDG+woCe7UsBcXhU/I5hRZ0B7fzOOzzGsYzm1+qSvxn1SRaWQ53TNfWJJKpmamodHDI0IWHld6MI+2IB5bSXobNjrV1W147m34fE3KZZ4Kx9wwQ89UnUzqREIPDHnTLozHOE36AxGh6pREFawMjxJJjzd6d3xC9PM9bQ3KaY80agGY44N1vO6c+Turfkpyre3fyITudEqPlrCibJF9eikXgFhHNtrrWVAII6LUKU89LNfXKKYfOmXvB+T+ZYODkXqPR5GPCz4IIuGd5fxpfAmnTvm+Sz3Dp5APVSmveEx9ivtRVsb5lqlYoXJT1vL+D9dQKFY7HI8/FttOSduQNLfrv 45354066@qq.com
复制密钥,到web页面进行添加密钥

验证远程登录是否成功
[root@localhost .ssh]# ssh -T git@gitlab.bdqn.cn
The authenticity of host 'gitlab.bdqn.cn (192.168.1.21)' can't be established.
ECDSA key fingerprint is SHA256:88Ixrb6xHdt9SVsQ3n78nQbfzPplW8kZNKQLuldud6w.
ECDSA key fingerprint is MD5:3e:34:68:db:3a:f6:5c:a5:de:18:9b:1c:cc:ef:f9:ff.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitlab.bdqn.cn,192.168.1.21' (ECDSA) to the list of known hosts.
Welcome to GitLab, @root!
复制代码

克隆项目,进行上传

[root@localhost ~]# yum install -y git   //下载git
声明谁操作,全局配置,为用户和用户邮箱(用户必须有才行)
[root@localhost ~]# git config --global user.name "zhangsan"
[root@localhost ~]# git config --global user.email "zahngsan@bdqn.cn"
[root@localhost ~]# git clone git@gitlab.bdqn.cn:ios/ios.git   //克隆项目库
正克隆到 'ios'...
warning: 您似乎克隆了一个空版本库。
[root@localhost ~]# ls                  //生成一个目录,就是克隆的代码
anaconda-ks.cfg       ios   模板  图片  下载  桌面
initial-setup-ks.cfg  公共  视频  文档  音乐
[root@localhost ~]# cd ios/             //首先进入到克隆的库中
[root@localhost ~]# touch README.md          //创建一个文件
[root@localhost ~]# echo 111 > README.md        //输入内容
[root@localhost ios]# git add README.md       //git中添加内容
[root@localhost ios]# git commit -m "test111"   //进行提交,打一个标签
[master(根提交) ad3c913] test111
 1 file changed, 1 insertion(+)
 create mode 100644 README.md
[root@localhost ios]# git push origin master  //上传,原来的,向主干添加
Counting objects: 3, done.
Writing objects: 100% (3/3), 209 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@gitlab.bdqn.cn:ios/ios.git
 * [new branch]      master -> master
进入web页面就可以看到项目了
克隆项目
[root@localhost ~]# mkdir test
[root@localhost ~]# cd test/
[root@localhost test]# git clone git@gitlab.bdqn.cn:ios/ios.git
正克隆到 'ios'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
接收对象中: 100% (3/3), done.
[root@localhost test]# ls
ios
[root@localhost test]# cd ios/
[root@localhost ios]# ls
README.md
复制代码

推荐阅读

99%的Linux运维工程师必须要掌握的命令及运用

Linux 环境下 Oracle 数据库常用命令

Linux 环境下 vi/vim 编辑器常用命令

Linux环境下安装及管理程序(软件包封装、RPM命令、源代码编译安装的基本过程)

Linux 环境下账号和权限管理

Linux 磁盘和文件系统管理

Linux 环境下进程和计划任务管理

Linux 环境下分析和排查系统故障

Linux 环境下虚拟化之 KVM 常用命令

轻松带你玩转 Linux 环境下日期的语法!

只需 2 条命令,人人都能玩转的 10 款命令行游戏,刺激!

17 个有趣却无用的 Linux 彩蛋,真是好玩到极致!

Yum 仓库的配置及使用,真香啊!

Linux 图形化终端下截图与快捷键实用技巧!

本文完。


原创不易,如果你觉得这篇文章对你有点用的话,麻烦你为本文点个赞、评论或转发一下,因为这将是我输出更多优质文章的动力,感谢!

对了,掘友们记得给我点个免费的关注哟!防止你迷路下次就找不到我了。

我们下期再见!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/118551