一、准备一台Linux主机
创新互联公司IDC提供业务:重庆服务器托管,成都服务器租用,重庆服务器托管,重庆服务器租用等四川省内主机托管与主机租用业务;数据中心含:双线机房,BGP机房,电信机房,移动机房,联通机房。我用了一台VMware虚拟机,配置如下:
IP:192.168.1.159
1、开SSH
systemctl enable sshd
2、关闭SELINUX
vi /etc/sysconfig/selinux
修改下边红字部分
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
3、安装rz
yum -y install lrzsz
之后上传文件一定要用-be参数(其中-b是--binary用二进制的方式上传,-e是--escape强制escape所有控制字符),否则上传的文件不完整
rz –be
4、安装wget
yum -y install wget
5、更换yum源,用于提速yum
(1)备份yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
(2)下载新的CentOS-Base.repo 到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
清理缓存
yum clean all
重新生成缓存
yum makecache
一、安装GitLab
1、安装必须的组件
yum install -y curl policycoreutils-python openssh-server
2、安装GitLab社区版包库
cd /home
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash
3、安装GitLab社区版
EXTERNAL_URL是访问的URL
EXTERNAL_URL="http://192.168.1.159" yum install -y gitlab-ce
安装完成后:
gitlab-ctl reconfigure #使配置文件生效 但是会初始化除了gitlab.rb之外的所有文件
gitlab-ctl status #查看状态
gitlab-ctl stop #停服务
gitlab-ctl start #起服务
gitlab-ctl tail #查看日志的命令(Gitlab 默认的日志文件存放在/var/log/gitlab 目录下)
相关目录信息
.git/config #版本库特定的配置设置,可用--file修改
~/.gitconfig #用户特定的配置设置,可用--global修改
/var/opt/gitlab/git-data/repositories/root #库默认存储目录
/opt/gitlab #是gitlab的应用代码和相应的依赖程序
/var/opt/gitlab #此目录下是运行gitlab-ctl reconfigure命令编译后的应用数据和配置文件,不需要人为修改配置
/etc/gitlab #此目录下存放了以omnibus-gitlab包安装方式时的配置文件,这里的配置文件才需要管理员手动编译配置
/var/log/gitlab #此目录下存放了gitlab各个组件产生的日志
/var/opt/gitlab/backups/ #备份文件生成的目录
相关文件
/opt/gitlab/embedded/service/gitlab-rails/config #配置文件(修改clone的ip地址)
/etc/gitlab/gitlab.rb #设置相关选项进行配置(gitlab地址就在这)
/var/opt/gitlab/git-data #Git存储库数据(默认
4、运行服务(此步可不做)
gitlab-ctl start
5、登录测试
首次登录需要修改root密码
密码改成:********
账号:root
登录后的页面(这是IE浏览器,显示有问题,需换非IE浏览器访问)
二、汉化GitLab
1、检查安装版本和汉化包版本
安装版本检查
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
汉化包检查
https://gitlab.com/xhang/gitlab
2、汉化过程
如果具有相同版本的汉化标签
(1)克隆汉化版本库
yum install -y git
git clone https://gitlab.com/xhang/gitlab.git
(可以指定版本号git clone https://gitlab.com/xhang/gitlab.git -b v10.0.2-zh)
如果已经克隆过,则进行更新git fetch
(2)查看该汉化补丁的版本
cat gitlab/VERSION
(2)比较汉化标签和原标签,导出 patch 用的 diff 文件。
gitlab-ctl stop
cd /home/gitlab
git diff v11.1.4 v11.1.4-zh > ../11.1.4-zh.diff
生成11.1.4-zh.diff文件
由于官方版本比汉化包少一些文件(assets目录下所有文件)会导致打补丁时出错,所以先拷贝这些文件到官方目录
cd /home/gitlab/app
cp -r assets /opt/gitlab/embedded/service/gitlab-rails/app/
将11.1.4-zh.diff作为补丁更新到gitlab中
yum install patch -y
patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < 11.1.4-zh.diff
或
cd /opt/gitlab/embedded/service/gitlab-rails
git apply /home/11.1.4-zh.diff
强行拷贝过去后git apply可能会出错
用patch打补丁
出现询问时都输入y,注意上图有个失误,导致多了一个rej文件,这个文件一定要重命名掉
cd gitlab-rails/app/assets/javascripts/boards/components/
mv board_delete.js.rej board_delete.js.rej.bak
启动和检查GitLab配置
gitlab-ctl start
gitlab-ctl reconfigure
重新登录192.168.1.159
三、用LDAP接入AD
略
四、增加邮件功能
1、修改配置文件gitlab.rb
vi /etc/gitlab/gitlab.rb
在gitlab.rb文件中添加下面配置:
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.********"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "gitlab"
gitlab_rails['smtp_password'] = "**********"
gitlab_rails['smtp_domain'] = "**********"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = 'gitlab@**********'
user['git_user_email'] = "gitlab@**********"
2、修改完,重新配置
gitlab-ctl reconfigure
查看日志
gitlab-ctl tail
五、修改时区
如果不修改默认时间会造成下图的现象,可能会差几个小时
1、修改配置文件gitlab.rb
vi /etc/gitlab/gitlab.rb
在gitlab.rb文件中
添加下面配置:
gitlab_rails['time_zone'] = 'Asia/Shanghai'
2、修改完,重新配置
gitlab-ctl reconfigure
查看日志
gitlab-ctl tail
六、设置密码输错锁定
1、修改配置文件gitlab.rb
vi /etc/gitlab/gitlab.rb
在gitlab.rb文件中修改下面配置:
gitlab_rails['rack_attack_git_basic_auth'] = {
'enabled' => true,
'ip_whitelist' => ["127.0.0.1"],
'maxretry' => 300,
'findtime' => 60,
'bantime' => 60
}
解释:
# Rack Attack IP banning enabled
'enabled' => true
# Whitelist requests from 127.0.0.1 for web proxies (NGINX/Apache) with incorrect headers
'ip_whitelist' => ["127.0.0.1"]
# Limit the number of Git HTTP authentication attempts per IP
'maxretry' => 300
# Reset the auth attempt counter per IP after 60 seconds
'findtime' => 60
# Ban an IP for one hour (60s) after too many auth attempts
'bantime' => 60
2、修改完,重新配置
gitlab-ctl reconfigure
查看日志
gitlab-ctl tail
七、备份
1、修改配置文件gitlab.rb
vi /etc/gitlab/gitlab.rb
在gitlab.rb文件中
修改为下面配置:
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups" //gitlab备份目录
gitlab_rails['backup_archive_permissions'] = 0644 //生成的备份文件权限
gitlab_rails['backup_keep_time'] = 7776000 //备份保留天数为3个月(即90天,这里是7776000秒)
2、修改完,重新配置
gitlab-ctl reconfigure
查看日志
gitlab-ctl tail
3、手动备份一次
gitlab-rake gitlab:backup:create
cd /var/opt/gitlab/backups目录,查看已有备份文件
4、添加每日备份的计划任务
编辑crontab
vi /etc/crontab
添加下边一行
0 4 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
注意:环境变量CRON=1的作用是如果没有任何错误发生时, 抑制备份脚本的所有进度输出
重启crond服务
systemctl restart crond
重启系统
shutdown –r now
七、恢复测试
GItLab只能还原到与备份文件相同的gitlab版本。
1、克隆一份正式环境的GitLab,改服务器IP为192.168.1.211
略
2、修改GitLab的访问IP地址
vi /etc/gitlab/gitlab.rb
在gitlab.rb文件中
修改为下面配置:
external_url 'http://192.168.1.221'
修改完,重新配置
gitlab-ctl reconfigure
3、随便删除一个项目
4、开始恢复操作
(1)将备份文件权限修改为777,不然可能恢复的时候会出现权限不够,不能解压的问题
cd /var/opt/gitlab/backups
chmod 777 1550089292_2019_02_14_11.1.4_gitlab_backup.tar
(2)执行命令停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-ctl status
(3)执行命令从备份文件中恢复Gitlab
Gitlab的恢复操作会先将当前所有的数据清空,然后再根据备份数据进行恢复
gitlab-rake gitlab:backup:restore BACKUP=备份文件编号
gitlab-rake gitlab:backup:restore BACKUP=1550089292_2019_02_14_11.1.4
输入yes
输入yes
恢复完成
(4)最后再次启动Gitlab
gitlab-ctl start
gitlab-ctl status
5、检查恢复情况
(1)check命令
gitlab-rake gitlab:check SANITIZE=true
全部ok
(2)web页面
之前删除的项目已经恢复了。20GB的数据,200个项目共计恢复用时1小时
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。