赞
踩
参考文章:centos7部署gitlab - 星尘yuan - 博客园
- GitLab是利用Ruby on Rails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。
- 与Github类似,GitLab能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。
- 它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
- 本篇教程将教你如何安装部署及使用GitLab。
- GitLab是由GitLabInc.开发,使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能。
- GitLab由乌克兰程序员DmitriyZaporozhets和ValerySizov开发,它使用Ruby语言写成。后来,一些部分用Go语言重写。
- Git:是一种版本控制系统,是一个命令,是一种工具。
- Gitlib:是用于实现Git功能的开发库。
- Github:是一个基于Git实现的在线代码托管仓库,包含一个网站界面,向互联网开放。
- GitLab:是一个基于Git实现的在线代码仓库托管软件,你可以用gitlab自己搭建一个类似于Github一样的系统,一般用于在企业、学校等内部网络搭建git私服。
- Nginx:静态web服务器。
- gitlab-shell:用于处理Git命令和修改authorized keys列表。
- gitlab-workhorse: 轻量级的反向代理服务器。
- logrotate:日志文件管理工具。
- postgresql:数据库。
- redis:缓存数据库。
- sidekiq:用于在后台执行队列任务(异步执行)。
- unicorn: An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。
GitHub:
是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名GitHubGitLab:
GitLab拥有与GitHub类似的功能,能够浏览源代码,管理缺陷和注释,可以管理团队对仓库的访问,GitHub如果使用私有仓库,是需要付费的,GitLab可以在上面搭建私人的免费仓库
首先安装Git,参考:centos 7 安装 git 2.38.0
下载地址: gitlab-ce-14.10.5-ce.0.el7.x86_64.rpm
- 1) 下载
- wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.10.5-ce.0.el7.x86_64.rpm
-
- 2) 安装依赖
- yum -y install policycoreutils openssh-server openssh-clients postfix policycoreutils-python
-
- 3) 开始rpm包安装
- rpm -ivh gitlab-ce-14.10.5-ce.0.el7.x86_64.rpm
vim /etc/yum.repos.d/gitlab.repo
- [gitlab-ce]
- name=gitlab-ce
- baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
- Repo_gpgcheck=0
- Enabled=1
- gpgcheck=0
- Gpgkey=https://packages.gitlab.com/gpg.keyyum clean all && yum makecache
-
- yum -y install gitlab-ce ===>最新版(会报错)
- yum -y install gitlab-ce-13.6.1 ===>指定版本
- yum -y install gitlab-ce --nogpgcheck ===>不检查安装
其它配置参考官网: Omnibus GitLab 日志 | 极狐GitLab
- vi /etc/gitlab/gitlab.rb
- external_url 'http://192.168.109.128:9090' # ===>这里一定要加上http://
在
/etc/gitlab/gitlab.rb
文件中,有许多用于各种类型日志的log_directory
键。取消注释并更新要放置在其他地方的所有日志的值:
- # For example:
- gitlab_rails['log_directory'] = "/var/log/gitlab/gitlab-rails"
- puma['log_directory'] = "/var/log/gitlab/puma"
- registry['log_directory'] = "/var/log/gitlab/registry"
- ...
在安装gitlab后,未添加邮件提供功能(比如,添加一个用户,就给他发邮件提醒),需要配置发邮件的 smtp 服务器配置。发信系统用的默认的postfix,smtp是默认开启的,两个都启用了,两个都不会工作。
此处使用个人的qq邮箱配置 smtp。 也就是发邮件通知时,发件人邮箱地址是这个 qq邮箱。配置如下:
在
/etc/gitlab/gitlab.rb
中添加以下配置信息,并执行gitlab-ctl reconfigure
命令。
这里以QQ exmail (腾讯企业邮箱)为例
其它邮箱配置参考:SMTP 配置 | 极狐GitLab
- gitlab_rails['smtp_enable'] = true
- gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
- gitlab_rails['smtp_port'] = 465
- gitlab_rails['smtp_user_name'] = "xxxx@xx.com"
- gitlab_rails['smtp_password'] = "password"
- gitlab_rails['smtp_authentication'] = "login"
- gitlab_rails['smtp_enable_starttls_auto'] = true
- gitlab_rails['smtp_tls'] = true
- gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'
- gitlab_rails['smtp_domain'] = "exmail.qq.com"
-
- # 示例
- gitlab_rails['smtp_enable'] = true
- gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
- gitlab_rails['smtp_port'] = 465
- gitlab_rails['smtp_user_name'] = "fiend@sintech.cn"
- gitlab_rails['smtp_password'] = "123qwe"
- gitlab_rails['smtp_authentication'] = "login"
- gitlab_rails['smtp_enable_starttls_auto'] = true
- gitlab_rails['smtp_tls'] = true
- gitlab_rails['gitlab_email_from'] = 'fiend@sintech.cn'
- gitlab_rails['smtp_domain'] = "exmail.qq.com"
- gitlab-ctl reconfigure
- gitlab-ctl restart
测试邮件发信功能
gitlab-rails console
进入控制台后,输入
- Notify.test_email('收件人邮箱', '邮件标题', '邮件正文').deliver_now
- # 例如:
- Notify.test_email('opp123@qq.com', '邮件标题', '邮件正文').deliver_now
- # 开启,关闭,重启: gitlab组件
- gitlab-ctl {start|stop|restart|status}
- gitlab-ctl start
- gitlab-ctl stop
- gitlab-ctl restart
- gitlab-ctl status
-
- # 重载配置文件(重新编译gitlab的配置)
- gitlab-ctl reconfigure
-
- # 验证配置文件
- gitlab-ctl show-config
-
- # 检查gitlab
- gitlab-rake gitlab:check SANITIZE=true --trace
-
- # 查看日志
- gitlab-ctl tail
- gitlab-ctl tail nginx/gitlab_access.log
- gitlab-ctl tail nginx/gitlab_error.log
-
- # 常用目录
- 日志地址:/var/log/gitlab/ # 对应各服务的打印日志
- 服务地址:/var/opt/gitlab/ # 对应各服务的主目录
如果没有域名,直接输入服务器ip和指定端口进行访问,密码在一个自动生成的文件 /etc/gitlab/initial_root_password 中(密码不会含空格),且会在 24 小时后自动被删除
- # 创建组--->创建用户-->添加User到Group中并授权---> |
- # 配置SSH(右上角个人-settings-SSH Keys)--->往项目中添加成员---> |
- # 将本地文件推送到Gitlab--->
-
- # 将app01项目克隆下来
- git clone git@192.168.1.112:java/app01.git
-
- # 初始化配置
- git config --global user.name "hgzero"
- git config --global user.email "hgzero@qq.com"
-
- # 推送到gitlab
- git add .
- git commit -m "first edition"
- git push origin master
ssh-keygen -t rsa -C 'xxx@xxx.com'
然后一路回车(-C 参数是邮箱地址)
打开
~/.ssh/id_rsa.pub文件
(~表示用户目录,windows就是C:\Users\Administrator),
复制其中的内容
打开gitlab,
找到Profile Settings–>SSH Keys—>Add SSH Key,
并把上一步中复制的内容粘贴到Key所对应的文本框,
在Title对应的文本框中给这个sshkey设置一个名字,
点击Add key按钮
在GitLab的主页中新建一个Project
添加ssh key导入步骤2中生成的密钥文件内容:
ssh key添加完成:
- [root@node2 ~]# vi /etc/gitlab/gitlab.rb
- # 备份保存的位置,这里是默认位置,可修改成指定的位置
- gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
-
- # 设置备份保存的时间,超过此时间的日志将会被新覆盖
- gitlab_rails['backup_keep_time'] = 604800 # 这是默认设置,保存7天
-
- # 如果自定义了备份保存位置,则要修改备份目录的权限,比如:
- [root@node2 ~]# chown -R git.git /data/backup/gitlab
-
- # 重读配置文件
- [root@node2 ~]# gitlab-ctl reconfigure
-
- # 重启gitlab
- [root@node2 ~]# gitlab-ctl restart
-
- # 可以将此命令写入crontab,以实现定时备份
- [root@node2 ~]# /usr/bin/gitlab-rake gitlab:backup:create
-
- 设置定时任务
- [root@node2 ~]# crontab -e
- #每天凌晨2点定时创建备份
- 0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create
-
- # 备份时间的识别
- # 备份后的文件类似这样的形式:1494170842_gitlab_backup.tar,
- # 可以根据前面的时间戳确认备份生成的时间
- date -d @1494170842
- 2017年 05月 07日 星期日 11:27:22 EDT
- # 停止数据写入服务
- gitlab-ctl stop unicorn
- gitlab-ctl stop sidekiq
-
- # 进行恢复
- # 下面的时间戳就是刚刚备份的文件前面的时间戳
- gitlab-rake gitlab:backup:restore BACKUP=1494170842
-
- # 重启
- gitlab-ctl restart
-
- 服务器修改过ssh端口的坑(需要修改配置ssh端口)
- # 如修改了ssh端口,则需在gitlab中配置ssh地址
- # gitlab会在前面加上协议头和端口号"ssh://git@gitlab.domain.com:55725/huangdc/test.git"
-
- vim /etc/gitlab/gitlab.rb
- gitlab_rails['gitlab_shell_ssh_port'] = 55725
- #使配置生效
- gitlab-ctl reconfigure
- #重新启动GitLab
- gitlab-ctl restart
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。