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