环境描述:
ubuntu16.04 LTS
1核CPU,1G内存,20G存储
AWS服务器(免费试用一年)前端
免费一年云服务器
https://aws.amazon.comnginx
主要参考文件:
https://about.gitlab.com/installation/#ubuntugit
若是您是一个后端开发,运维工程师,前端开发等等与代码打打交道的,基本都用过Git工具。然而代码仓库有GitHub(全球最大代码仓库),Krugle,Koders,Codaes,DZone等等,据说微软创建全球最大的代码仓库...不知道如今如何,可是如论如何,我依然想把代码放在本身的服务器上面,毕竟这样能管理全部东西,并且服务器能够任意放本身想放的,主要仍是想本身管理。web
GitLab 是一个用于仓库管理系统的开源项目,使用Git做为代码管理工具,并在此基础上搭建起来的web服务。ubuntu
一个 GitLab 的项目至关于 git 的版本库。 每个项目都属于一个用户或者一个组的单个命名空间。 若是这个项目属于一个用户,那么这个拥有者对全部能够获取这个项目的人拥有直接管理权;若是这个项目属于一个组,那么该组中用户级别的权限也会起做用。vim
每个项目都有一个可视级别,控制着谁能够看到这个项目页面和仓库。 若是一个项目是 私有 的,这个项目的拥有者必须明确受权从而使特定的用户能够访问。 一个 内部 的项目能够被全部登陆的人看到,而一个 公开 的项目则是对全部人可见的。 注意,这种控制既包括 git “fetch” 的使用也包括对项目 web 用户界面的访问。后端
GitLab 在项目和系统级别上都支持钩子程序。 对任意级别,当有相关事件发生时,GitLab 的服务器会执行一个包含描述性 JSON 数据的 HTTP 请求。 这是自动化链接你的 git 版本库和 GitLab 实例到其余的开发工具,好比 CI 服务器,聊天室,或者部署工具的一个极好方法。浏览器
在一个 GitLab 项目上一块儿工做的最简单方法就是赋予协做者对 git 版本库的直接 push 权限。 你能够经过项目设定的 “Members(成员)” 部分向一个项目添加写做者,而且将这个新的协做者与一个访问级别关联(不一样的访问级别在 组 中已简单讨论)。 经过赋予一个协做者 “Developer(开发者)” 或者更高的访问级别,这个用户就能够毫无约束地直接向版本库或者向分支进行提交。安全
另一个让合做更解耦的方法就是使用合并请求。 它的优势在于让任何可以看到这个项目的协做者在被管控的状况下对这个项目做出贡献。 能够直接访问的协做者可以简单的建立一个分支,向这个分支进行提交,也能够开启一个向 master 或者其余任何一个分支的合并请求。 对版本库没有推送权限的协做者则能够 “fork” 这个版本库(即建立属于本身的这个库的副本),向 那个 副本进行提交,而后从那个副本开启一个到主项目的合并请求。 这个模型使得项目拥有者彻底控制着向版本库的提交,以及何时容许加入陌生协做者的贡献。bash
在 GitLab 中合并请求和问题是一个长久讨论的主要部分。 每个合并请求都容许在提出改变的行进行讨论(它支持一个轻量级的代码审查),也容许对一个整体性话题进行讨论。 二者均可以被分配给用户,或者组织到 milestones(里程碑) 界面。
这个部分主要聚焦于在 GitLab 中与 Git 相关的特性,可是 GitLab 做为一个成熟的系统,它提供了许多其余产品来帮助你协同工做,例如项目 wiki 与系统维护工具。 GitLab 的一个优势在于,服务器设置和运行之后,你将不多须要调整配置文件或经过 SSH 链接服务器;绝大多数的管理和平常使用均可以在浏览器界面中完成。
相对公共云仓库,我更偏心部署一个属于本身的云仓库来存储代码,麻烦的是在部署本身的服务器,还有成本,好比学习成本,时间成本,资金等等。可是为了能作一个属于本身的云仓库,付出也是必定的。想要收获,必需要拿点东西去换吧?我深信这些是得失之道。意义远不止这些,在部署的过程当中,学到的知识,付出的时间精力,收获到的成果,这一过程让我写下这篇文章,记录在运维路上的点滴。
sudo apt-get update sudo apt-get install -y curl openssh-server ca-certificates
sudo apt-get install -y postfix service postfix start chkconfig --add postfix
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
sudo EXTERNAL_URL="http://gitlab.example.com" apt-get install gitlab-ee
service sshd restart service postfix restart
sudo gitlab-ctl reconfigure
...cannot allocate memory ...
屏幕报红一片:内容意思说你的机器内存不足
增长虚拟内存:
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
sudo gitlab-ctl reconfigure
出现以下截图,就证实完成启动:
`sudo gitlab-ctl status``
出现如下的run:~~ 后面显示还有log,pid就证实启动成功,出现down或者timeout就说明该服务未启动
若是没有80端口,说明gitlab的nginx服务没有启动,须要从新是gitlab启动
实验为了方便验证结果,放行全部端口,等启动完成必须在安全组设置特定放行端口,避免没必要要的损失。
在地址栏输入http://ip
user:root passwd:passwrds
sudo vim /etc/gitlab/gitlab.rb
sudo gitlab-ctl reconfigure
添加ssh密钥
将本地的knowhosts删除,从新下载源代码
若是对您有帮助,顺手点个赞,我更多动力写更多东西。....注释:踏上运维之路,学习更多知识,以回馈社会。