GitLab概述 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
使用GitLab可以自己搭建一个类似于GitHub一样的仓库,但是GitLab有更完善的管理界面和权限控制。对于开源项目而言,GitHub 是代码托管的首选。但是从代码的私有性上来看,GitLab 是一个更好的选择。
GitLab架构图:
访问GitLab有两个入口,一个是内置Nginx控制的web入口,另一个是SSH协议的GitLab Shell入口。
GitLab部署
安装GitLab依赖包
1 yum install -y curl wegt openssl-server postfix
安装Git Lab
1 2 3 4 5 6 7 8 9 10 yum install -y https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.0.3-ce.0.el7.x86_64.rpm Thank you for installing GitLab! GitLab was unable to detect a valid hostname for your instance. Please configure a URL for your GitLab instance by setting `external_url` configuration in /etc/gitlab/gitlab.rb file. Then, you can start your GitLab instance by running the following command : sudo gitlab-ctl reconfigure
配置
配置域名
用于web页面访问
1 2 3 4 vim /etc/gitlab/gitlab.rb external_url 'http://study.gitlab.com'
配置邮箱
用于注册时发送验证邮件
忘记密码时用于找回
请求提交合并时,负责人收到邮件通知
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 gitlab_rails['gitlab_email_enabled' ] = true gitlab_rails['gitlab_email_from' ] = 'dengjinjun0805@126.com' gitlab_rails['gitlab_email_display_name' ] = 'GitLab通知' gitlab_rails['smtp_enable' ] = true gitlab_rails['smtp_address' ] = "smtp.126.com" gitlab_rails['smtp_port' ] = 465 gitlab_rails['smtp_user_name' ] = "dengjinjun0805@126.com" gitlab_rails['smtp_password' ] = "EMNOVPYJBDYFSNFN" gitlab_rails['smtp_domain' ] = "126.com" gitlab_rails['smtp_authentication' ] = "login" gitlab_rails['smtp_enable_starttls_auto' ] = true gitlab_rails['smtp_tls' ] = true
启动并测试
启动
1 2 3 gitlab-ctl reconfigure gitlab-ctl stop gitlab-ctl start
验证邮箱
1 2 gitlab-rails c Notify.test_email('498790885@qq.com' ,'主题:Gitlab-test' ,'内容:测试发送邮件' ).deliver_now
web界面
汉化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 wget https://gitlab.com/xhang/gitlab/-/archive/08a51a9db938bb05f9a4c999075d010079e16bad/gitlab-08a51a9db938bb05f9a4c999075d010079e16bad.tar.gz tar -xf gitlab-08a51a9db938bb05f9a4c999075d010079e16bad.tar.gz rpm -qa | grep gitlab cat /VERSION gitlab-ctl stop \cp -r gitlab-08a51a9db938bb05f9a4c999075d010079e16bad/* /opt/gitlab/embedded/service/gitlab-rails/ gitlab-ctl reconfigure gitlab-ctl start
GitLab入门使用 web界面设置密码之后,使用用户名root
与新密码登录,具体操作自行熟悉。
GitLab迁移与备份
手动备份
更改配置
1 2 3 4 5 6 7 8 9 10 11 gitlab_rails['manage_backup_path' ] = true gitlab_rails['backup_path' ] = "/var/opt/gitlab/backups" gitlab_rails['backup_archive_permissions' ] = 0644 gitlab_rails['backup_keep_time' ] = 604800 gitlab-ctl reconfigure
执行备份
1 2 3 4 5 gitlab-rake gitlab:backup:create gitlab-backup create
自动备份
更改配置
编写脚本
1 2 3 4 5 6 7 8 vim /server/scripts/backup-gitlab.sh gitlab-rake gitlab:backup:create tar -zcf /backup/gitlab-conf-$(date +%F).tar.gz /etc/gitlab
写入定时任务
1 2 3 4 crontab -e 00 03 * * * sh /server/scripts/backup-gitlab.sh &>/dev/null
恢复
1 2 3 4 5 6 7 8 9 10 11 12 gitlab-ctl stop puma gitlab-ctl stop sidekip gitlab-rake gitlab:backup:restore BACKUP=备份文件的压缩包名 gitlab-backup restore BACKUP=备份文件的压缩包名 gitlab-ctl restart
GitLab迁移与升级
升级
GitLab升级的理由:
非常吸引人的新功能
安全漏洞和修复bug
标准化和自动化
GitLab升级的步骤:
GitLab的升级必须按照官方指定的升级顺序进行升级,不能够随意越级更新。注意要做好备份和快照。参考网页
迁移
GitLab跨服务器迁移有两种情况
同版本迁移,只需要备份好GitLab数据和配置及密码文件,然后在另一台机器上部署同版本的服务,恢复即可。
跨版本迁移,最好先在原来的机器上跨版本,然后再进行同版本迁移。
GitLab重置密码的方法 1 2 3 4 5 6 # 进入GitLab服务器,命令行操作 gitlab-rails console user = User.where(id:1).first user.password=12345678 user.password.confirmation=12345678 user.save