Centos 7.6 操作系搭建Gitlab服务器方法


参考文档 : Centos 7搭建Gitlab…
https://www.cnblogs.com/zhangycun/p/10963094.html

环境介绍

名称 参数
操作系统 Centos 7.6
硬件平台 华为弹性云服务器ECS
Gitlab gitlab-ce-12.0.0

操作系统环境准备

更新操作系统

sudo yum update
sudo yum upgrade

安装软件依赖环境

1) ssh

sudo yum install -y curl policycoreutils-python openssh-server

2)postfix邮件服务器
a、安装

sudo yum install postfix

b、启动

sudo yum install postfix

3)防火墙
方案一:关闭防火墙

临时关闭防火墙

sudo systemctl stop firewalld

永久防火墙开机自启动

sudo systemctl disable firewalld

临时打开防火墙

sudo systemctl start firewalld

防火墙开机启动

sudo systemctl enable firewalld

查看防火墙状态

sudo systemctl status firewalld

方案二:配置端口

安装防火墙

sudo yum install firewalld systemd -y

临时打开防火墙

sudo systemctl start firewalld

防火墙开机启动

sudo systemctl enable firewalld

查看防火墙状态

sudo systemctl status firewalld

配置防火墙端口
添加http服务到firewalld,pemmanent表示永久生效,若不加–permanent系统下次启动后就会失效。

sudo firewall-cmd --permanent --add-service=http

重启防火墙

sudo systemctl reload firewalld

4)关闭SELinux(可选)
临时关闭SELinux

setenforce 0

临时打开SELinux

setenforce 1

开机关闭SELinux
编辑/etc/selinux/config文件,将SELINUX的值设置为disabled (不是最后一行)

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

查看SELinux状态
执行getenforce命令

建立存储仓库目录

由于gitlab默认存储仓库路径为/var/opt/gitlab/git-data,创建

mkdir -p ~/disk/gitlab    #~/disk  为华为云数据盘
sudo  ln -sf ~/disk/gitlab/ /var/opt/gitlab

下载并安装Gitlab软件

1) 下载gitlab-ce-12.0.0软件安装包

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.0.0-ce.0.el7.x86_64.rpm

2) 安装Gitlab软件

sudo yum -y install gitlab-ce-12.0.0-ce.0.el7.x86_64.rpm

安装完成状态
在这里插入图片描述
3)修改gitlab.rb配置软件参数
a、修改服务器ip和port

vi /etc/gitlab/gitlab.rb
[root@server disk]# vi /etc/gitlab/gitlab.rb 

## GitLab configuration settings
##! This file is generated during initial installation and **is not** modified
##! during upgrades.
##! Check out the latest version of this file to know about the different
##! settings that can be configured by this file, which may be found at:
##! https://gitlab.com/gitlab-org/omnibus-gitlab/raw/master/files/gitlab-config-template/gitlab.rb.template


## 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
external_url 'http://gitlab.example.com'
...

修改external_url

进入编辑器后按“i”键进入编辑状态,按Backsapce键删除内容,键入自己的IP地址或者域名,修改完毕后,按ESC键退出编辑状态 然后退出并保存,命令输入“:wq”
注意这里设置的端口不能被占用,默认是8080端口,如果8080已经使用,请自定义其它端口,并在防火墙设置开放相对应得端口

external_url 'http://192.168.1.2'

重新配置GitLab

gitlab-ctl reconfigure

重新配置成功状态
在这里插入图片描述

启动GitLab

gitlab-ctl restart  

启动成功状态
在这里插入图片描述
使用netstat -nat命令查看GitLab服务网络端口状态
在这里插入图片描述
4) 服务管理:

  查看服务状态:gitlab-ctl status

  开启服务: gitlab-ctl start

  关闭服务:gitlab-ctl stop 

关闭gitlab的自动启动 :systemctl disable gitlab-runsvdir.service

开启gitlab的自动启动:

systemctl enable gitlab-runsvdir.service
 systemctl start gitlab-runsvdir.service
 gitlab-cmd start

GitLab服务的配置和使用

访问gitlab主页

没有域名,直接输入服务器ip和指定端口进行访问

初始账户: root 密码:5iveL!fe
第一次登录修改密码
在这里插入图片描述

smtp 163邮箱设置

a、修改gitlab.rb 配置文件

vi /etc/gitlab/gitlab.rb
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "[email protected]"
gitlab_rails['smtp_password'] = "XXXXX"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
### Email Settings
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '[email protected]'

b、保存重新配置gitlab

gitlab-ctl reconfigure

c、命令测试发送邮件

gitlab-rails console

Notify.test_email('[email protected]', 'Message Subject', 'Message Body').deliver_now

GitLab配置和使用

以下内容来自https://www.cnblogs.com/zhangycun/p/10963094.html

a、创建public key

[root@git-node1 demo]# ssh-keygen   #一路回车
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
48:94:9a:65:cd:0f:f3:17:c6:dc:3c:28:0a:bb:47:98 root@git-node1
The key's randomart image is:
+--[ RSA 2048]----+
|      .+   o +   |
|     .= = . * +  |
|     =.= * o . . |
|    o.E.o o .    |
|      .oS  .     |
|      . .        |
|       .         |
|                 |
|                 |

b、复制id_rsa.pub公钥

[root@git-node1 demo]# cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyVSAhs+ZBTEwv5nMwyoordV4VBy+DoCyGBJcjqkcfagRyyGUZvS57T4rhgSpz2csMTtxBXAyo0vJltxPr8McsZmcDZ8+t5qr22h9wHULFs5uB5/uZ6CDomm<br>/rVtJjiT2l1Uzh14De1CJDbNRPTCbxvcD5Mi7Ko29epymdt8agYqV2+ROynYaSjqcKxuo6pXD/cGskO7JTOkek2wxmTFOxFQR/Ec1LtVk8ilcesENzMdeU4Nwr2lec6Lr++qKXQuO7a3vB4958Hfhh1JlRI<br>ShDuHBOsFChG+vJim6tl123k7jjePHxJhUORhVMpmD4pMNwN+NYv1ta3J3ZSW6v5uWxw== root@git-node1

添加公钥至gitlab,
在这里插入图片描述

c 、添加远程仓库
1.gitlab创建仓库,进行远程同步
在这里插入图片描述

2.使用git remote 添加远程仓库地址,选择SSH方式克隆。

[root@git-node1 ~]# cd demo/ //必须是git init 初始化仓库目录
[root@git-node1 demo]# git remote add origin git@git-node1:root/git_demo.gitxxx

d 、修改远程仓库
由于刚开始添加的远程仓库写错了url,现在通过如下命令进行url修改

[root@git-node1 demo]# git remote set-url origin git@git-node1:root/git_demo.git

e、查看远程仓库
如果已经配置了远程仓库服务器,可以运行 git remote命令。它会列出你指定每一个远程服务器的简写。

[root@git-node1 demo]# git remote
origin
也可以指定-v选项,会显示需要读写远程仓库git保存简写名称以及对应的URL地址。

[root@git-node1 demo]# git remote -v
origin git@git-node1:root/git_demo.git (fetch)
origin git@git-node1:root/git_demo.git (push)

f、推送远程仓库
将本地库更新内容推送至远程,用git push命令,实际上是将当前分支推送至远程仓库。
由于远程库是新建立空的,我们在第一次推送时候,git默认是不会把本地master关联至远端的master,所以我们需要加上-u参数,这样git不但会把本地的master分支内容推送至远程仓库的master分支,并且还会将本地的master分支和远程master分支关联起来。在以后推送或者拉取时就可以简化命令。

[root@git-node1 demo]# git push -u origin master
Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (5/5), 432 bytes | 0 bytes/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To git@git-node1:root/git_demo.git
* [new branch] master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。
如果推送冲突可以选择--force强行推送

[root@git-node1 xuliangwei]# git push origin --force
如果一次都没有推送数据,可以选择—all一次全部推送至远程服务器
[root@git-node1 xuliangwei]# git push origin --all

g、克隆远程仓库
如果现在仓库已经有开发好的项目,需要加入进来开发,可以先clone整个项目。

[root@git-node1 tmp]# git clone git@git-node1:root/git_demo.git
正克隆到 'git_demo'...
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
接收对象中: 100% (5/5), done.

h、拉取远程仓库
简单的说,这个命令会访问远程仓库,从中取出你还没有的数据,或者git pull之后还是没有的数据。
此前在添加的远程仓库的时候指定了仓库名origin,命令会自动将其添加为远程仓库并默认以origin为简写。
所以,git fetch origin相当于从远程获取最新版本到本地,然后比较本地master分支和远程master分支差别最后进行合并。

[root@git-node1 demo]# git fetch origin //拉取主分支最新版本(可以拉取其他分支)
[root@git-node1 demo]# git fetch origin dev //获取dev分支最新数据
拉取数据,在生产环境中见到比较多的还是git pull相当于是从远程获取最新版本并merge到本地

[root@git-node1 xuliangwei]# git pull origin master #拉取主分支最新版本(可以拉取其他分支)
[root@git-node1 xuliangwei]# git pull origin dev //获取dev分支最新数据
上述命令其实相当于git fetch 和 git merge在实际使用中,git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并 

i、更改远程仓库

如果想重新命名一个远程仓库名称。将test重命名为rainbow,可以通过git remote rename进行修改。 
注意:这同时会修改你的远程分支名字。之前引用test/master的现在会引用rainbow/master 
1.添加新远程分支,并赋予test为远程仓库名称

[root@git-node1 git_demo]# git remote add test git@git-node1:root/git_demo.git
[root@git-node1 git_demo]# git remote -v
origin git@git-node1:root/git_demo.git (fetch)
origin git@git-node1:root/git_demo.git (push)
test git@git-node1:root/git_demo.git (fetch)
test git@git-node1:root/git_demo.git (push)
2.修改test名称为rainbow名称

[root@git-node1 git_demo]# git remote rename test rainbow
[root@git-node1 git_demo]# git remote -v
origin git@git-node1:root/git_demo.git (fetch)
origin git@git-node1:root/git_demo.git (push)
rainbow git@git-node1:root/git_demo.git (fetch)
rainbow git@git-node1:root/git_demo.git (push)

j、移除远程仓库
因为一些变动不再使用一些特定的镜像,可以通过git remote remove 远程仓库名称,移除远程仓库
1.查看远程仓库

[root@git-node1 git_demo]# git remote -v
origin git@git-node1:root/git_demo.git (fetch)
origin git@git-node1:root/git_demo.git (push)
rainbow git@git-node1:root/git_demo.git (fetch)
rainbow git@git-node1:root/git_demo.git (push)
2.移除不再使用的rainbow远程仓库

[root@git-node1 git_demo]# git remote remove rainbow
[root@git-node1 git_demo]# git remote -v
origin git@git-node1:root/git_demo.git (fetch)
origin git@git-node1:root/git_demo.git (push)

k、Git远程仓库小结
  要添加一个仓库,首先必须知道仓库的地址,然后使用git remote add 命令添加远程仓库,也可使用git clone命令克隆。(Git支持多种协议,包括http、https,但通过ssh支持的原生git协议速度最佳。)

  要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git,关联后,使用命令git push -u origin master第一次推送master分支的所有内容,此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改
	
# git remote add [remote] [url]#添加(关联)远程库
# git remote set-url [remote] [url] #修改远程仓库
# git clone [url] #克隆远程仓库项目
# git remote #查看指定远程仓库命名简写
# git remote –v #查看远程仓库详细信息以及名称对应URL
# git push -u remote master #第一次推送master分支的所有内容
# git fetch remote [branch/tag] #下载远程仓库的所有变动
# git pull remote [branch/tag] #拉取主分支最新版本(可以拉取其他分支)
# git push remote [branch/tag] --force #强行推送当前分支至远程分支,及时冲突
# git push remote [branch/tag] --all #推送所有分支到远程仓库
# git remote rename [oldname] [newname] #修改远程仓库名称
# git remote remove [name] #删除远程仓库名称以及URL地址
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章