设为首页 收藏本站
查看: 1289|回复: 0

[经验分享] 私立gitlab服务器

[复制链接]

尚未签到

发表于 2018-9-19 07:55:45 | 显示全部楼层 |阅读模式
  环境描述:
  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
  出现如下截图,就证明完成启动:
DSC0000.jpg


10,查看启动的服务状态
  `sudo gitlab-ctl status``
  出现以下的run:~~   后面显示还有log,pid就证明启动成功,出现down或者timeout就说明该服务未启动
DSC0001.jpg


11,查看网络端口跟防火墙放行
  如果没有80端口,说明gitlab的nginx服务没有启动,需要重新是gitlab启动
DSC0002.jpg

  实验为了方便验证结果,放行所有端口,等启动完成必须在安全组设置特定放行端口,避免不必要的损失。
DSC0003.jpg


12,访问服务器的网页
  在地址栏输入http://ip
DSC0004.jpg


13,设置root密码,然后重新登录,即可正常访问
  

user:root  
passwd:passwrds
  

DSC0005.jpg


14,设置服务器的域名或者IP,修改gitlab的配置文件
  sudo vim /etc/gitlab/gitlab.rb
DSC0006.jpg


15,重配置gitlab服务
  sudo gitlab-ctl reconfigure
DSC0007.jpg

DSC0008.jpg


16,使用域名访问gitlab服务器
DSC0009.jpg


17,创建一个新用户,并创建项目,添加ssh密钥,在项目里新增成员
DSC00010.jpg

DSC00011.jpg

DSC00012.jpg

  添加ssh密钥
DSC00013.jpg

DSC00014.jpg


18,下载和上传代码文件
DSC00015.jpg

DSC00016.jpg


19,非创建者无法下载源代码报错
DSC00017.jpg


20,报错处理
  将本地的knowhosts删除,重新下载源代码
DSC00018.jpg


21,尝试上传代码
DSC00019.jpg


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


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


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



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-593936-1-1.html 上篇帖子: 为什么要从GitHub迁移到GitLab 下篇帖子: gitlab容器化部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表