本来地址:git干货系列:(六)公司内部搭建git服务器
博客地址:tengj.top/javascript
由于gitHub
上的项目是公开的,不适合公司内部项目放在上面,而私人的须要收费,这绝非是咱们愿意的。因此找了个跟gitHub
很类似,可是又免费的gitLab
。如今将搭建gitLab
过程记录一下留做参考。java
GitLab是利用 Ruby on Rails
一个开源的版本管理系统,实现一个自托管的Git项目仓库,可经过Web界面进行访问公开的或者私人项目。它拥有与Github相似的功能,可以浏览源代码,管理缺陷和注释。能够管理团队对仓库的访问,它很是易于浏览提交过的版本并提供一个文件历史库。团队成员能够利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片断收集功能能够轻松实现代码复用,便于往后有须要的时候进行查找。 linux
依赖组件:ruby 1.9.3+,MySQL,git,redis, Sidekiq。
最低配置CPU 1G,RAM 1G+swap能够支持100用户。git
首先要肯定ubuntu
上安装而且启动了ssh
服务,而后还要确保linux
系统上的防火墙要关闭,win8
的防火墙能够正常开启SSH
(仿真终端工具备PUTTY,SecureCRT 以及Fterm等)能够google
下载的了.
步骤:
1, 有人说首先要在Virtual Network Editor
作NAT
的端口映射,实际上是不须要的;github
ps -e|grep ssh复制代码
若是结果中只有ssh-agent
,那说明ssh-server
尚未启动,通常ubuntu
是默认安装ssh
的,要是没有安装,能够经过redis
sudo apt-get install openssh-server复制代码
安装ssh服务spring
sudo /etc/init.d/ssh start复制代码
启动ssh服务ubuntu
ubuntn
刚安装时候root
尚未密码,设置一个,使用命令浏览器
sudo passwd复制代码
官方有安装包与脚本下载,官方安装指南。一样GITHUB上有个社区非官方的安装指南。
但这儿里推荐bitnami
下载打包安装版本 bitnami.com/stack/gitla… ,省去不少时间。他们也提供相关WIKI
以ubuntu为演示环境,来安装这个包,切换到root
帐户, 在终端运行:
若是没有权限,先受权帐号: ruby
chmod 777 bitnami-gitlab-8.5.7-0-linux-x64-installer.run复制代码
而后切换root
用户执行:
./bitnami-gitlab-8.5.7-0-linux-x64-installer.run复制代码
执行后就会弹出图形化界面,一步步确认就行,以下图
第一次安装好了就默认启动了gitlab
,若是要手动启动的话有两种办法
1.找到安装好的路径/opt/gitlab-8.5.7-0
须要root
权限执行命令:
sudo ./ctlscript.sh start复制代码
2.也能够查看GUI
管理控制台,在Manage Servers中
选择Start All
启动全部
sudo ./manager-linux-x64.run复制代码
启动后,就能够访问系统页面了,这里先经过ifconfig命令获取当前的ip地址
192.168.153.128
,因而就能够在外面
window
系统浏览器访问
http://192.168.153.128/users/sign_in
使用我以前配置的git
登录,我以前安装的时候配置的管理员帐号是git
,密码12345678,
这里我登录后发现跳转到404
页面,把地址http://192.168.153.128/users/sign_in
后面的users/sign_in
删掉回车就行,就去后界面以下:
若是你是本身一我的玩就直接建立项目便可,由于我这边是给团队使用的,因此须要建立一下用户组,以及添加组成员,配置权限等,下面来介绍这些配置
添加人员或者本身注册的时候须要发邮件激活,因此要先配置服务器,我在bitnami
提供的wiki里面找到了办法,原文以下:
How to configure the email settings of GitLab?
You can configure the SMTP settings during the installation process. If you are using the Virtual Machine or AMI, you can configure it manually. For example, these are the options to configure it using a GMail account:
/opt/bitnami/apps/gitlab/htdocs/config/environments/production.rbconfig.action_mailer.raise_delivery_errors = true config.action_mailer.delivery_method = :smtp config.action_mailer.perform_deliveries = true config.action_mailer.smtp_settings = { :address => "smtp.gmail.com", :port => 587, :domain => "gmail.com", :authentication => :plain, :user_name => "your_account@gmail.com", :,password => "your_password", :enable_starttls_auto => true }复制代码
简单的说就是修改/opt/bitnami/apps/gitlab/htdocs/config/environments/production.rb
文件,里面的内容,address
,domain
,user_name
,password
这几个配置成你本身的邮箱,记得你的邮箱必需要支持smtp
。port
端口我默认也是587,不须要修改。
配置好了邮箱,就要测试一下,咱们在http://192.168.153.128/users/sign_in
首页,注册一个额用户,而后我收到邮件激活,而后就能够登录系统了。
能够看到,非管理员登录右上角就没有Admin Area
功能
让组内成员本身注册帐号激活后,咱们就准备建立小组了,建立小组是为了方便管理,建立项目的时候直接指定小组,这样小组内的成员均可以看到项目
小组建立好了就能够新增一个项目了,这里建立的时候选择edw
这个建立好的小组,而且项目宣称private
私有项目。这样只有小组内的成员能够下载这个项目
这里切换到tengj
用户登录,发现已经有了springmvctouchbaidu
项目
SSH key
,复制咱们本地
\.ssh\id_rsa.pub
的内容黏贴到下面图中指定的便可。
这里模拟tengj
下载远程项目,在这以前我已经用管理员帐号把项目传上去了,如图
指定一个目录存放该项目,执行git clone
命令:
$ git clone git@192.168.153.128:edw/springmvctouchbaidu.git
Cloning into 'springmvctouchbaidu'...
The authenticity of host '192.168.153.128 (192.168.153.128)' can't be established.
ECDSA key fingerprint is SHA256:1SgfW1DLmaZ9m/E82vVtWjBK1AaP+LMW5U4ng8nv6uE.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.153.128' (ECDSA) to the list of known hosts.
remote: 对象计数中: 339, 完成.
remote: 压缩对象中: 100% (242/242), 完成.
remote: Total 339 (delta 68), reused 339 (delta 68)
Receiving objects: 100% (339/339), 12.97 MiB | 14.44 MiB/s, done.
Resolving deltas: 100% (68/68), done.
Checking connectivity... done.复制代码
搞定,下载下来了。
前面文章也说过,通常一个实际项目中master
用来版本发布,通常不在这个分支上开发,因此除了git
管理员用户能够提交代码到master
外,其余组成员只能push
代码到dev
这个分支。
好比我添加tengj
用户的时候选择的是Developer
角色,只要在Protected Branches
中这个勾不够上就好了。这样开发人员就没法push
代码到master
分支上。
下面模拟一下tengj用户提交代码:
ok,花了三天时间终于搞定了,截图仍是蛮累人的哈哈,算是比较详细的记录了我此次安装gitlab
的过程,我的感受比网络上的文章调理清晰多了。一开始查资料快累死了。但愿对你有所帮助。
一直以为本身写的不是技术,而是情怀,一篇篇文章是本身这一路走来的痕迹。靠专业技能的成功是最具可复制性的,但愿个人这条路能让你少走弯路,但愿我能帮你抹去知识的蒙尘,但愿我能帮你理清知识的脉络,但愿将来技术之巅上有你也有我。
更多干货内容,尽在嘟爷java超神学堂(javaLearn),您不扫一下么