gitlab服务器搭建和使用(二)
两大版本控制软件一个是svn一个git,大家也都不陌生了,也都不做太大介绍了,svn就是集中管理式的需要跟服务器连接,git则是分布式的,不用跟服务器进行连接单机也能进行版本控制也就是单机也能玩。不能说谁替代谁,只能是有的公司用svn,不过一般新公司都比较倾向于用git来进行版本控制。
git的操作下面在记录,这里先将git服务器搭建出来,当然公网的:https://github.com/大家已经不陌生了,开源的源码什么的好多都已经放在这上面了。当然如果我们是公司内部开发的话,还是需要搭建个git服务器的。
很多公司都使用gitlib作为自己公司内部的版本管理服务器,这里我们就用Centos7.2系统来搭建gitlab服务器。内存不能低最好最少4G。
GitLab是一个利用Ruby on Rails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。开源中国代码托管平台git.oschina.net就是基于GitLab项目搭建。
一、搭建gitlab服务器
1.1 yum安装依赖包
# yum install curl openssh-server openssh-clients postfix cronie -y
1.2 下载一键安装rpm包
gitlib的官网:https://about.gitlab.com/
Centos的安装步骤:https://about.gitlab.com/installation/#centos-7
#不要按照安装步骤来做,由于网络原因基本是成功不了了,它也指出了可以直接用它的rpm来安装。
gitlib-ce的rpm包的下载链接:https://packages.gitlab.com/gitlab/gitlab-ce
#注意下载后缀是el7.x86_64.rpm后缀的包(32位是安装不了gitlia的),要是Centos6的话就是:
#https://packages.gitlab.com/gitlab/gitlab-ce/packages/ol/6/gitlab-ce-9.0.12-ce.0.el6.x86_64.rpm #后缀是el6.x86_64.rpm
# wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/ol/7/gitlab-ce-9.1.9-ce.0.el7.x86_64.rpm
#现在变成这个url了:https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-10.6.1-ce.0.el7.x86_64.rpm/download.rpm
1.3 安装gitlib
# rpm -i gitlab-ce-9.0.11-ce.0.el7.x86_64.rpm
#出现上面的界面说明rpm没问题。
# gitlab-ctl reconfigure #配置gitlib,这个时间比较长,等待的过程中注意有没有标红的错误。
#中间没有标红字体到这里就算配置完成了。
1.4 常见错误解决
错误1:
Error executing action `run` on resource 'execute[semodule -i /opt/gitlab/embedded/selinux/rhel/7/gitlab-7.2.0-ssh-keygen.pp]'
解决办法(selinux也要关闭哦):
yum install libsemanage-static libsemanage-devel -y
错误2:
Error executing action `run` on resource 'bash[migrate gitlab-rails database]'
解决办法(gitlab很吃配置,是否是配置过低呢?):
#gitlab-rake gitlab:check #来检查发现问题
链接地址:https://gitlab.com/gitlab-org/gitlab-ce/issues/2052#note_1667899
1.5 查看安装后程序运行情况
# gitlab-ctl status #查看服务运行状态
run: gitaly: (pid 3706) 189s; run: log: (pid 2511) 992s run: gitlab-monitor: (pid 3794) 168s; run: log: (pid 2875) 891s run: gitlab-workhorse: (pid 3734) 183s; run: log: (pid 2558) 985s run: logrotate: (pid 2652) 973s; run: log: (pid 2651) 973s run: nginx: (pid 2616) 979s; run: log: (pid 2615) 979s run: node-exporter: (pid 2762) 942s; run: log: (pid 2761) 942s run: postgres-exporter: (pid 3780) 173s; run: log: (pid 2833) 919s run: postgresql: (pid 2228) 1102s; run: log: (pid 2227) 1102s run: prometheus: (pid 3759) 178s; run: log: (pid 2718) 969s run: redis: (pid 2117) 1113s; run: log: (pid 2116) 1113s run: redis-exporter: (pid 2794) 936s; run: log: (pid 2793) 936s run: sidekiq: (pid 2466) 1000s; run: log: (pid 2465) 1000s run: unicorn: (pid 2410) 1006s; run: log: (pid 2409) 1006s
#相关的软件都被安装在了/opt/gitlab/sv目录,当然gitlab的根目录就是/opt/gitlab了。
#gitlab-ctl restart/stop #这个就是重启服务和关闭服务的操作了。
#gitlab-ctl uninstall #卸载gitlab
# gitlab-ctl tail #查看所有程序的实时信息,如只查看nginx的就是:# gitlab-ctl tail nginx
1.6 登录web页面进行检验(最好是一个全新的机器避免端口冲突就是了)
注:如果端口冲突了,再/etc/gitlab/gitlab.rb把行:external_url 'http://localhost' 修改了。
url:http://IP,如我现在的测试服务器是:192.168.1.121,所以url就是:http://192.168.1.121
二、使用gitlab服务
2.1 用户注册的限制
因为我们这个GitLab是给内部人员使用的,并不是放到公网供大家使用的,所以不能随意的注册,但是默认是注册放开的,所以我们首先做的第一步就是将注册功能收回来,由我们管理员来分配用户以及权限。
因为我们上面哪个root用户是最高管理员用户,所以我们用此用户进行用户注册的限制。
#点击箭头指向位置,进行管理员的设置界面。
#点击上图中右上角的齿轮图标,点击Settings。找到Sign-up Restrictions那里。
#选择完后跑到页面的最下方有个save的保存键,记得点击save保存一下设置。
#然后你退出再去注册用户会发现,注册用户哪个按钮不见了,现在只有一个登录框。
#关于Runners的说明:http://www.jianshu.com/p/2b43151fb92e
2.2 用户和用户组的管理
上面的第二张图,Admin Area那张图,最下面的最右边的位置有个New Group按钮,那是创建组的按钮。
上面的第二张图,Admin Area那张图,最下面的中间位置有个Users选项,有个New User的绿色图标,我们可以点击来创建一个用户。
上面的第二张图,Admin Area那张图,从上往下第二栏,哪个Runners那栏,里面的Users Groups点进去,可以直接对组和用户进行各种操作。
我们先来创建一个用户:
#最下方哪个是不让其创建用户组,就是一个单纯的用户,然后点击最下方的Creare user按钮
#上图是Edit的弹出框,可以来这里修改密码。
#当然用户等登录了再给自己设置头像啥的也可以,然后点击左下角的Save changes按钮。
我们再来创建一个用户组:
#最下方有个Create Group的按钮
#我们将wanghai这个用户添加到ISO组里面。
我们再来创建一个git仓库:
#url产生了,但是有个问题,连接还是localhost的形式呢,应该是gitlab所在的服务器的IP啊。
解决问题:
# vi /etc/gitlab/gitlab.rb #修改一行内容(我服务器是192.168.1.121我就以这个IP为例了)
external_url 'http://localhost' 改为: external_url 'http://192.168.1.121'
#改完上面这个问题就解决了,其实还有个地方要改,不改的话,其他有些按钮点击之后url还是找localhost,哪些现象就不截图了。
# vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
# gitlab-ctl restart #重启下服务,可能要等几秒。再次查看URL就变化了。
2.3 用户登录并进行git操作
上面我们已经创建了一个wanghai的用户,现在我们用这个用户登录一下并把自己的key上传上去,第一次登录进入之后,会让你重置密码,你就把当前的密码设置一下然后再写个新密码,然后会再次登录一下。
当然你也能自己创建git库,如下图:
#上图我将公钥传上去了,下来就是本地进行下git操作看能不能pull和push了。
2.4 将git库同步到本地并提交文件
# cd /opt/
# git clone git@192.168.1.121:IOS/zhifu.git
# ls -l /opt/zhifu/.git/ #查看一下目录是否存在
# cat /opt/zhifu/test1 #创建了一个test1的文件,写了一句话
gitlib 192.168.1.121 is test OK!
注:
但是这时候你会发现你可以创建分支随便嗨,但是你push的时候提示你失败,然后push自己创建的分支也不行。
#从上图可以看出默认的权限太严格了,只有master权限和owner权限才能push,所以改成了第三条部分保护,这样自己创建的分支就可以push到服务器了
#下面就是将文件提交上来了,当然能不能提交上来得看组给你这个用户什么权限了。
注:
gitlab在网页上创建的哪些仓库的存放位置:/var/opt/gitlab/git-data/repositories/
gitlab的设置文件位置:/opt/gitlab/embedded/service/gitlab-rails/config
gitlab通过角色实现代码评估审计:http://www.jianshu.com/p/adb598c52e84
三、gitlab配置邮件通知功能
gitlab搭建完成了,默认可以通过本地的25端口,也就是本地的postfix程序把邮件发送出去,如果我们要使用自己的邮箱发送呢,还是需要配置下的,不然没法使用其他的邮箱服务器发送邮件。
3.1 修改配置文件开通email邮件功能
#vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
email_enabled: true #如果您需要禁用从GitLab发送的电子邮件,则取消注释并将其设置为false(默认值:true) email_from: gitlab@51niux.com #这里默认是gitlab@locahost,将这里改成我们自己的发件人
#vim /opt/gitlab/embedded/service/gitlab-rails/config/initializers/smtp_settings.rb.sample
if Rails.env.production? Rails.application.config.action_mailer.delivery_method = :smtp ActionMailer::Base.delivery_method = :smtp #这里改成smtp ActionMailer::Base.smtp_settings = { address: "smtp.51niux.com", #改成邮箱服务器的域名地址 port: 25, #邮箱端口 user_name: "gitlab@51niux.com", #发件人 password: "51niux.com", #发件人密码 domain: "51niux.com", #邮箱的域 authentication: :login, enable_starttls_auto: true, openssl_verify_mode: 'none' #这里改为none,不开启ssl验证 } end
#vim /opt/gitlab/embedded/service/gitlab-rails/config/environments/production.rb
config.action_mailer.delivery_method = :smtp #开启smtp功能 config.action_mailer.smtp_settings = { #这块smtp设置是要添加的 :address => "smtp.51niux.com", :port => "25", :domain => "51niux.com", :authentication => :plain, :user_name => "gitlab@51niux.com", :password => "51niux.com", :enable_starttls_auto => true } # Defaults to: # # config.action_mailer.sendmail_settings = { # # location: '/usr/sbin/sendmail', # # arguments: '-i -t' # # } config.action_mailer.perform_deliveries = true config.action_mailer.raise_delivery_errors = true config.eager_load = true config.allow_concurrency = false end
3.2 重启服务并测试
#gitlab-ctl restart #重启gitlab服务
#怎么测试呢?创建一个用户或者给用户更改下密码都能触发邮件就可以测试是否能使用企业邮箱服务器发送邮件了。
#测试结果是OK的,gitlab可以使用企业邮箱发送邮件了。