Gitlab環境快速部署(RPM包方式安裝)

散盡浮華發表於2016-10-21

 

之前梳理了一篇Gitlab的安裝CI持續整合系統環境---部署Gitlab環境完整記錄,但是這是bitnami一鍵安裝的,版本比較老。下面介紹使用rpm包安裝Gitlab,下載地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/,針對centos6和centos7的各版本Gitlab下載。如果下載不下來或者下載巨慢,可以嘗試:清華大學映象

一、下面記錄centos6.9系統下的Gitlab安裝過程(最好找一臺環境比較乾淨的機器):

1)配置系統防火牆,把HTTP和SSH埠開放(關閉iptables或者開放ssh).
[root@gitlab ~]# /etc/init.d/iptables stop 
[root@gitlab ~]# yum install curl openssh-server postfix cronie
[root@gitlab ~]# service postfix start
[root@gitlab ~]# chkconfig postfix on
[root@gitlab ~]# lokkit -s http -s ssh        //如果iptables關閉了,這條命令就無需執行了。這條命令是用來設定防火牆的,開放http和ssh訪問埠

2)下載gitlab的rpm安裝包
已提前下載放到百度雲裡:
http://pan.baidu.com/s/1c2EPRLQ
提前密碼:qys2
[root@gitlab ~]# rpm -ivh gitlab-ce-9.4.5-ce.0.el6.x86_64.rpm --force

安裝後的gitlab預設路徑是/opt/gitlab(程式路徑)、 /var/opt/gitlab(配置檔案路徑)。

3) 接著進行配置
[root@gitlab ~]# gitlab-ctl reconfigure

上面配置命令執行後,如沒有報錯,就說明gitlab配置成功。配置後會生成各應用服務配置檔案,放在/opt/gitlab/etc下,日誌路徑為/var/log/gitlab/

4)然後啟動gitlab
[root@gitlab ~]# gitlab-ctl start
[root@gitlab ~]# gitlab-ctl status

5)最後就可以使用http://localhost順利訪問Gitlab了。整個安裝過程大概10分鐘搞定(rpm包下載比較費時間)

將ip訪問修改為域名訪問的更改方法:

1)首先將/etc/gitlab/gitlab.rb檔案中的192.168.1.24全部替換為gitlab.kevin.com
[root@code-server gitlab]# vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.1.24'
改為:
external_url 'http://gitlab.kevin.com'
 
2)其次將下面兩檔案中的192.168.1.24全部替換為gitlab.kevin.com
/var/opt/gitlab/gitlab-shell/config.yml
/var/opt/gitlab/gitlab-rails/etc/gitlab.yml
 
下面兩檔案都是上面兩檔案的軟連結,修改上面兩個檔案即可
[root@code-server gitlab]# ll /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
lrwxrwxrwx 1 root root 43 Nov  9 18:00 /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml -> /var/opt/gitlab/gitlab-rails/etc/gitlab.yml
[root@code-server gitlab]# ll /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
lrwxrwxrwx 1 root root 43 Nov  9 18:00 /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml -> /var/opt/gitlab/gitlab-rails/etc/gitlab.yml
 
3)然後將下面檔案中的192.168.1.24全部替換為gitlab.kevin.com
/var/opt/gitlab/nginx/conf/gitlab-http.conf
 
4)最後執行"gitlab-ctl reconfigure"命令使之配置生效(注意最好不要執行"gitlab-ctl restart",只執行本命令即可)

二、Gitlba安裝後的幾個細節的配置

Gitlab如果是編譯安裝的預設管理員賬號密碼是:admin@local.host|5iveL!fe,如果是 rpm包安裝則管理員賬號密碼是root|5iveL!fe

Gitlab安裝後,http://localhost訪問,首次訪問的時候,如果不知道管理員賬號和密碼,儘管可以註冊使用者,但註冊的使用者都不是管理員。這個時候,可以重置管理員的密碼,管理員預設是root。
重置管理員密碼(密碼要是8位)的方法如下:

[root@gitlab ~]# gitlab-rails console production
Loading production environment (Rails 4.1.1)
irb(main):001:0> user = User.where(id:1).first
irb(main):002:0> user.password='12345678'
irb(main):003:0> user.save!

這樣,Gitlab管理員的登入許可權就是:root/12345678,管理員的預設郵箱是部署機的本機郵箱,也是從本機發的郵件。這也就是為什麼在開頭要安裝postfix。

修改下面幾處,否則郵件發出後,點選會報錯。下面的192.168.1.24是部署機ip。

[root@gitlab ~]# cd /opt/gitlab/
[root@gitlab gitlab]# cat embedded/service/gitlab-rails/config/gitlab.yml|grep 192.168.1.24
    host: 192.168.1.24
    email_from: gitlab@192.168.1.24

[root@gitlab gitlab]# cd /var/opt/gitlab/
[root@gitlab gitlab]# cat ./gitlab-rails/etc/gitlab.yml|grep 192.168.1.24
    host: 192.168.1.24
    email_from: gitlab@192.168.1.24

最後重啟gitlab-ctl生效
[root@gitlab gitlab]# gitlab-ctl restart

在管理員賬號(root)登入後,先把"註冊"功能關了,這樣就只能在管理員賬號下建立使用者。關閉註冊功能方法
訪問http://192.168.1.24/admin/application_settings,如下:

關閉"Sign-up enabled"功能(特別注意:Sign-in enabled登入功能不要關閉了,看清楚!)

 三、Gitlab批量新增賬號

[root@gitlab ~]# cat gitlab.sh 
#!/bin/bash
#批量建立gitlab使用者
userinfo="userinfo.text"
while read line 
do
    password=`echo $line | awk '{print $1}'`
    mail=`echo $line | awk '{print $2}'`
    username=`echo $line | awk '{print $3}'`
    name=`echo $line | awk '{print $4}'`
    curl -d "reset_password=$password&email=$mail&username=$username&name=$name&private_token=ucUctguWU6-2qrvRnGiB" "http://192.168.1.24/api/v4/users"

done <$userinfo

[root@gitlab ~]# cat userinfo.text
1  zhanjiang.feng@wang.com zhanjiang.feng zhanjiang.feng
1  hongkang.yan@wang.com hongkang.yan hongkang.yan
1  yansong.wang@wang.com yansong.wang yansong.wang
1  bo.xue@wang.com bo.xue bo.xue
1  junlong.li@wang.com junlong.li junlong.li
1  luyu.cao@wang.com luyu.cao luyu.cao
1  xueqing.wang@wang.com xueqing.wang xueqing.wang
1  xu.guo@wang.com xu.guo xu.guo
1  bing.xing@wang.com bing.xing bing.xing
1  mengmeng.li@wang.com linan linan

注意:上面userinfo.text檔案裡的四行分別表示密碼,郵箱,使用者名稱,別名。上面命令執行後,就可以批量建立使用者了!
其中密碼用1表示重置密碼,也就是使用者建立之後,會給使用者郵箱傳送兩封郵件:
-> 一封確認繫結郵箱的郵件,一定要點選這個郵件裡的confirm確認地址(否則登入無效);
-> 另一封是重置使用者密碼的郵件。重置後就可以使用郵箱或使用者名稱登陸了。

 注意上面指令碼中的private_token(這個很重要,否則批量建立不了使用者)的值是從gitlab的管理員賬號登入後的"settings-Account"介面裡找到的,如下:

 訪問指令碼中gitlab的使用者介面地址http://192.168.1.24/api/v4/users,試試能否訪問!

===================Email的smtp設定=======================

上面預設是用部署機本地的postfix發郵件。如果要想使用第三方郵箱發郵件,這就需要修改/var/opt/gitlab/gitlab-rails/etc/unicorn.rb檔案:
[root@gitlab ~]# # cat /etc/gitlab/gitlab.rb|grep -v "^#"|grep -v "^$"
external_url 'http://192.168.1.24'
gitlab_rails['gitlab_email_from'] = 'wangshibohaha@163.com'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "wangshibohaha@163.com"
gitlab_rails['smtp_password'] = "*******"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
user['git_user_email'] = "wangshibohaha@163.com"

由於該檔案會影響gitlab-ctl指令,如果改動了則需要重新執行配置。
注意這個重新配置的動作要在上面細節配置之前,否則上面的配置在reconfigure之後就會被覆蓋到預設狀態!
[root@gitlab ~]#  gitlab-ctl reconfigure

--------------------------------------------------------------------------------------------
上面使用的是163郵箱,下面再貼下公司企業郵箱(用的是Coremail論客郵件系統,注意郵箱的smtp地址要正確)的配置:
[root@gitlab ~]# cat /etc/gitlab/gitlab.rb|grep -v "^#"|grep -v "^$"
external_url 'http://192.168.1.24'
gitlab_rails['gitlab_email_from'] = 'notice@vdholdhaha.com'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.icoremail.net"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "notice@vdholdhaha.com"
gitlab_rails['smtp_password'] = "notice@123"
gitlab_rails['smtp_domain'] = "icoremail.net"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
user['git_user_email'] = "notice@vdholdhaha.com"

gitlab-ctl的常用命令:
//啟動
gitlab-ctl start
//檢視執行狀態
gitlab-ctl status
//停止
gitlab-ctl stop
//檢視錯誤資訊
gitlab-ctl tail
//儲存配置
gitlab-ctl reconfigure

====================修改Gitlab登入介面======================

選擇gitlab新的主題風格,新主題會在左邊欄展示選擇項

經過上面修改後,看下新的登入介面

==================Gitlab整合Ldap(或AD域)==================

如上已經順利部署了Gitlab環境,又在一臺空閒的Windows server 2008上安裝了AD域。
現在需要在Gitlab上整合AD域,實現Gitlab只能使用AD域裡面的賬號登入。配置記錄如下:

AD域的資訊:
主機地址:192.168.10.141
埠:389

配置如下:
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
......
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-EOS # remember to close this block with 'EOS' below
main: # 'main' is the GitLab 'provider ID' of this LDAP server
  label: '哈哈集團-Gitlab登入入口'
  host: '192.168.10.141'
  port: 389
  uid: 'userPrincipalName'
  method: 'plain' # "tls" or "ssl" or "plain"
  allow_username_or_email_login: false
  bind_dn: 'cn=王一,ou=技術運維部,dc=kevin,dc=com'
  password: '9oGlYkgDzhp5k6JZ'
  active_directory: true
  base: 'ou=技術運維部,dc=kevin,dc=com'
  user_filter: ''
EOS

接著執行下面命令,使上面配置生效:
[root@gitlab ~]# gitlab-ctl reconfigure        //這裡最好使用該命令,表示過載配置。不要使用"gitlab-ctl restart"重啟服務,否則可能出現500報錯!

然後執行下面命令,檢查LDAP資訊是否成功同步過來
[root@gitlab ~]# gitlab-rake gitlab:ldap:check
Checking LDAP ...

Server: ldapmain
LDAP authentication... Success
LDAP users with access to your GitLab server (only showing the first 100 results)
  DN: CN=李某某,OU=技術運維部,DC=kevin,DC=com  userPrincipalName: limoumou@kevin.com
  DN: CN=李二,OU=技術運維部,DC=kevin,DC=com   userPrincipalName: lier@kevin.com
  DN: CN=lier1,OU=技術運維部,DC=kevin,DC=com   userPrincipalName: lier1@kevin.com
  DN: CN=test,OU=技術運維部,DC=kevin,DC=com   userPrincipalName: test@kevin.com
  DN: CN=王一,OU=技術運維部,DC=kevin,DC=com  userPrincipalName: wangyi@kevin.com
  DN: CN=張三,OU=技術運維部,DC=kevin,DC=com   userPrincipalName: zhangsan@kevin.com
  DN: CN=張三,OU=網路,OU=技術運維部,DC=kevin,DC=com   userPrincipalName: zhangsan02@kevin.com
  DN: CN=趙四,OU=網路,OU=技術運維部,DC=kevin,DC=com   userPrincipalName: zhaosi@kevin.com

Checking LDAP ... Finished


=========================================================================================
注意:
如上配置中,隨便使用AD域中的一個有讀許可權的賬號和其密碼進行配置就行了,即將其他賬號讀出來!
AD域或Openldap搭建的時候,域名最好用郵箱域名。
uid表示屬性

uid: 'uid'                       //預設配置是這個,如果不改,上面check ldap就不會成功,即不能成功同步ldap賬號資訊。
uid: 'cn'                        //這個表示可以使用cn名稱登入,比如王一,如果cn名稱是英文名(比如test),則還可以使用帶域名形式登入(比如test@kevin.com)
uid: 'Samaccountname'            //這個表示可以使用wangyi或wangyi@kevin.com登入

如果uid配置成上面的cn和Samaccountname,那麼下面的
allow_username_or_email_login: true

label: '哈哈集團-Gitlab登入入口'      該配置表示使用LDAP賬號登入時顯示的介面提示資訊。
==========================================================================================

 

取消Gitlab預設的登入視窗,訪問http://192.168.1.24/admin/application_settings (注意不要勾選下面的"Sign-in enabled"選擇)

===============瀏覽器裡訪問Gitlab出現"Forbidden"問題===============
出現的可能原因:
較多的併發導致的訪問被拒絕, Gitlab使用rack_attack做了併發訪問的限制!

解決辦法:
開啟/etc/gitlab/gitlab.rb檔案,查詢gitlab_rails['rack_attack_git_basic_auth']關鍵詞,取消註釋,
修改ip_whitelist白名單屬性,加入Gitlab部署的IP地址。

修改如下(192.168.1.24):

[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
......
 gitlab_rails['rack_attack_git_basic_auth'] = {
   'enabled' => true,
   'ip_whitelist' => ["127.0.0.1","192.168.1.24"],
   'maxretry' => 10,
   'findtime' => 60,
   'bantime' => 3600
 }

然後過載配置

[root@gitlab ~]# gitlab-ctl reconfigure

最後再在瀏覽器裡訪問gitlab就OK了!

=======================gitlab訪問出現502=========================
Whoops, GitLab is taking too much time to respond.

產生原因:
1)unicorn原8080預設埠被容器中別的程式已經佔用,必須調整為沒用過的
2)gitlab的timeout設定過小,預設為60

解決辦法:
1)關閉gitlab服務
# gitlab-ctl stop
2)選擇一個沒有被系統佔用的埠作為unicorn埠,比如8877埠(lsof -i:8877 確認此埠沒有被佔用)
# vim /etc/gitlab/gitlab.rb
unicorn['port'] = 8877
gitlab_workhorse['auth_backend'] = "http://localhost:8877"
3)重新生成配置
# gitlab-ctl reconfigure
4)重啟gitlab服務
# gitlab-ctl restart

相關文章