Install and configure GitLab in Linux

Install and configure GitLab in Linux

What is GitLab?
GitLab is an open source project for warehouse management system. It uses Git as a code management tool and builds a web service on this basis.

The functional characteristics of GitLab
provide the functions of managing, planning, creating, verifying, packaging, publishing, configuring, monitoring and protecting applications. It is an online code warehouse hosting software and a code management platform that provides code hosting, submission review and issue tracking.

Requirements for the server: The recommended configuration is CPU2 core, memory 4G or more
. The difference between
Git , GitLab, and GitHub. Git version operation based on commands, full command operation, no visual interface;

Gitlab is an online code warehouse software based on Git, which provides a web management interface for use within the enterprise;

Github is an online code warehouse software based on Git. It provides a visual management interface and provides open and private warehouses. Most open source projects choose Github as their code hosting warehouse;

Service component
nginx: static web server: port number is 80;

gitlab-shell: used to process git commands and modify the authorized key list;

gitlab-workhorse: lightweight reverse proxy server (go language);

gitlab-workhorse is an agile reverse proxy, it will handle some large HTTP requests, such as file upload, download, git

Push/pull and git package download, other requests will be reverse proxy to gitlab rails application, that is, reverse proxy to unicorn on the back end;

logrotate: log file management tool;

postgresql: database;

reids: cache database;

sidekiq: used to execute queue tasks in the background (asynchronous execution) (ruby);

unicorn: an HTTP server written in ruby: the port number is 8080;

gitlab rails application: is hosted on this server

Function introduction
web-based management platform;

Possess a complete authority control and identity authentication module;

Issue tracking and code quality management;

Code review (review) function;

Document management, knowledge base management;

Steps to install 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

Problems with the gitlab page; check whether port 80 and 8080 are occupied; when
visiting the homepage 502, check whether port 8080 is occupied


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

Configure GitLab mail service
sendmail /postfix /smtp
ancient mailbox mail service server online mailbox

Steps to configure smtp mailbox


###修改配置文件
[root@localhost ~]# vim /etc/gitlab/gitlab.rb
 gitlab_rails['gitlab_email_from'] = '[email protected]'   //说明邮箱从哪里发,设置自己的邮箱地址
 #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'] = "[email protected]"  //邮箱地址
 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'] = "[email protected]"
###修改完成

重新编译配置文件
[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('[email protected]','yangxiaofeiNB','hello,world!').deliver_now  //发送邮件,deliver_now代表立刻发送
(格式:收件人的邮箱地址,邮件标题,邮件内容)
irb(main):003:0> exit   //退出控制台

Daily operations of 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
数据恢复完成

Visit gitlab's web page
http://gitlab.bdqn.com or http://localhost IP address

Two ways to enter the console

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>

Forgot the root password, modify it


[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进行登录测试
##至此修改完成

View GitLab logs


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

Upload files to GitLab via ssh remote connection

查看密钥
[root@localhost ~]# ssh-keygen -t rsa -C "[email protected]"  //为创建用户时输入的邮箱地址
[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 [email protected]
复制密钥,到web页面进行添加密钥

验证远程登录是否成功
[root@localhost .ssh]# ssh -T [email protected]
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!

Clone the project and upload it


[root@localhost ~]# yum install -y git   //下载git
声明谁操作,全局配置,为用户和用户邮箱(用户必须有才行)
[root@localhost ~]# git config --global user.name "zhangsan"
[root@localhost ~]# git config --global user.email "[email protected]"
[root@localhost ~]# git clone [email protected]: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 [email protected]:ios/ios.git
 * [new branch]      master -> master
进入web页面就可以看到项目了
克隆项目
[root@localhost ~]# mkdir test
[root@localhost ~]# cd test/
[root@localhost test]# git clone [email protected]: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

Guess you like

Origin blog.51cto.com/15067236/2607566