# 安装指南 > Tip:建议内存至少4G(在虚拟机中用2G内存失败了几次,改为4G马上就安装上了),这也是官网的强烈建议 > 参考: > * [GitLab官方安装指南](https://about.gitlab.com/install/#centos-7) ## 1. 安装并配置必要的依赖 1. 安装sshd ```shell yum install -y curl policycoreutils-python openssh-server #设置sshd服务为开机启动 systemctl enable sshd #启动sshd服务 systemctl start sshd ``` 2. 安装防火墙 *如果已经安装了防火墙并且已经在运行状态,则可直接进行下一步* ```shell yum install -y firewalld systemd #开启防火墙 service firewalld start ``` 3. 添加http/https服务到firewall ```shell #添加http/https服务到firewall #参数pemmanent表示永久生效,若不加--permanent系统下次启动后就会失效 firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https #重启防火墙 systemctl reload firewalld ``` 4. 安装Postfix用来发送通知邮件 ```shell #安装Postfix用来发送通知邮件 yum install postfix #将postfix服务设置成开机自启动 systemctl enable postfix #开启postfix systemctl start postfix ``` > 在安装Postfix期间,可能会出现配置屏幕。选择“Internet Site”并按enter键。使用您的服务器的外部DNS以“mail name”并按enter。如果出现额外的屏幕,继续按enter键接受默认值。 ## 2. 安装gitlab 在这一步中,官网指南是先下载gitlab的yum源,然后`yum install gitlab_gitlab-ee`,但是该yum源国内访问不了。且官网在这一步中说明又不是很详细,所以我参考下面这篇文章,下载 rpm 手动安装。 > 参考: > * https://blog.csdn.net/qq_34129814/article/details/100043914 1. 下载 [清华开源镜像站#gitlab-ce#yum#el7](https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/) > * gitlab-ce 社区版,gitlab-ee 企业版 > > * **EL**是Red Hat **E** nterprise **L** inux(**EL**)的缩写。 > * EL6是Red Hat 6.x,CentOS 6.x和CloudLinux 6.x的下载。 > * EL5是Red Hat 5.x,CentOS 5.x和CloudLinux 5.x的下载。 > * EL7是Red Hat 7.x,CentOS 7.x和CloudLinux 7.x的下载。 > * 下载一个具有汉化版本的gitlab版本(gitlab版本要和汉化版本一致!!!) ```shell #从清华大学的开源镜像站下载rpm包 wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm ``` 2. 安装 ```shell rpm -i gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm ``` 如果下图,则表示安装成功 ![image-20200730062728883](./imgs/image-20200730062728883.png) 3. 修改配置 ```shell vim /etc/gitlab/gitlab.rb #编辑以下内容,指定域名/ip和端口 external_url 'http://10.0.2.15:8090' #在防火墙中开放该端口号 firewall-cmd --permanent --zone=public --add-port=8090/tcp #重启防火墙 systemctl reload firewalld ``` > external_url 域名和ip都可以,但是端口号不能占用 4. 启动 ```shell #重载配置文件 gitlab-ctl reconfigure #重启 gitlab-ctl restart ``` 如下图,表示成功 ![image-20220817143801362](imgs/image-20220817143801362.png) > 1. 在卸载gitlab然后再次安装执行`gitlab-ctl reconfigure`的时候往往会出现: > > ruby_block[supervise_redis_sleep] action run 或者 > > ruby_block[wait for redis service socket] action run > > 一直卡无法往下进行! > > 解决方法:按 ctrl+c 退出,然后执行`systemctl restart gitlab-runsvdir`,再继续执行`gitlab-ctl reconfigure`,如安装过程遇到报错信息,可重复执行`gitlab-ctl reconfigure` > > 2. 如果遇到 “Chef Client failed. 3 resources updated in 03 seconds” 问题 > > 执行 `yum install libsemanage-static libsemanage-devel`,然后执行 `gitlab-ctl reconfigure` **gitlab的常用命令:** ```shell # 启动所有 gitlab 组件 gitlab-ctl start # 停止所有 gitlab 组件 gitlab-ctl stop # 重启所有 gitlab 组件 gitlab-ctl restart # 查看 gitlab 组件服务状态 gitlab-ctl status # 重新加载配置文件 gitlab-ctl reconfigure # 编辑配置文件 vim /etc/gitlab/gitlab.rb # 检查gitlab gitlab-rake gitlab:check SANITIZE=true --trace # 查看日志 gitlab-ctl tail ``` 5. 访问[http://10.0.2.15:8090](http://10.0.2.15:8090) > * 如果没有域名,直接输入服务器ip和指定端口进行访问 > * 初始账户: root 密码: 5iveL!fe > * 第一次登录需要修改密码 ![image-20200731211515954](./imgs/image-20200731211515954.png) > * 第一次访问的时候,页面显示 502,百度了好多解决方法都差不多,也都试了,没啥用。后来放着过了一段时间刷新,竟然好了,也不知道什么原因 ## 3. 汉化 gitlab的汉化有一个单独的项目 https://gitlab.com/xhang/gitlab > 参考: > > * https://www.cnblogs.com/yanjieli/p/10605381.html > * https://gitlab.com/xhang/gitlab/-/wikis/home 1. 克隆汉化补丁 ```shell git clone https://gitlab.com/xhang/gitlab.git ``` 克隆的时候速度很慢很慢,而且还有可能出现: ```shell [root@centos7 ~]# git clone https://gitlab.com/xhang/gitlab.git 正克隆到 'gitlab'... remote: Enumerating objects: 40998, done. remote: Counting objects: 100% (40998/40998), done. remote: Compressing objects: 100% (15116/15116), done. error: RPC failed; result=18, HTTP code = 200 | 266.00 KiB/s fatal: The remote end hung up unexpectedly fatal: 过早的文件结束符(EOF) fatal: index-pack failed ``` 解决方法参考 [Git使用指南#问题总结](../使用指南/Git使用指南#问题总结) > **建议:**先下载 gitlab 项目,然后上传到服务器 2. 查看全部分支版本 ```shell cd gitlab git branch -a ``` 3. 对比版本、生成补丁包 > **!!!注意:**gitlab 版本要和 汉化版本一致 ```shell #设置变量gitlab的版本 gitlab_version=$(cat /opt/gitlab/embedded/service/gitlab-rails/VERSION) #比较汉化标签和原标签,导出 patch 用的 diff 文件 git diff v${gitlab_version} v${gitlab_version}-zh > ../${gitlab_version}-zh.diff ``` 4. 停止gitlab ```shell gitlab-ctl stop ``` 5. 打补丁 ```shell patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < ${gitlab_version}-zh.diff ``` 6. 启动和重新配置 ```shell #启动 gitlab-ctl start #重新配置 gitlab-ctl reconfigure ``` 7. 刷新页面 > 如果汉化中出现问题,请重新安装 GitLab(**注意备份数据**)。 8. 疑似汉化不完整 ![image-20200731213553937](./imgs/image-20200731213553937.png) 解决:在 Settings -> Preferences 的 Localization 中选择“简体中文” 即可。 ## 4. 卸载gitlab 1. 停止 gitlab ```shell gitlab-ctl stop ``` 2. 卸载gitlab ```shell #如果是社区版,则 rpm -e gitlab-ce rpm -e gitlab-ee ``` 3. 杀死gitlab进程 ```shell #查看进程 [root@centos7 ~]# ps -ef|grep gitlab root 1340 1 0 21:25 ? 00:00:00 runsvdir -P /opt/gitlab/service log: ................................................................................................................................................................................................................................................................................................................................runsvdir /opt/gitlab/service: warning: time warp: resetting time stamp. ... root 1348 1344 0 21:25 ? 00:00:00 svlogd /var/log/gitlab/gitaly root 1349 1340 0 21:25 ? 00:00:00 runsv gitlab-workhorse root 1352 1343 0 21:25 ? 00:00:00 svlogd -tt /var/log/gitlab/redis root 1353 1346 0 21:25 ? 00:00:00 svlogd -tt /var/log/gitlab/puma root 1355 1347 0 21:25 ? 00:00:00 svlogd /var/log/gitlab/sidekiq root 1357 1345 0 21:25 ? 00:00:00 svlogd -tt /var/log/gitlab/postgresql root 1362 1351 0 21:25 ? 00:00:00 svlogd -tt /var/log/gitlab/logrotate root 1363 1349 0 21:25 ? 00:00:00 svlogd /var/log/gitlab/gitlab-workhorse root 1368 1350 0 21:25 ? 00:00:00 svlogd -tt /var/log/gitlab/nginx root 1370 1340 0 21:25 ? 00:00:00 runsv gitlab-exporter root 1375 1360 0 21:25 ? 00:00:00 svlogd -tt /var/log/gitlab/node-exporter root 1377 1370 0 21:25 ? 00:00:00 svlogd -tt /var/log/gitlab/gitlab-exporter root 1379 1373 0 21:25 ? 00:00:00 svlogd -tt /var/log/gitlab/alertmanager root 1380 1374 0 21:25 ? 00:00:00 svlogd -tt /var/log/gitlab/postgres-exporter root 1390 1371 0 21:25 ? 00:00:00 svlogd -tt /var/log/gitlab/redis-exporter root 1392 1372 0 21:25 ? 00:00:00 svlogd -tt /var/log/gitlab/prometheus root 1398 1384 0 21:25 ? 00:00:00 svlogd -tt /var/log/gitlab/grafana root 3896 1460 0 22:07 pts/0 00:00:00 grep --color=auto gitlab #杀死第一个守护进程 [root@centos7 ~]# kill -9 1340 #再次查看 [root@centos7 ~]# ps -ef|grep gitlab ``` 4. 删除gitlab文件 ```shell #删除所有包含gitlab的文件及目录 find / -name gitlab|xargs rm -rf #删除gitlab-ctl uninstall时自动在root下备份的配置文件 rm -f /root/gitlab* ``` # 使用指南 先来熟悉几个概念: > 群组:群组允许您管理、协作多个项目。群组的成员可以访问群组下的所有项目。 > 也可以通过创建 子群组来嵌套群组。 > 属于群组的项目以群组名称为前缀。现有项目可以移动到一个群组中。 > > 用户:用户的访问等级有:普通用户、管理员。 > 普通用户可以访问他们的群组和项目。 > 管理员可以访问所有组,项目和用户,并且可以管理此安装中的所有功能 > > 项目:项目可以用于存放文件(仓库),安排计划(议题),并发布文档(wiki), 及其他功能。 > 从模板或导入时为空白项目将启用所有功能,但可以在项目设置中将其禁用。 > 其他Pages模板的信息及安装指南可以在Pages 入门指南中找到. > 提示: 您也可以通过命令行来创建新项目。 显示相关命令 > 主要操作: * 添加用户 * 创建群组 * 将用户添加到群组下,此时可以设置用户在群组中的角色权限:访客、报告者、开发人员、主程序员、所有者,如此一来用户同时也拥有了对该群组下所有项目的角色权限了。 * 在群组下创建项目,这样可以使群组下所有的成员用户立马拥有对该项目的角色权限。 * 创建项目(可以在群组下创建项目,也可单独创建) * 邀请成员:角色权限控制、过期时间 * 邀请群组:最高访问级别控制、过期时间 ## 创建分支 1. Repository -> 分支 -> 创建分支 ![提交合并请求](./imgs/20201016172424.png) 2. 填写分支name,并选择从哪个分支下创建分支 Create from ![提交合并请求](./imgs/20201016172557.png) 3. 在 idea 右下角 checkout 分支即可 ## 合并请求 1. 选择 Repository -> 分支,然后在某次提交上点击"合并请求",进入合并请求表单页面 2. 有2个地方要自定义:Assign 由谁来审批这次合并请求;Target Branch 目标分支,将提交合并到哪个分支上 ![提交合并请求](./imgs/20201016171909.png)