环境描述:
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,报错处理

将本地的kNowhosts删除,重新下载源代码

21,尝试上传代码

22,在网页上查看项目文件

23,查看服务器打开的端口,并在安全组或者防火墙中设置放行端口

感谢

如果对您有帮助,顺手点个赞,我更多动力写更多东西。....注释:踏上运维之路,学习更多知识,以回馈社会。

Ubuntu16.04的gitlab服务器出世的更多相关文章

  1. 解析PyCharm集成GitLab代码仓的问题

    这篇文章主要介绍了PyCharm集成GitLab代码仓的相关知识,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. Git克隆lfs Smudge错误/404从fork合并后克隆时出错

    然后我克隆myProjects/lfsTestRepo,添加一堆文件,包括一些rpms,添加、提交和推送我的更改。然后我进入gitlab,创建一个从myProjects/lfsTestRepo到masterProjects/lftTestRepo的合并请求。现在,当我尝试拉取或重新克隆masterProjects/lfsTestRepo时,它尝试下载的第一个rpm文件出现Smudge错误。如果我用gitlfsinstall--skip-smudge运行它,那么我会得到服务器上不存在一个[404]对象,或者

  3. Gitlab下游管道规则的更改块不起作用

    我试图在下游管道中使用规则块中的更改块:这样做时,不会创建作业。如果我删除更改部分,只需执行以下操作:它工作得很好。我不知道我是否错过了什么。

  4. centos – GitLab和Prometheus失败

    跑尾我有以下错误:我已经运行了命令但我收到的消息是:现在GitLab工作正常但运行尾巴我仍然每隔2秒看到关于Prometheus的上述错误,我想在不破坏我的GitLab安装的情况下修复它.问题是gitlab在pyvenv设置中运行Prometheus,我无法找到它的位置.你可以随时然后运行命令..它应该工作

  5. ubuntu – GitLab Active Directory身份验证:没有结果,也没有身份验证

    我正在尝试使用GitLab设置LDAP身份验证(在VM上运行Ubuntu14.04amd64上的版本7.12.2,Omnibus设置).我编辑了我的gitlab.rb文件,如下所示:这导致可怕的“无法从Ldapmain授权您,因为”凭据无效“.”错误.我试过用户名(在bind_dn变量中):“johnsmith@example.com”(基于用户名的电子邮件),“JohnSmith”(全名)和“j

  6. ubuntu – 将Gitlab和Gitolite服务器移动到另一台机器上

    现在,我在我的ubuntu服务器上运行了gitlab和gitolite.但是,这台服务器速度太慢,我的公司希望将服务器移动到另一台机器上.有没有办法将gitlab和gitolite服务器移动到另一台机器?

  7. Ubuntu16.04的gitlab服务器出世

    2,Gitlab介绍GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。用于项目一个GitLab的项目相当于git的版本库。对任意级别,当有相关事件发生时,GitLab的服务器会执行一个包含描述性JSON数据的HTTP请求。这是自动化连接你的git版本库和GitLab实例到其他的开发工具,比如CI服务器,聊天室,或者部署工具的一个极好方法。在GitLab中合并请求和问题是一个长久讨论的主要部分。

  8. centos7.4+GitLab部署

    GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。5).完成上面的步骤之后就可以使用ssh来连接GitLab,并进行相应的操作了。参考资料:centos7.4+GitLab+Jenkins部署及实现集成记录gitlab修改默认端口centos6.8下部署gitlab服务器并修改默认端口为GitLab帐号添加SSHkeys并连接GitLab

  9. Centos 7搭建Gitlab服务器超详细

    的字样,则表示安装成功5.开启防火墙,安装命令:servicefirewalldstart6.添加http服务到firewalld,pemmanent表示永久生效,若不加--permanent系统下次启动后就会失效。sudofirewall-cmd--permanent--add-service=http7.重启防火墙,安装命令:sudosystemctlreloadfirewalld8.接下来,安装Postfix以发送通知邮件,安装命令:sudoyuminstallpostfix9.postfix服务设

  10. CentOS7.4安装Gitlab10.5.1及汉化

    1、添加gitlab源vi/etc/yum.repos.d/gitlab-ce.repo[gitlab-ce]name=gitlab-cebaseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasevergpgcheck=0enabled=1[gitlab-ce]name=gitlab-cebaseurl=http://m

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部