前两天实验室服务器上的 gitlab 感染了挖矿病毒了,跑起来之后 CPU 直接干到 100%。在用入侵检测工具 chkrootkit 检查无异常后,考虑卸载重装。
1. gItlab 的卸载
为了卸载 gitlab,首先要确保相关进程不在运行状态(废话,CPU 都爆表了肯定先把他 kill 掉了)。运行以下命令停止 gitlab 服务。
gitlab-ctl stop
接下来,卸载 gitlab。由于当初 gitlab 不是我安装的,所以我不清楚当初学长安装的是 gitlab-ce 还是 gitlab-ee,所以只能挨个试验一下。
sudo rpm -e gitlab-ce // 找不到 package
sudo rpm -e gitlab-ee // 卸载成功
此时要处理掉残留的运行中的进程,查找一下:
ps -ef | grep gitlab
根据进程号,杀掉所有运行中的 gitlab 相关的进程。
kill -9 进程号PID
这时,再来处理残余文件,删除与 gitlab 相关的文件:
find / -name gitlab | xargs rm -rf
卸载完成后,重启主机。
reboot
重启机器后,gitlab 就已经完全被我们干掉了。接下来,开始重新安装。
2. 安装 gitlab
首先,进入 gitlab 的官网(要梯子),查看不同操作系统下 gitlab 的安装教程。 图片:
这里可以看到,对于不同的操作系统,有不同的安装指南。接下来查看本机的操作系统。
cat /etc/issue
输入以上命令,的确是吐了,这台机子竟然还是上古版本的 CentO 6.10。按道理来讲,在流程上 CentOS 6 和 7 应该都差不多,只是执行的命令上(CentOS 6 不支持 systemctl,可以用 service 代替)会有所出入。于是,点开安装指导,开始安装。
(1)yum 换源
首先,查看 yum 源是否合适。进入到 CentOS-Base.repo 文件中,
vi /etc/yum.repos.d/CentOS-Base.repo
查看 [base] 代码段是否配置了合适的国内源。
[base]
name=CentOS-6.10 - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos-vault/6.10/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-6
如果更改了此文件,则还需要更新 nss。
yum -y update nss
(2)gitlab 的安装
STEP1:在系统防火墙上开启允许ssh和http访问。
yum install -y curl policycoreutils-python openssh-server cronie
lokkit -s http -s ssh
STEP2:安装postfix来支持gitlab发送邮件
yum install -y postfix
service postfix start
chkconfig postfix on
STEP3:安装gitlab
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
EXTERNAL_URL="http://[server:port]" yum -y install gitlab-ee
(3)修改 gitlab 存储数据的位置
在安装 gitlab 时,默认的仓库存储路径在 /var/opt/gitlab/git-data 目录下,仓库存储在子目录 repositories 里面,可以通过修改 /etc/gitlab/gitlab.rb 文件中 git_data_dirs 参数来自定义父目录。
【注:/etc/gitlab/gitlab.rb 是 gitlab 配置的核心文件,所有有关域名、存储都与此相关】
首先,创建 /data/gitlab/git-data 目录作为仓库存储目录。
mkdir /data/gitlab/git-data
进入到核心配置文件中,做出如下修改:
vi /etc/gitlab/gitlab.rb
# 文件里
git_data_dirs({
"default" => {
"path" => "/data/gitlab/git-data"
}
})
重启配置,使其生效。
gitlab-ctl reconfigure
此时,gitlab 就已经搭建好了,接下来,破解 gitlab 企业版。
3. 破解 gitlab 企业版
在这里放一份学长提供的许可证,下载之后按照下文进行替换即可,方便下载:腾讯微云。
(1)使用许可证
用 license_key.pub 文件替换 /opt/gitlab/embedded/service/gitlab-rails/.license_encryption_key.pub。
(2)修改等级
进入许可证配置文件:
vi /opt/gitlab/embedded/service/gitlab-rails/ee/app/models/license.rb
# 在文件里
将
restricted_attr(:plan).presence || STARTER_PLAN
修改为
restricted_attr(:plan).presence || ULTIMATE_PLAN
gitlab-ctl reconfigure # 重启配置
(3)上传许可证
进入到部署好的 gitlab 上传许可证界面(http://[server:port]/admin/license)
(4)重启 gitlab
gitlab-ctl restart
4. 与通过 gitlab4j API 与项目后端对接时的相关配置
(1)创建空白组和空白模板项目
首先先建一个组,名称为:code_template_group(名称可以修改,不收限制),可见性权限为 internal,记录好这个组的 id,填写到项目后端配置文件的 template-group 中。
进入 gitlab 的 admin/application_settings/templates,选择 Custom project templates,选择刚才建立的组。确定后,该组下的所有项目都会自动成为模板项目,可以由后面创建项目时选择。
进入 code_template_group 组内,创建项目,名称为:empty_project(名称可以修改,不收限制),可见性为 internal,勾选 Initialize repository with a README。创建完成后记录下项目 id,填写到2中提到的配置里的 empty-project-id 中。
进入项目设置-repository,选择protected branch,在Allow merge和Allow push里修改角色为Developers+Mainters,以便允许团队成员提交代码。
(2)关闭注册功能
在 Admin Area > settings > general中的Sign-up Restriction 中取消 Sign-up enabled的勾选并保存。
(3)初始化 token
进入 root 的个人设置页面,点击侧边栏 access token 按钮,勾选全部 api 后生成 token(注意不要设置 Expires at 截止日期),记好 token 值,并设置在项目的配置文件(application.yml,或者用 config 服务器对应的服务配置下)。
配置路径为:
gitlab:
config:
empty-project-id: [空白项目模板id]
host-url: http://[server:port]
personal-access-token: [token]
template-group: [模板组的id]
5. 遇到的常见问题
(1)HTTPS 证书无效
简单点,用 http。
(2)报 422 错误
同步本地和服务器时间,或者清除浏览器缓存。
(3)报 502 错误
一般为端口号占用。