基于centos7.6搭建Gitlab服务

特别说明:我是在服务器防火墙关闭状态下搭建的gitlab服务。

centos7版本对防火墙进行加强,启用firewalld,不再使用原来的iptables

可用firewall-cmdfirewalld命令查看当前服务器防火墙状态:

$ firewall-cmd --state

$ systemctl status firewalld

安装Gitlab

安装相关依赖

yum -y install policycoreutils openssh-server openssh-clients postfix

启动postfix,并设置为开机自启

目的:支持 gitlab 邮件发送功能

systemctl enable postfix && systemctl start postfix

若此时出现如下报错信息:

解决方法:

打开 /etc/postfix/main.cf 文件,并修改内容如下:

inet_interfaces = all
inet_protocols = ipv4

重新输入systemctl enable postfix && systemctl start postfix,会发现不再报错。

下载和安装gitlab社区版rpm包

下载路径:gitlab-ce-10.5.2-ce.0.el7.x86_64.rpm

注意:根据自己的linux系统选择合适的包

EL是Red Hat Enterprise Linux的简写 
- EL6软件包用于在Red Hat 6.x, CentOS 6.x, and CloudLinux 6.x进行安装
- EL5软件包用于在Red Hat 5.x, CentOS 5.x, CloudLinux 5.x的安装
- EL7 软件包用于在Red Hat 7.x, CentOS 7.x, and CloudLinux 7.x的安装

下载好之后,输入命令 rpm -ivh gitlab-ce-10.5.2-ce.0.el7.x86_64.rpm 进行安装。

修改访问Gitlab的URL

打开 /etc/gitlab/gitlab.rb 文件,修改 external_url 的值,可以使用自定义域名,也可以是IP地址+端口号。如: external_url 'http://105.13.44.103:1028',修改完之后,保存即可。

重置并启动Gitlab

重置命令:gitlab-ctl reconfigure

注:第一次预计需要几分钟

启动: gitlab-ctl restart

浏览器访问Gitlab

在浏览器中输入刚才在gitlab.rb文件中配置的URL,访问Gitlab。

第一次登陆时,系统会要求你输入密码(此时用户名默认为root)。

至此,Gitlab的搭建就完成了,下面看一下如何在Gitlab里创建和配置项目。

在Gitlab里创建和配置项目

配置Gitlab用户邮箱

首先注册一个gitlab账号,在注册过程中填上自己的邮箱地址。

添加用户侧电脑的key到Gitlab上

先确保你的电脑上已安装Git,打开Git Bash,在bash中输入:

ssh-keygen -t rsa -C “[email protected]”  ## 后面那个是输入自己的邮箱 

再在 ~/.ssh/id_rsa.pub中复制其中的内容,在User Settings - SSH Keys中添加刚才复制的内容。

将用户侧电脑上已存在的项目上传到Gitlab上

1、先在Gitlab上创建一个空项目,如:test

2、打开本地Git Bash,cd到你需要上传的项目目录下,配置局部的用户名和邮箱地址(为了防止对全局的用户名和邮箱造成影响)

$ cd ~/your project                       
$ git config user.name "username"
$ git config user.email "email"

3、执行git命令,将本地项目上传到Gitlab上

git init
git remote add origin [email protected]:zhepan/test.git
git add .
git commit -m "gitlab-test"
git push -u origin master

至此,可以到浏览器刷新test项目,发现已经上传成功。

常见问题和常用操作

在执行 git push -u origin master 时可能会报如下错误:

git@xxx's password:
Permission denied, please try again.
git@xxx's password:
Permission denied, please try again.
git@xxx's password:
git@xxx: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

但此时我确实已经在本地生成了公私钥文件,而且密码输入的也是正确的。为什么还会报Permission denied呢?

这是因为我在生成公钥时使用了自定义的名称(如:gitlab_id_rsa、gitlab_id_rsa.pub)而不是 id_rsa 和 id_rsa.pub,于是我将生成的密钥文件进行改名,再执行git push操作,就可以了。

firewalld和firewall-cmd的使用方法

使用firewalld操控防火墙(防火墙的开启、关闭、开机自启等)

开启防火墙

systemctl start firewalld

关闭防火墙

systemctl stop firewalld

设置开机启动防火墙

systemctl enable firewalld.service

设置开机禁用防火墙

systemctl disable firewalld.service

查询防火墙状态

systemctl status firewalld

使用firewall-cmd配置端口

查询防火墙状态

firewall-cmd --state

查看所有已开放的端口

firewall-cmd --zone=public --list-ports

重新加载配置,更新防火墙规则

firewall-cmd --reload

对端口和通道进行配置(修改配置后要重启防火墙)

添加一个端口,并开启协议通道

firewall-cmd --zone=public --add-port=80/tcp --permanent 
## 添加80端口,--zone表示作用域,--add-port是标识添加的端口和访问类型,--permanent表示设置为永久
firewall-cmd --zone=public --add-service=http --permanent
## 开启http通道

移除某个端口

firewall-cmd --zone=public --remove-port=80/tcp --permanent

重启防火墙(修改配置后要重启防火墙)

firewall-cmd --reload

查看某个端口的开通状态

firewall-cmd --zone=public --query-port=80/tcp