警告
本文最后更新于 2020-09-05,文中内容可能已过时。
记录在公司内部安装 Gitlab 全过程。
安装 Gitlab
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
## 安装必需的依赖项
sudo yum install curl policycoreutils-python openssh-server
## 将 SSH 服务设置成开机自启动
systemctl enable sshd
## 启动 SSH 服务
systemctl start sshd
## 邮件通知
sudo yum install postfix
sudo systemctl start postfix
sudo systemctl enable postfix
## 安装 Gitlab
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce
Thank you for installing GitLab!
...
Complete!
## 调整防火墙
## 要访问GitLab界面,您需要打开端口80和443
sudo systemctl restart firewalld.service
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
## 配置 Gitlab
## 默认是 8080 端口,如果 8080 已被占用,需更改为其它端口,并在防火墙开放对应端口
vim /etc/gitlab/gitlab.rb
## 修改配置文件中的 external_url 'http://192.168.1.135:58080'
## 改完之后执行重置
sudo gitlab-ctl reconfigure
## 重启
sudo gitlab-ctl restart
## 测试
curl 192.168.1.135:58080/gitlab
## 看到以下内容说明安装正确了
<html><body>You are being <a href="http://192.168.1.135:58080/users/sign_in">redirected</a>.</body></html>%
|
管理用户
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
## 获取/修改超级管理员root的密码
## 切换目录
cd /opt/gitlab/bin
sudo gitlab-rails console production
## 进入 gitlab 终端操作
## 在irb(main):001:0> 后面运行
## 查看当前用户
User.all
=> #<ActiveRecord::Relation [#<User id:4 @pc>, #<User id:1 @root>, #<User id:2 @fl>, #<User id:3 @lhg>]>
## 切换用户,使用 id:n 来指定
u=User.where(id:1).first
## 输入密码,第一次只有 root, 后面可以通过 Gitlab 网页进行添加
u.password='******'
u.password_confirmation='******'
## 保存,注意后面一定要添加符号 "!"
u.save!
|
端口转发
在 frps.ini
1
2
3
|
[common]
bind_port = 7000
vhost_http_port = 58080
|
在 frpc.ini
1
2
3
4
5
6
7
8
9
|
[common]
server_addr = *.*.*.*
server_port = 7000
[ssh135_gitlab]
type = http
local_ip = 192.168.1.135
local_port = 58080
custom_domains = *.*.*.* ## 可以通过域名解析到自己的网址,现在先使用 server_addr
|
这样,可以通过打开网页:http://*.*.*.*:58080/ 访问我们的 Gitlab
了。
域名解析
可以在 godday
上面使用 gitlab.wi********fang.com
进行解析 http://...:58080/。则每次只需要访问 <http://gitlab.wi********fang.com:58080/>
远程访问
使用 http
1
|
git clone http://gitlab.wi********fang.com:58080/fl/myctp.git
|
不过这样需要输入密码,可以参考:
修改 .git/config
1
2
3
4
5
6
7
8
9
10
11
|
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = http://你的用户:你的密码@gitlab.wi********fang.com:58080/fl/myctp.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
|
问题: gitlab使用http方式提交代码不输入密码 ?
背景: 假如你创建项目地址为 http://git.ops.test.com.cn/root/puppet.git 。
解决: 如果你已经执行过 git clone http://git.ops.test.com.cn/root/puppet.git
,则可以进入puppet目录,修改 .git/config中url = http://账号:密码@git.ops.test.com.cn/root/puppet.git
,再提交就发现不要输入密码了;或者直接在克隆仓库的时候直接 git clone http://账号:密码@git.ops.test.com.cn/root/puppet.git
,这样下次提交时也不需要输入密码。
使用 ssh
上面虽然可以使用 gitlab
,但是无法直接在外网使用项目地址进行clone。比如
1
2
3
4
5
6
7
|
git clone git@192.168.1.135:fl/myctp.git
Cloning into 'myctp'...
ssh: connect to host 192.168.1.135 port 22: No route to host
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
|
这是因为 192.168.1.135
是内网,无法被外网解析。这时,我们需要使用 ssh
的方式进行操作。
比如,我们已经把 192.168.1.135
的 22 端口通过 tcp 的方式,映射给了 *.*.*.*
的端口号 6135
, 则可以使用
1
2
3
4
5
|
git clone ssh://git@*.*.*.*:6135/fl/myctp.git
Cloning into 'myctp'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
|
参考链接
1.如何在CentOS 7上安装和配置GitLab
2.GitLab 部署及管理员账号初始化