环境描述:
ubuntu16.04 LTS
1核cpu,1G内存,20G存储
AWS服务器(免费试用一年)
免费一年云服务器
https://aws.amazon.com
主要参考文件:
https://about.gitlab.com/installation/#ubuntu
理论:
1,前言
如果您是一个后端开发,运维工程师,前端开发等等与代码打打交道的,基本都用过Git工具。然而代码仓库有GitHub(全球最大代码仓库),Krugle,Koders,Codaes,DZone等等,听说微软建立全球最大的代码仓库...不知道现在如何,但是如论如何,我依然想把代码放在自己的服务器上面,毕竟这样能管理所有东西,而且服务器可以任意放自己想放的,主要还是想自己管理。
2,Gitlab介绍
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
用于项目
一个 GitLab 的项目相当于 git 的版本库。 每一个项目都属于一个用户或者一个组的单个命名空间。 如果这个项目属于一个用户,那么这个拥有者对所有可以获取这个项目的人拥有直接管理权;如果这个项目属于一个组,那么该组中用户级别的权限也会起作用。
每一个项目都有一个可视级别,控制着谁可以看到这个项目页面和仓库。 如果一个项目是 私有 的,这个项目的拥有者必须明确授权从而使特定的用户可以访问。 一个 内部 的项目可以被所有登录的人看到,而一个 公开 的项目则是对所有人可见的。 注意,这种控制既包括 git “fetch” 的使用也包括对项目 web 用户界面的访问。
用于钩子
GitLab 在项目和系统级别上都支持钩子程序。 对任意级别,当有相关事件发生时,GitLab 的服务器会执行一个包含描述性 JSON 数据的 HTTP 请求。 这是自动化连接你的 git 版本库和 GitLab 实例到其他的开发工具,比如 CI 服务器,聊天室,或者部署工具的一个极好方法。
用途
在一个 GitLab 项目上一起工作的最简单方法就是赋予协作者对 git 版本库的直接 push 权限。 你可以通过项目设定的 “Members(成员)” 部分向一个项目添加写作者,并且将这个新的协作者与一个访问级别关联(不同的访问级别在 组 中已简单讨论)。 通过赋予一个协作者 “Developer(开发者)” 或者更高的访问级别,这个用户就可以毫无约束地直接向版本库或者向分支进行提交。
另外一个让合作更解耦的方法就是使用合并请求。 它的优点在于让任何能够看到这个项目的协作者在被管控的情况下对这个项目作出贡献。 可以直接访问的协作者能够简单的创建一个分支,向这个分支进行提交,也可以开启一个向 master 或者其他任何一个分支的合并请求。 对版本库没有推送权限的协作者则可以 “fork” 这个版本库(即创建属于自己的这个库的副本),向 那个 副本进行提交,然后从那个副本开启一个到主项目的合并请求。 这个模型使得项目拥有者完全控制着向版本库的提交,以及什么时候允许加入陌生协作者的贡献。
在 GitLab 中合并请求和问题是一个长久讨论的主要部分。 每一个合并请求都允许在提出改变的行进行讨论(它支持一个轻量级的代码审查),也允许对一个总体性话题进行讨论。 两者都可以被分配给用户,或者组织到 milestones(里程碑) 界面。
这个部分主要聚焦于在 GitLab 中与 Git 相关的特性,但是 GitLab 作为一个成熟的系统,它提供了许多其他产品来帮助你协同工作,例如项目 wiki 与系统维护工具。 GitLab 的一个优点在于,服务器设置和运行以后,你将很少需要调整配置文件或通过 SSH 连接服务器;绝大多数的管理和日常使用都可以在浏览器界面中完成。
3,gitlab对我的意义
相对公共云仓库,我更偏爱部署一个属于自己的云仓库来存储代码,麻烦的是在部署自己的服务器,还有成本,比如学习成本,时间成本,资金等等。但是为了能做一个属于自己的云仓库,付出也是一定的。想要收获,必须要拿点东西去换吧?我深信这些是得失之道。意义远不止这些,在部署的过程中,学到的知识,付出的时间精力,收获到的成果,这一过程让我写下这篇文章,记录在运维路上的点滴。
实战:
1,安装必备软件:
sudo apt-get update sudo apt-get install -y curl openssh-server ca-certificates
2,启动邮件通知系统
sudo apt-get install -y postfix service postfix start chkconfig --add postfix
3,更新系统仓库源
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
4,安装gitlab
sudo EXTERNAL_URL="http://gitlab.example.com" apt-get install gitlab-ee
5,启动相关服务
service sshd restart service postfix restart
6,启动运行gitlab
sudo gitlab-ctl reconfigure
7,报错处理
...cannot allocate memory ...
屏幕报红一片:内容意思说你的机器内存不足
8,报错处理
增加虚拟内存:
dd if=/dev/zero of=/var/swap bs=1024 count=2048000 #增加2G左右SWAP mkswap /var/swap #设置交换文件 swapon /var/swap #激活启用交换分区 添加如下内容到/etc/fstab,交换分区每次开机启动自动挂载作为系统内存使用(当系统内存不足的时候) echo '/var/swap swap swap defaults 0 0' >> /etc/fstab
9,再次启动gitlab
sudo gitlab-ctl reconfigure
出现如下截图,就证明完成启动:
10,查看启动的服务状态
`sudo gitlab-ctl status``
出现以下的run:~~ 后面显示还有log,pid就证明启动成功,出现down或者timeout就说明该服务未启动
11,查看网络端口跟防火墙放行
如果没有80端口,说明gitlab的Nginx服务没有启动,需要重新是gitlab启动
实验为了方便验证结果,放行所有端口,等启动完成必须在安全组设置特定放行端口,避免不必要的损失。
12,访问服务器的网页
在地址栏输入http://ip
13,设置root密码,然后重新登录,即可正常访问
user:root passwd:passwrds
14,设置服务器的域名或者IP,修改gitlab的配置文件
sudo vim /etc/gitlab/gitlab.rb
15,重配置gitlab服务
sudo gitlab-ctl reconfigure
16,使用域名访问gitlab服务器
17,创建一个新用户,并创建项目,添加ssh密钥,在项目里新增成员
添加ssh密钥
18,下载和上传代码文件
19,非创建者无法下载源代码报错
20,报错处理
21,尝试上传代码
22,在网页上查看项目文件
23,查看服务器打开的端口,并在安全组或者防火墙中设置放行端口
感谢
如果对您有帮助,顺手点个赞,我更多动力写更多东西。....注释:踏上运维之路,学习更多知识,以回馈社会。
原文链接:https://www.f2er.com/ubuntu/349273.html