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

 

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

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

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訪問修改成域名訪問的更改方法:git

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",只執行本命令便可)

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

Gitlab若是是編譯安裝的默認管理員帳號密碼是:admin@local.host|5iveL!fe,若是是 rpm包安裝則管理員帳號密碼是root|5iveL!fe

Gitlab安裝後,http://localhost訪問,首次訪問的時候,若是不知道管理員帳號和密碼,儘管能夠註冊用戶,但註冊的用戶都不是管理員。這個時候,能夠重置管理員的密碼,管理員默認是root。
重置管理員密碼(密碼要是8位)的方法以下:shell

[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,以下:vim

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

 3、Gitlab批量添加帳號api

[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"界面裏找到的,以下:ruby

 訪問腳本中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

====================gitlab啓動失敗,或安裝時卡住====================

在卸載gitlab而後再次安裝執行sudo gitlab-ctl reconfigure的時候每每會出現:ruby_block[supervise_redis_sleep] action run,會一直卡沒法往下進行!
這時候的解決辦法:
1)按ctrl + c 強制結束
2)執行"systemctl restart gitlab-runsvdir" 命令
3)接着再執行"gitlab-ctl reconfigure"

若是機器重啓後,啓動"gitlab-ctl start"失敗,解決辦法:# systemctl restart gitlab-runsvdir # gitlab-ctl reconfigure# gitlab-ctl start

相關文章
相關標籤/搜索