Centos下的GitLab的安装汉化和数据备份以及管理员密码重置
前言:
安装版本:gitlab-ce-8.8.5-ce.1.el7.x86_64.rpm
下载地址: https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-8.8.5-ce.1.el7.x86_64.rpm
汉化包:gitlabhq-8.8.5.zh1.tar.gz
下载地址:https://github.com/larryli/gitlabhq.git
安装包和汉化包的版本需要一致
安装:
[root@localhost ~]#ls
gitlab-ce-8.8.5-ce.1.el7.x86_64.rpm
[root@localhost ~]# rpm -ivh gitlab-ce-8.8.5-ce.1.el7.x86_64.rpm #安装
Preparing...################################# [100%]
Updating / installing...
1:gitlab-ce-8.8.5-ce.1.el7 ################################# [100%]
gitlab: Thank you for installing GitLab!
gitlab: To configure and start GitLab, RUN THE FOLLOWING COMMAND:
sudo gitlab-ctl reconfigure #配置并启动gitlab
gitlab: GitLab should be reachable at http://linux-node1 默认的访问地址
gitlab: Otherwise configure GitLab for your system by editing /etc/gitlab/gitlab.rb file #gitlab的配置文件,修改之后需要重新gitlab-ctl reconfigure
gitlab: And running reconfigure again.
gitlab:
gitlab: For a comprehensive list of configuration options please see the Omnibus GitLab readme
gitlab: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
gitlab:
It looks like GitLab has not been configured yet; skipping the upgrade script.
修改配置文件:
[root@localhost ~]#vim /etc/gitlab/gitlab.rb #修改配置文件
external_url '自己的IP地址'
[root@localhost ~]#gitlab-ctl reconfigure #配置并启动gitlab
测试:
再浏览器中输入本机IP地址:
故障:
gitlab本身采用80端口,如安装前服务器有启用80,安装完访问会报错。需更改gitlab的默认端口。
修改vim /etc/gitlab/gitlab.rb:
external_url 'http://localhost:90'
如果就想用80端口,那没问题。如果更改了端口,后边可以自行调整nginx配置文件进行nginx反向代理设置。
这里可以绑定自己的gitlab的域名或者公网、内网IP替换localhost进行公网访问,具体根据自己的实际情况。安全起见,一般会将gitlab部署于内网。具体部署到哪里,请根据自己的实际情况来定。(基于安全原因,这里不建议设置公网IP进行暴露,可以通过nginx设置IP绑定进行return或者其他规则进行IP回避访问。)
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 tail #查看所有日志
gitlab-ctl tail nginx/gitlab_access.log #查看nginx访问日志

第一次登录要求设置root密码
登录成功之后,是这样的

汉化:【如不清楚gitlab版本以及git,请不要操作,否则gitlab瘫痪!建议运维人员或者对gitlab比较熟悉的人操作】
[root@localhost ~]#tar xf gitlabhq-8.8.5.zh1.tar.gz
[root@localhost ~]# cp -r /opt/gitlab/embedded/service/gitlab-rails{,.ori}
[root@localhost ~]#gitlab-ctl stop
ok: down: gitlab-workhorse: 1s, normally up
ok: down: logrotate: 0s, normally up
ok: down: nginx: 0s, normally up
ok: down: postgresql: 1s, normally up
ok: down: redis: 0s, normally up
ok: down: sidekiq: 0s, normally up
ok: down: unicorn: 0s, normally up
[root@localhost ~]#\cp -rf /root/gitlabhq/* /opt/gitlab/embedded/service/gitlab-rails/ # gitlabhq为解压的文件名
cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/log’ with directory ‘/root/gitlabhq/log’
cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/tmp’ with directory ‘/root/gitlabhq/tmp’
错误忽略,因为之前登陆过,设置了root密码
汉化完成效果:

数据迁移:
备份:
手动备份gitlab
gitlab-rake gitlab:backup:create
这里要特别说明,如果 /etc/gitlab/gitlab.rb 配置了参数“backup_path”(例如gitlab_rails['backup_path'] = '/backup'),则备份的目录就是该目录下(/backup/);
如果没有配置参数“backup_path”,则gitlab把备份文件生成到默认目录/var/opt/gitlab/backups
定时自动备份gitlab(本地)
定时备份的思路建立在手动的基础上,通过crontab添加定时计划就可以解决这个问题。
一般添加定时计划可以有2种方式:
1.使用命令crontab -e,将定时任务添加后保存。
2.将定时任务添加到/etc/crontab文件中。
我这里采取第一种,使用crontab -e。
crontab -e
我设计一天备份2次,分别在每天12:00、19:00,故我添加下面的内容,并保存
0 12 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
0 19 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
重启crontab
systemctl restart crond
但是仅仅实现自动备份还是不够,备份如果不能及时清理硬盘的空间很快会不够用,同时也要能够自动清理不需要人工花时间在这一块
自动清理
这一块由于gitlab已经支持,我就走简单的方案,配置gitlab来实现自动清理功能。
vim /etc/gitlab/gitlab.rb
将其中backup_keep_time的配置取消注释,根据需要设置自动清理多少天前的备份,我这里是设置备份保留7天(7*3600*24=604800),保存。
gitlab_rails['backup_keep_time'] = 604800
重新加载gitlab的配置文件
gitlab-ctl reconfigure
恢复数据:
停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

错误:
PG::ConnectionBad: could not connect to server: No such file or directory。上网查了一圈,发现这篇文章的解决方案有点像。遗憾的是,按照文章中的说法,不能解决问题。无奈之下,发现有gitlab-psql命令,运行gitlab-psql help,输出和gitlab-ctl reconfigure的类似:Is the server running locally and accepting connections on Unix domain socket “/var/opt/gitlab/postgresql/.s.PGSQL.5432?这个错误输出就比较清晰:postgresql没有运行。
运行gitlab-ctl start postgresql,再执行gitlab-ctl reconfigure。postgresql的错误顺利解决,接着出现redis的错误:No such file or directory – connect(2) for /var/opt/gitlab/redis/redis.socket。参考postgresql的问题,解决起来也非常轻松:先执行gitlab-ctl start redis,然后再执行gitlab-ctl reconfigure。配置成功
从指定时间戳的备份恢复(backups目录下有多个备份文件时):
sudo gitlab-rake gitlab:backup:restore BACKUP=1500809139
从默认备份恢复(backups目录下只有一个备份文件时):
sudo gitlab-rake gitlab:backup:restore
启动Gitlab
sudo gitlab-ctl start
sudo gitlab-ctl reconfigure
有些情况,恢复后能够正常登陆,但当进入具体项目时出现500错误,查看日志 /srv/gitlab/logs/gitlab-rails/production.log 发现以下错误
|
OpenSSL::Cipher::CipherError (bad decrypt):
app/models/project.rb:456:in `import_url'
app/models/project.rb:486:in `external_import?'
app/models/project.rb:478:in `import?'
app/models/project.rb:494:in `import_in_progress?'
app/controllers/projects_controller.rb:93:in `show'
lib/gitlab/middleware/go.rb:16:in `call'
|
这是gitlab迁移的一个缺陷,不知道后面版本有没有修复,修复方法如下:
1 找到旧gitlab配置的db_key_base,网友说在 /etc/gitlab/gitlab-secrets.json里,然而我们的却没有这个文件,但这并不妨碍我们找到它,在旧gitlab安装目录执行下
|
find ./ -name *.yml | xargs grep "db_key_base"
|
|
find ./ -name *.json | xargs grep "db_key_base"
|
无论是json还是yml,总能搜索它,我们的是在 安装路径/apps/gitlab/htdocs/config/secrets.yml里,将值覆盖新gitlab中 /srv/gitlab/config/gitlab-secrets.json里的db_key_base值。
2 在容器里执行
|
gitlab-rails runner "Project.where.not(import_url: nil).each { |p| p.import_data.destroy if p.import_data }"
|
执行完再试下,500错误没了,项目可以正常访问了!
卸载gitlab
停止gitlab
sudo gitlab-ctl stop
卸载gitlab
sudo rpm -e gitlab-ce
查看gitlab进程

杀掉第一个守护进程
kill -9 4473
再次查看gitlab进程是否存在
删除gitlab文件
find / -name gitlab|xargs rm -rf 删除所有包含gitlab的文件及目录
删除gitlab-ctl uninstall时自动在root下备份的配置文件

通过以上几步就可以彻底卸载gitlab
GitLab忘记管理员密码:
gitlab-rails console production
Loading production environment (Rails 4.1.1)
irb(main):001:0> user = User.where(id:1).first
irb(main):002:0> user.password='66668888'
irb(main):003:0> user.save!
=> true
#成功会反回true
GitLab的常用命令:
维护命令
查看状态
sudo gitlab-ctl status
启停
# 启动Gitlab所有组件
sudo gitlab-ctl start
# 停止Gitlab所有组件
sudo gitlab-ctl stop
# 重启Gitlab所有组件
sudo gitlab-ctl restart
Centos下的GitLab的安装汉化和数据备份以及管理员密码重置的更多相关文章
- Gitlab的安装汉化及问题解决
Gitlab的安装汉化及问题解决(2017/12/14目前版本为10.2.4) 一.前言 Gitlab需要安装的包太TM多了,源码安装能愁死个人,一直出错,后来发现几行命令就装的真是遇到的新大陆一样. ...
- Gitlab一键端的安装汉化及问题解决(2017/12/14目前版本为10.2.4)
Gitlab的安装汉化及问题解决 一.前言 Gitlab需要安装的包太TM多了,源码安装能愁死个人,一直出错,后来发现几行命令就装的真是遇到的新大陆一样... ... 装完之后感觉太简单,加了汉化补丁 ...
- Centos7安装部署搭建gitlab平台、汉化
Centos7安装部署搭建gitlab平台.汉化 安装环境要求:内存不要小于4G,否则后期web界面可能会报错 一.准备工作 1.1 查看系统版本 首先查询系统版本,下载Gitlab的对应版本 [ro ...
- Gitlab部署及汉化操作
一.简介 GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目. GitLab拥有与Github类似的功能 ...
- Sublime Text 2安装汉化破解、插件包安装教程
原文地址: Sublime Text 2安装汉化破解.插件包安装教程_百度经验 http://jingyan.baidu.com/article/ff4116259b057c12e48237b8.ht ...
- kibana安装汉化包
kibana安装汉化包其实很简单!但要找到汉化包可能就很麻烦了.我这里提供了6.2的版本的汉化包!至于能不能在其他版本用,我就没试过了.但6.2的kibana本人亲测.没问题!!!! 下载——解压.这 ...
- JIRA6.3.6 安装汉化破解指南
JIRA6.3.6 安装汉化破解指南 近期试着安装了下JIRA,碰到了些问题.特记录下来,供后来者使用: 1.常规安装 1.1. 下载并安装jira 从官网下载atlassian-jira-6.3.6 ...
- C语言入门-ide的概念介绍及codeblocks编辑器安装汉化
大家好,本章教程就ide(集成开发环境)来说一说. ide就是编译器+编辑器,原理就是在编辑器写代码,然后编辑器会让编译器来编译成二进制可执行文件. 常见的c/c++编译器有mingw64,msvc, ...
- centos 下 Qt Creator 的安装使用
centos 下 Qt Creator 的安装使用 Qt 以其开源,免费,完全面向对象(很容易扩展),允许真正的组件编程以及可移植跨平台等诸多优势得到越来越多的开发人员的青睐.Qt Creator 是 ...
随机推荐
- Storm集群安装与部署
准备 1.三台虚拟机 192.168.1.128 Nimbus 192.168.1.131 Supervisor 192.168.1.132 Supervisor 2.JDK1.8 3.Zookeep ...
- 数据库分表之Mybatis+Mysql实践(含部分关键代码)
2018年01月31日 随着我们系统用户数量的日增,业务数据处于一个爆发前,增长的数据量已经给我们的系统造成了很大的不确定.在上个周末用户量较多,并发较大的情况下,读写频繁的验证码表,数据量 ...
- 苹果系统css样式变化
原因:苹果自带样式覆盖了 参考文章比较详细,就不自己写了,copy了一份~~~ @参考文章 只要在样式里面加一句去掉css去掉iPhone.iPad的默认按钮样式就可以了!~ input[type=& ...
- 华人开创NTP网络授时服务器成功投运世界级超大工程港珠澳大桥
华人开创NTP网络授时服务器成功投运世界级超大工程港珠澳大桥 本文由北京华人开创公司提供请勿转载 2017年12月中旬,我华人开创生产研发的NTP网络授时服务器成功投运世界级超大工程港珠澳大桥,为这个 ...
- python异步加协程获取比特币市场信息
目标 选取几个比特币交易量大的几个交易平台,查看对应的API,获取该市场下货币对的ticker和depth信息.我们从网站上选取4个交易平台:bitfinex.okex.binance.gdax.对应 ...
- 【转】C++易混知识点5:实例讲解Public Protected Private作用域,继承的区别和用意
大学生涯,涉及到类的作用域,继承都是用的public 共有继承,当时也没想那么多,觉得共有继承多方便,多简单,反正没有太多的限制,不管是类的成员或者是基类的成员函数都可以访问.没有深究.其实这里面真是 ...
- SQL查询系列1---
1.查询关系为夫妻,年龄相加大于60的信息 表1 信息表 info id 编号 sex 性别 0-女,1-男 age 年龄 表2 关系表 rel id1 编号1 外键 id2 编号2 外键 r ...
- lua版本的一个状态机
这个状态机http://www.cnblogs.com/flytrace/p/5587033.html的lua版本 -- LUA 有实现枚举值的好办法么 local sc_enum = { -- ev ...
- 高通ASOC中的machine驱动
ASoC被分为Machine.Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machin ...
- Spring源码情操陶冶-PathMatchingResourcePatternResolver路径资源匹配溶解器
本文简单的分析下spring对某个目录下的class资源是如何做到全部的加载 PathMatchingResourcePatternResolver#getResources PathMatching ...