搭建gitlab服务
服务器快速搭建gitlab方法
可以参考gitlab中文社区的教材
中文网:https://www.gitlab.com.cn/ins...
文档:https://gitlab.com/gitlab-org...
1.什么是gitlab版本管理
太过官方的解释,随便百度一下一堆。。。我也Google一下。。
GitLab 是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
其实我感觉最简单暴力的理解就是:Gitlab 就是以网站的形式将 Git 服务端可视化;
2.gitlab的安装
其实gitlab可以很复杂也可以很简单:
第一种方法:
说白了其实gitlab就是一个web端,打散后其实也是由(nginx,gitaly,redis,gitlab-workhorse...)等这些东西构成;所以你可以一个个组装一个个编译安装;这样你也可以深入去了解gitlab,同时也可以达到最简化(将不必要的东西去掉)
第二种方法:
rpm 安装。。。官方和社区都有提供。。
如果你是爱折腾的小伙伴,那你可以尝试第一种途径。。途中你会发现各种挑战,各种问题。。然后你一一努力解决,从中获取巨大的成就感。。最后放弃了,还是觉得 用rpm安装算了。。。(我就是这样!!O(∩_∩)O哈哈~)。。。
下面主要是第二种的安装介绍:
我用的是 centos7 的环境
1.安装并配置必要的依赖关系
如果你想使用 Postfix 发送邮件,请在安装过程中根据提示选择 'Internet Site'。 你也可以用 Sendmail 或者 配置一个自定义的 SMTP 服务 并 把它作为一个 SMTP 服务器。
在 CentOS 系统上,下面的命令将会打开系统防火墙 HTTP 和 SSH 的访问。
sudo yum install curl policycoreutils openssh-server openssh-clients sudo systemctl enable sshd sudo systemctl start sshd sudo yum install postfix sudo systemctl enable postfix sudo systemctl start postfix sudo firewall-cmd --permanent --add-service=http sudo systemctl reload firewalld
2. 添加 GitLab 镜像源并安装
curl -sS http://packages.gitlab.com.cn/install/gitlab-ce/script.rpm.sh | sudo bash sudo yum install gitlab-ce
如果你不太习惯使用命令管道的方式安装镜像仓库,你可以在这里找到 完整的安装脚本 或者 选择系统对应的安装包 使用下面的命令手动安装。
curl -LJO https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-XXX.rpm rpm -i gitlab-ce-XXX.rpm
我就是用这种。。。
3. 配置并启动 GitLab
sudo gitlab-ctl reconfigure
4.通过域名可以访问
第一次访问 GitLab,系统会重定向 url 到重置密码的页面,你需要输入初始化管理员账号的密码。 设置完成后,系统会重定向到登录界面,你就可以使用刚才输入的密码登录系统了。
系统默认的管理员账号为 root, 登录系统后,你可以修改管理员账号为自己喜欢的账号
2.端口冲突问题
装好后,你会发现一个问题;gitlab 其实是个web;他自带了个nginx;如果你本身也是一台服务器的话,上面也会装有 apache 或者 nginx 等;那么端口就冲突了;
以上的情况解决方案也有连个:(我就想到这两个)
第一种:
禁用 gitlab 自带的 nginx,使用我们自己安装的 nginx。。。(然而我不太建议小白用这个方法;)
第二种:
更改gitlab自带nginx的默认端口,域名加端口访问就好;当然如果你是有强迫症的朋友(我就是不要输入端口),也不是没有办法。你可以在你的服务器上配置代理服务器;
我用的就是第二种方法(我服务器上用的是nginx):
1.修改 gitlab 配置
官方安装方式下,配置文件是/etc/gitlab/gitlab.rb
- gitlab nginx 端口监听修改 nginx['listen_port'] = 端口号 - gitlab 的域名 external_url '域名'
修改完毕后重置下gitlab:
gitlab-ctrl reconfigure
2.添加 nginx 代理服务器配置
upstream git{ # 域名对应 gitlab配置中的 external_url # 端口对应 gitlab 配置中的 nginx['listen_port'] server 域名:端口; } server{ listen 80; # 此域名是提供给最终用户的访问地址 server_name 域名; location / { # 这个大小的设置非常重要,如果 git 版本库里面有大文件,设置的太小,文件push 会失败,根据情况调整 client_max_body_size 50m; proxy_redirect off; #以下确保 gitlab中项目的 url 是域名而不是 http://git,不可缺少 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 反向代理到 gitlab 内置的 nginx proxy_pass http://git; index index.html index.htm; } }