之前梳理了一篇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