ubuntu16.04搭建gitlab
目录
- ubuntu16.04搭建gitlab
- 一、在虚拟机ubuntu16.04安装gitlab
- 二、配置gitlab
- 三、使用gitlab
- 四、踩坑记录
工作中遇到需要在远端服务器搭建gitlab,耗时4天,踩坑无数,特此开个虚拟机再次搭建一次gitlab并记录供以后参考!
背景:为保证服务器安全,远端服务器在内网,本地只能通过指定外网IP和端口去访问远端服务器
一、在虚拟机ubuntu16.04安装gitlab
1.本地下载ubuntu16.04的gitlab包(2021-06-01)(ubuntu版本最好能和gitlab版本对应)
https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/xenial/gitlab-ce_13.10.5-ce.0_amd64.deb
或者
https://download.csdn.net/download/studyingdda/87581776
2.ssh登录ubuntu,把下载好的gitlab包传到ubuntu
3.安装依赖包,运行命令后选择Internet Site
sudo apt-get install curl openssh-server ca-certificates postfix
4.“System mail name”输入服务器name
5.安装gitlab,运行命令,等待安装完成,安装完成如下图
sudo dpkg -i gitlab-ce_13.10.5-ce.0_amd64.deb
二、配置gitlab
1.配置gitlab ’external_url‘和端口号, ’external_url‘配置成服务器的IP,端口号默认80
sudo vim /etc/gitlab/gitlab.rb
2.使gitlab配置生效,配置成功如下图
sudo gitlab-ctl reconfigure
三、使用gitlab
1.通过配置的IP及端口进入到gitlab页面,对密码进行重置
2.重置密码完毕后进行登录,用户名是root,密码是刚刚重置的密码
3.登录成功之后如下图所示
接下来创建一个项目,创建一个用户,以这个用户使用git实现推拉文件到服务器
创建用户有两种方式:1.root管理员创建 2.个人到此gitlab页面进行注册,然后请求root审批。此处演示第一种。
4.创建用户:姓名:张三;账号:zhangsan;密码:zhangsan;邮箱: zhangsan@163.com
5.创建项目
6.使用张三用户登录
7.配置SSHKeys
8.使用PuTTYgen生成SSHKeys,并增加到gitlab
9.在git配置用户名和邮箱
“git config --global user.name+用户名”
“git config --global user.email+你的邮箱”
10.将项目中“Clone with HTTP”拷贝
11.使用“TortoiseGit”进行Git克隆到本地
12.随意创建一个文件,推送到服务器
gitlab常用命令
重启配置,并启动gitlab服务 sudo gitlab-ctl reconfigure
启动所有gitlab sudo gitlab-ctl start
重新启动GitLab sudo gitlab-ctl restart
停止所有gitlab sudo gitlab-ctl stop
查看服务状态 sudo gitlab-ctl status
查看Gitlab日志 sudo gitlab-ctl tail
修改默认的配置文件 sudo vim /etc/gitlab/gitlab.rb
检查gitlab gitlab-rake gitlab:check SANITIZE=true --trace
四、踩坑记录
踩坑记录:
1.刚开始创建了一个名为“git”的用户,使用这个用户去安装gitlab,在执行’
sudo gitlab-ctl reconfigure
‘发生与’git同名冲突‘类的报错解决方法:删掉名为’git‘的用户,用别的用户再装gitlab
2.删除git用户时需要先卸载gitlab,在网上找了很多卸载gitlab的方法都卸载不干净
解决方法:我从根目录全局搜索gitlab相关的目录及文件全部删除后才算是卸载干净
3.因为我是通过外网IP及9902端口远程ssh登录服务器的,因此在配置gitlab第1步中的IP使用的是服务器的外网IP,不能直接使用内网IP(内网IP我无法访问)
4.在gitlab配置完毕登录页面时遇到使用80端口进去是Apache2的页面
解决方法:Apache2和gitlab的80端口冲突,我修改了Apache的端口号
5.在gitlab配置完毕登录页面时进去是gitlab502错误的页面
解决方法:网上找到很多解释:内存不够和端口冲突等,我排除内存不够的问题,因为远端服务器的外网只开放了很少的端口,因此我猜测是gitlab默认需要很多端口,因此我把所有gitlab运行时的线程在gitlab的配置文件对应找了一遍,把其中涉及到的端口都请服务器端同事开启了,之后又重装了一次gitlab就能够正常访问了。我整理的涉及到的端口我会在下方贴出来:
gitlab涉及到的任务 线程号 sudo netstat -nultp显示端口号 配置文件中涉及到的端口号
alertmanager: (pid 24236) 1s alertmanager: 9093/9094 配置文件中:9093
gitaly: (pid 24270) 0s 配置文件中:8075/9075/9236
gitlab-exporter: (pid 24334) 0s ruby: 9168 配置文件中:9168
gitlab-workhorse: (pid 24336) 0s gitlab-workho: 9229 配置文件中:8080/9229
grafana: (pid 24371) 1s grafana-serve: 3000 配置文件中:25/9090/3000
logrotate: (pid 24491) 0s 配置文件中:
nginx: (pid 24497) 1s nginx: 8060 配置文件中:5050/
node-exporter: (pid 24565) 0s node_exporter: 9100 配置文件中:9100
postgres-exporter: (pid 24571) 0s postgres_expo: 9187 配置文件中:9187
postgresql: (pid 24584) 0s 配置文件中:5432
prometheus: (pid 24586) 0s prometheus: 9090 配置文件中:9229/9090
puma: (pid 24650) 1s 配置文件中:8080
redis: (pid 24658) 0s 配置文件中:6379
redis-exporter: (pid 24664) 1s redis_exporte: 9121 配置文件中:9121
sidekiq: (pid 24674) 0s 配置文件中:8082gitaly: 9236
到此在虚拟机ubuntu16.04部署gitlab及gitlab的基本操作记录完毕。
还有一点需要提醒的是:在虚拟机上的ubuntu服务器只能用运行此虚拟机的主机访问gitlab页面(虚拟机我配置的是NAT模式),同局域网的其他主机没法访问这个虚拟机,但是在实际搭建gitlab服务器时也不会用虚拟机去搭建,因此不会出现此问题。至于为什么虚拟机使用NAT网络时,同局域网别的主机没法访问的问题我也不太清楚,对网络相关的知识欠缺,如果有大佬还请多多指教!