1. Gitlab简介
官网:https://about.gitlab.com/
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。GitLab和GitHub一样属于第三方基于Git开发的作品,免费且开源(基于MIT协议),与Github类似,可以注册用户,任意提交你的代码,添加SSHKey等等。不同的是,GitLab是可以部署到自己的服务器上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,简单来说可把GitLab看作个人版的GitHub。
2. Gitlab安装(yum安装)
2.1 安装相关依赖
yum -y install policycoreutils openssh-server openssh-clients postfifix
2.2 设置sshd为开机启动
注意:此步骤可以跳过,显而易见ssh服务都是自启的
systemctl enable sshd
2.3 设置postfifix开机自启,并启动,postfifix支持gitlab发信功能
systemctl enable postfix.service && systemctl start postfix.service
2.4. 开放ssh以及http服务,重载防火墙
说明:如果关闭防火墙就不需要做以上配置
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
2.5 下载gitlab包,并安装
cd /root/pkg
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-13.7.8-ce.0.el7.x86_64.rpm
rpm -ivh gitlab-ce-13.7.8-ce.0.el7.x86_64.rpm
或者
cat << EOF > /etc/yum.repos.d/gitlab-ce.repo
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
gpgcheck=0
enabled=1
EOF
yum makecache #更新yum源
yum -y install gitlab-ce #安装最新版本的gitlab
yum list gitlab-ce --showduplicates | sort -r #查看仓库中所有gitlab版本
yum -y intsall gitlab-ce-12.3.5-ce.0.el7 #安装指定版本的gitlab
2.6 修改gitlab配置
1)目录结构
/opt/gitlab 主目录
/etc/gitlab 配置文件目录
/var/log/gitlab 日志目录
2)修改gitlab配置文件
vim /etc/gitlab/gitlab.rb
#gitlab基本配置:
#外部访问url(并非必须配置;经过编译后,自动将这个配置编译到nginx配置,nginx就无需配置了)
external_url 'http://10.99.200.110:8888'
nginx['listen_port'] = 8088
3)配置域名(若上述配置文件/etc/gitlab/gitlab.rb已经修改的话可跳过)
vim /var/opt/gitlab/nginx/conf/gitlab-http.conf(如果服务没有reconfigure过,是没有此配置文件的)
外网访问的端口,如果服务器已经有服务器占用了80,那么这里可以改成其它
listen *:8088;
server_name gitlab.test.domain.com;
set $http_host_with_default "gitlab.test.domain.com:8088"
补充说明:因为编译gitlab的配置 /etc/gitlab/gitlab.rb 时会重新生成这个自定义nginx 配置,所以只要 gitlab 的配置配得好,上面的nginx其实不需要自定义的。
2.7 重载配置及启动gitlab
gitlab-ctl reconfigure
gitlab-ctl restart
相关命令
gitlab-ctl restart #重新启动gitLab
gitlab-ctl start #启动全部服务
gitlab-ctl restart #重启全部服务
gitlab-ctl stop #停止全部服务
gitlab-ctl restart nginx #重启单个服务
gitlab-ctl status #查看全部组件的状态
gitlab-ctl show-config #验证配置文件
gitlab-ctl uninstall #删除gitlab(保留数据)
gitlab-ctl cleanse #删除所有数据,重新开始
gitlab-ctl tail <svc_name> #查看服务的日志
gitlab-ctl tail #查看所有日志
gitlab-ctl tail nginx/gitlab_access.log #查看nginx访问日志
gitlab-rake gitlab:check SANITIZE=true --trace #检查gitlab
gitlab-rails console production #进入控制台 ,可以修改root 的密码
2.8 把端口添加到防火墙
说明:如果关闭防火墙就不需要做以上配置
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --reload
3. Gitlab安装(docker版安装)
3.1 docker安装
docker安装参考
3.2 gitlab安装
docker search gitlab-ce #查找镜像
docker pull gitlab/gitlab-ce #拉取镜像
mkdir -p /home/GitLab/{config,data,log} #创建相关目录
chmod -R 755 /home/GitLab/{config,data,log} #权限
docker run -itd -h 192.168.16.119 -p 443:443 -p 80:80 -p 222:22 --name GitLab --restart always -v /home/GitLab/config:/etc/gitlab -v /home/GitLab/log:/var/log/gitlab -v /home/GitLab/data:/var/opt/gitlab gitlab/gitlab-ce #启动容器
参数说明:
-d:后台运行
-p:将容器内部端口向外映射
–name:命名容器名称
-v:将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录
配置通yum安装中的配置一致,此处不再赘述,配置文件已经持久化都本地了。
3.3 备份脚本
编写备份脚本
#!/bin/bash
case $1 in
start)
docker exec GitLab gitlab-rake gitlab:backup:create;;
esac
编写定时任务
echo '00 03 * * 6 /home/GitLab/gitlab_data_backup.sh start' >> /var/spool/cton/root
4. 登录主页
第一次访问GitLab,需要耐心等待,可能会由于服务未完全起来,而出现502;系统会重定向页面到重置密码页面,你需要输入初始化管理员账号的密码,管理员的用户名为root,初始密码为5iveL!fe(初始化密码在日志中获取即可)。重置密码后,新密码即为刚输入的密码。
重置密码
登录页面
登录进去后的页面
5. 注意事项以及异常故障排查
- 默认安装登录需要重置root密码。可以自己单独设置一个复杂密码后登录。
- gitlab本身采用80端口,如安装前服务器有启用80,安装完访问会报错。需更改gitlab的默认端口。修改/etc/gitlab/gitlab.rb配置文件中的external_url ‘http://localhost:8088’ 配置项。
- 如果就想用80端口,那没问题。如果更改了端口,后边可以自行调整nginx配置文件进行nginx反向代理设置。
- 这里可以绑定自己的gitlab的域名或者公网、内网IP替换localhost进行公网访问,具体根据自己的实际情况。安全起见,一般会将gitlab部署于内网。具体部署到哪里,请根据自己的实际情况来定。(基于安全原因,这里不建议设置公网IP进行暴露,可以通过nginx设置IP绑定进行return或者其他规则进行IP回避访问。)本站测试gitlab地址域名为:gitlab.test.domain.com。
- unicorn本身采用8080端口,如果你那里没有8080使用,可以后边不用修改了。如安装前服务器有启用8080,安装完访问会报错。需更改unicorn的默认端口:修改/etc/gitlab/gitlab.rb配置文件中的unicorn[‘listen’] = ‘127.0.0.1’ unicorn[‘port’] = 3000 配置项。
- 每次重新配置,都需要执行sudo gitlab-ctl reconfigure 使之生效。
- 日志位置:/var/log/gitlab 可以进去查看访问日志以及报错日志等,供访问查看以及异常排查。
- 若gitlab-ctl reconfigure报错。
不妨试试这条命令,然后再次执行gitlab-ctl reconfigure
cat /etc/sysctl.conf /etc/sysctl.d/*.conf | sysctl -e -p -
- 浏览器访问的时候,时不时的会报502错误,需要增加服务器虚拟内存
dd if=/dev/zero of=/var/swap bs=1024 count=2048000 #增加2G左右SWAP
mkswap /var/swap #设置交换文件
swapon /var/swap #激活启用交换分区
echo "/var/swap swap swap defaults 0 0" >> /etc/fstab #加入开机自启
6. Gitlab代码托管服务器使用(添加组、创建用户、创建项目)
6.1 创建项目组和项目
创建项目组
创建项目
6.2 创建账号和授权
创建账号
账户创建后,修改密码
将用户添加到项目中授权
6.3 创建一个新的仓库
git clone http://10.99.200.110:8888/test/deam-test.git
cd deam-test
touch README.mdgit add README.md
git commit -m "add README"
git push -u origin master
6.4 关联本地的项目到gitlab
cd existing_folder #existing_folder是已有的目录
git init
git remote add origin http://10.99.200.110:8888/test/web_deam.git
git add .
git commit -m "Initial commit"
git push -u origin master