快速安裝配置 GitLab 並漢化
一、GitLab簡介
GitHub是2008年由Ruby on Rails編寫而成,與業界聞名的Github類似;但要將程式碼上傳到GitHub上面,而且將專案設為私有還要收費。GitLab 是一個用於倉庫管理系統的開源專案,使用Git作為程式碼管理工具,可通過Web介面進行訪問公開的或者私人專案,非常適合在團隊內部使用。
在gitlab中有三個版本,分別是CE(社群版)、EE(企業版)、OM(RPM包完整版,裡面包括nginx、redis等其它軟體,比較大)。這裡的編譯安裝版,是指CE版的原始碼安裝
官網https://docs.gitlab.com/
這裡呢建議大家使用rpm安裝。
參考文章:快速安裝 GitLab 並漢化 - 簡書 http://www.jianshu.com/p/7a0d6917e009?mType=Group
Larry Li / GitLab 中文社群版 · GitLab https://gitlab.com/larryli/gitlab
1.1 Gitlab提供的功能
1. 程式碼託管服務
2. 訪問許可權控制
3. 問題跟蹤,bug的記錄和討論
4. 程式碼審查,可以檢視、評論程式碼
5. 社群版基於 MIT License開源完全免費
1.2 Gitlab(Github)和Git區別
Github和Git是兩回事。
Git是版本控制系統,Github是線上的基於Git的程式碼託管服務。
1.3 Github PK Sourceforge
為什麼現在Github這麼火,以至於世界頂級公司和專案的原始碼很多都託管在Github上
Why?
1. 顏值高
2. 簡潔大方
2011年,Github已經取代Sourceforge,成為最活躍的程式碼交流社群。這意味著在Open SourceCommunity(開源社群),Git取代了SVN已經成為事實。
1.3.1 Github介面
1.3.2 Sourceforge介面
1.4 搭建私有Git服務的優勢
公司的專案,因為商業層面的原因,需要把程式碼託管到自有的伺服器上,並且伺服器很有可能是放在企業內網中,不對公網開放。
出於安全性的考慮,暫時沒有使用國內的Git服務平臺的計劃。
GitHub和BitBucket,GitLab,由於服務商是在國外,受地域的影響,因此在網路訪問上會有延遲。
現有的服務商,對於免費的套餐都有一定的限制,比如GitHub只允許建立免費的開源repository,不允許建立私有的倉庫。BitBucket允許建立無限制的私有專案,不過對於專案中參與的開發人員是有人數限制的。當團隊中開發者規模達到一定數量後,需要付費購買相應的套餐。
二、Gitlab安裝
2.1 環境配置
硬體:
redhat-7.x系列_x86_64
Mem建議至少2G
軟體:
gitlab-ce.x86_64 0:8.8.0-ce
git-2.11.0
ruby2.1(至少是2.1)
server |
client |
192.168.201.148 |
192.168.201.130(作為測試端) |
本次採用Omnibus 安裝方式
2.2 gitlab環境要求
#系統層
Ubuntu
Debian
CentOS
Red Hat Enterprise Linux (please use the CentOSpackages and instructions)
Scientific Linux (please use the CentOSpackages and instructions)
Oracle Linux (please use the CentOS packagesand instructions)
不支援win
#Ruby versions
GitLab需要Ruby(MRI)2.3。支援低於2.3(2.1,2.2)的Ruby版本將停止與GitLab 8.13
#硬體要求
必要的硬碟驅動器空間很大程度上取決於您要儲存在GitLab中的存檔的大小,但是根據經驗,您應該至少擁有與所有存檔組合相同的可用空間。
如果你希望在將來考慮使用LVM來安裝硬碟驅動器空間方面具有靈活性,那麼您可以在需要時新增更多的硬碟驅動器。
除本地硬碟驅動器外,你還可以安裝支援網路檔案系統(NFS)協議的卷。此卷可能位於檔案伺服器,網路連線儲存(NAS)裝置,儲存區域網路(SAN)或Amazon Web Services(AWS)彈性塊儲存(EBS)捲上。
如果你有足夠的RAM記憶體和最近的CPU,則GitLab的速度主要受硬碟搜尋時間的限制。快速驅動(7200 RPM或更高)或固態硬碟(SSD)將提高GitLab的響應速度
#CPU
1核心的CPU,基本上可以滿足需求,大概支撐100個左右的使用者,不過在執行GitLab網站的同時,還需要執行多個worker以及後臺job,顯得有點捉襟見肘了。
兩核心的CPU是推薦的配置,大概能支撐500個使用者.
4核心的CPU能支撐 2,000 個使用者.
8核心的CPU能支撐 5,000 個使用者.
16核心的CPU能支撐 10,000 個使用者.
32核心的CPU能支撐 20,000 個使用者.
64核心的CPU能支援多達 40,000 個使用者.
#Memory
你需要至少4GB的可定址記憶體(RAM交換)來安裝和使用GitLab!作業系統和任何其他正在執行的應用程式也將使用記憶體,因此請記住,在執行GitLab之前,您至少需要4GB的可用空間。使用更少的記憶體GitLab將在重新配置執行期間給出奇怪的錯誤,並在使用過程中發生500個錯誤.
1GBRAM + 3GB of swap is the absolute minimum but we strongly adviseagainst this amount of memory. See the unicorn worker section belowfor more advice.
2GBRAM + 2GB swap supports up to 100 users but it will be very slow
4GBRAM isthe recommended memory size for all installations and supportsup to 100 users
8GBRAM supports up to 1,000 users
16GBRAM supports up to 2,000 users
32GBRAM supports up to 4,000 users
64GBRAM supports up to 8,000 users
128GBRAM supports up to 16,000 users
256GBRAM supports up to 32,000 users
建議伺服器上至少有2GB的交換,即使您目前擁有足夠的可用RAM。如果可用的記憶體更改,交換將有助於減少錯誤發生的機會。
#Unicorn Workers(程式數)
可以增加獨角獸工人的數量,這通常有助於減少應用程式的響應時間,並增加處理並行請求的能力.
對於大多數情況,我們建議使用:CPU核心1 =獨角獸工人。所以對於一個有2個核心的機器,3個獨角獸工人是理想的。
對於所有擁有2GB及以上的機器,我們建議至少三名獨角獸工人。如果您有1GB機器,我們建議只配置兩個Unicorn工作人員以防止過度的交換.
#Database
PostgreSQL
MySQL/MariaDB
強烈推薦使用PostgreSQL而不是MySQL/ MariaDB,因為GitLab的所有功能都不能與MySQL/ MariaDB一起使用。例如,MySQL沒有正確的功能來以有效的方式支援巢狀組.
執行資料庫的伺服器應至少有5-10 GB的可用儲存空間,儘管具體要求取決於GitLab安裝的大小
#PostgreSQL要求
從GitLab 9.0起,PostgreSQL 9.2或更新版本是必需的,不支援早期版本。
#Redis and Sidekiq
Redis儲存所有使用者會話和後臺任務佇列。Redis的儲存要求最低,每個使用者大約25kB。
Sidekiq使用多執行緒程式處理後臺作業。這個過程從整個Rails堆疊(200MB)開始,但是由於記憶體洩漏,它可以隨著時間的推移而增長。在非常活躍的伺服器(10,000個活躍使用者)上,Sidekiq程式可以使用1GB的記憶體。
#Prometheus and its exporters
從Omnibus GitLab 9.0開始,預設情況下,Prometheus及其相關出口商啟用,可以輕鬆,深入地監控GitLab。這些程式將使用大約200MB的記憶體,具有預設設定。這個還可以監控k8s
#Node exporter
節點匯出器允許您測量各種機器資源,如記憶體,磁碟和CPU利用率。預設埠9100
#Redis exporter
Redis出口商允許您測量各種Redis指標。
#Postgres exporter
Postgres匯出器允許您測量各種PostgreSQL度量。
#GitLab monitor exporter
GitLab監視器匯出器允許您測量各種GitLab指標。
#Supported web browsers
支援Firefox,Chrome /Chromium,Safari和Microsoft瀏覽器(Microsoft Edge和Internet Explorer 11)的當前和之前的主要版本。
2.3 安裝
1、關閉SELinux
#下面的命令實現永久關閉SELinux
[root@git ~]# sed -i's/^SELINUX=.*/#&/;s/^SELINUXTYPE=.*/#&/;/SELINUX=.*/aSELINUX=disabled' /etc/sysconfig/selinux
#下面的命令實現臨時關閉SELinux
[root@git ~]# setenforce 0
setenforce: SELinux is disabled
#永久修改下主機名,需要重啟系統之後生效
Redhat6中修改
[root@git ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=git.server.com #修改成你自己的主機名
Redhat7中修改
[root@noede1 ~]# vi /etc/hostname
gitlab.server.com
#永久修改
[root@git ~]#hostnamectl set-hostname gitlab.server.com
#新增域名
[root@git ~]#cat /etc/hosts
192.168.201.131 gitlab.server.com
2、關閉firewall
#臨時關閉
[root@git yum.repos.d]# iptables -F
或者
[root@git gitlab_pack]# systemctl stopfirewalld.service
#永久關閉,需要下次重啟系統之後生效
[root@git gitlab_pack]# systemctl disablefirewalld.service
Removed symlink/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink/etc/systemd/system/basic.target.wants/firewalld.service.
#線上開啟防火牆
[root@gitlab ~]# firewall-cmd --permanent--add-service=http
success
[root@gitlab ~]# firewall-cmd --permanent--add-service=https
Success
[root@gitlab ~]# firewall-cmd --reload
success
#重新載入配置
[root@gitlab ~]#systemctl reload firewalld
3、同步時間
[root@git yum.repos.d]# ntpdate time.nist.gov
10 Apr 11:00:04 ntpdate[40122]: step timeserver 216.229.0.179 offset 53747.856066 sec
4、配置gitlab-ce yum源
[root@git yum.repos.d]# cat gitlab.repo
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key
註解:
如果想要在centos6系列上安裝,只需把el7修改成el6
5、Gitlab安裝方式
Gitlab兩種安裝方式
編譯安裝
優點:可定製性強。資料庫既可以選擇MySQL,也可以選擇PostgreSQL;伺服器既可以選擇Apache,也可以選擇Nginx。
缺點:國外的源不穩定,被牆時,依賴軟體包難以下載。配置流程繁瑣、複雜,容易出現各種各樣的問題。依賴關係多,不容易管理,解除安裝GitLab相對麻煩。
rpm包安裝
優點:安裝過程簡單,安裝速度快。採用rpm包安裝方式,安裝的軟體包便於管理。
缺點:資料庫預設採用PostgreSQL,伺服器預設採用Nginx,不容易定製。
gitlab安裝
1,下載
https://about.gitlab.com/installation/
2,安裝
#官方地址
https://about.gitlab.com/downloads/#centos7
#如果想檢視rpm中內容,預設安裝的位置
[root@gitlab gitlab_pack]# rpm2cpiogitlab-ce-8.8.0-ce.0.el6.x86_64.rpm | cpio -ivd
[root@git yum.repos.d]# yum install curlopenssh-server openssh-clients postfix -y
[root@git yum.repos.d]# yum install gitlab-ce-8.8.0-y
#這裡為了節省時間,直接rpm安裝
[root@git gitlab_pack]# rpm -ivhgitlab-ce-8.8.0-ce.0.el6.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:gitlab-ce-8.8.0-ce.0.el6 ################################# [100%]
gitlab: Thank you for installing GitLab!
gitlab: To configure and start GitLab, RUN THEFOLLOWING COMMAND:
sudo gitlab-ctl reconfigure
gitlab: GitLab should be reachable athttp://localhost
gitlab: Otherwise configure GitLab for yoursystem by editing /etc/gitlab/gitlab.rb file
gitlab: And running reconfigure again.
gitlab:
gitlab: For a comprehensive list ofconfiguration options please see the Omnibus GitLab readme
gitlab:https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
gitlab:
It looks like GitLab has not been configuredyet; skipping the upgrade script.
至此gitlab安裝成功
注意:
rpm 安裝Gitlab的預設位置在/opt下
6、修改下配置檔案
#修改url,供外部訪問
[root@gitlab ~]# vi /etc/gitlab/gitlab.rb
external_url'http://gitlab.server.com'
external_url 修改成自己的ip或者域名
#修改配置檔案之後,需要重新是配置檔案生效下,初始化下
[root@gitlab ~]#gitlab-ctl reconfigure #這裡會花費一定的時間(1-10min),如果這裡記憶體小,將會花費大量時間
Recipe: gitlab::gitlab-rails
*execute[clear the gitlab-rails cache] action run
-execute /opt/gitlab/bin/gitlab-rake cache:clear
*execute[clear the gitlab-rails cache] action run
-execute /opt/gitlab/bin/gitlab-rake cache:clear
Recipe: gitlab::unicorn
*service[unicorn] action restart
-restart service service[unicorn]
Recipe: gitlab::redis
*ruby_block[reload redis svlogd configuration] action create
-execute the ruby block reload redis svlogd configuration
Recipe: gitlab::postgresql
*ruby_block[reload postgresql svlogd configuration] action create
-execute the ruby block reload postgresql svlogd configuration
Recipe: gitlab::unicorn
*ruby_block[reload unicorn svlogd configuration] action create
-execute the ruby block reload unicorn svlogd configuration
Recipe: gitlab::sidekiq
*ruby_block[reload sidekiq svlogd configuration] action create
-execute the ruby block reload sidekiq svlogd configuration
Recipe: gitlab::gitlab-workhorse
*service[gitlab-workhorse] action restart
-restart service service[gitlab-workhorse]
*ruby_block[reload gitlab-workhorse svlogd configuration] action create
-execute the ruby block reload gitlab-workhorse svlogd configuration
Recipe: gitlab::gitlab-workhorse
*service[gitlab-workhorse] action restart
-restart service service[gitlab-workhorse]
*ruby_block[reload gitlab-workhorse svlogd configuration] action create
-execute the ruby block reload gitlab-workhorse svlogd configuration
Recipe: gitlab::nginx
*ruby_block[reload nginx svlogd configuration] action create
-execute the ruby block reload nginx svlogd configuration
Recipe: gitlab::logrotate
*ruby_block[reload logrotate svlogd configuration] action create
-execute the ruby block reload logrotate svlogd configuration
Running handlers:
Running handlers complete
Chef Client finished, 222/309 resources updatedin 02 minutes 50 seconds
gitlab Reconfigured!#如果在此期間沒有出現error,證明成功
7、啟動Gitlab服務
[root@gitlab ~]# gitlab-ctl start
ok: down:gitaly: 0s, normally up
ok: down:gitlab-monitor: 1s, normally up
ok: down: gitlab-workhorse: 0s, normally up
ok: down: logrotate: 0s, normally up
ok: down: nginx: 0s, normally up
ok: down:node-exporter: 0s, normally up
ok: down:postgres-exporter: 1s, normally up
ok: down: postgresql: 0s, normally up
ok: down:prometheus: 1s, normally up
ok: down: redis: 0s, normally up
ok: down:redis-exporter: 0s, normally up
ok: down: sidekiq: 0s, normally up
ok: down: unicorn: 1s, normally up
註解:
綠色部分是9中新新增的
ü gitlab-workhorse這個“工作馬”,就是gitlab-Git-http-server(GitlabV8.0出現,V8.2名稱變更為Gitlab-workhorse)
ü sidekiq多執行緒啟動
ü unicorn是ruby的http server,可以通過http://localhost:8080埠訪問, 預設埠是8080
ü nginx作為方向代理,代理到unicorn,nginx預設埠是80
ü postgresql作為資料庫,預設埠是5432
ü redis作為一個佇列(NoSql),用於儲存使用者session和任務,任務包括新建倉庫、傳送郵件等等,預設埠是6379
ü logrotate切割日誌
ü prometheus監控,預設埠9090
ü gitlab-monitor預設埠9168
注:
(可選)如果系統資源不足,可以通過以下命令關閉Sidekiq來釋放一部分記憶體
[root@gitlab ~]# gitlab-ctl stop sidekiq
ok: down: sidekiq: 0s, normally up
7.1 RPM安裝模式下的啟動、停止、重啟
#初次配置服務
# gitlab-ctlreconfigure
#啟動服務
# gitlab-ctl start
#停止服務
# gitlab-ctl stop
#重啟服務
# gitlab-ctl restart
#狀態
#gitlab-ctl status
#監控
#gitlab-ctl tailunicorn 監控unicorn日誌
#gitlab-ctl tail
8、登入
訪問地址http://ip
由於第一次登陸,需要設定密碼
登入
登入之後的介面
Gitlab8的介面
Gitlab9版本
9、解除安裝
重新安裝清理
1,解除安裝
[root@git Gitlab-cn]# rpm -e gitlab-ce
2,刪除檔案
[root@git Gitlab-cn]#rm -rf /etc/gitlab/*/var/log/gitlab/ /var/opt/gitlab/ /opt/gitlab/
2.4 漢化
#檢視版本
[root@git .ssh]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
9.1.2
#8版本下載漢化包並漢化
[root@git hanhua]# git clonehttps://gitlab.com/larryli/gitlab.git Gitlab-cn && cd Gitlab-cn
#備份/opt/gitlab/embedded/service目錄下的gitlab-rails目錄,該目錄下的內容主要是web應用部分
#備份
[root@git Gitlab-cn]#\cp -rf/opt/gitlab/embedded/service/gitlab-rails{,.ori}
#關閉gitlab這個服務
[root@git Gitlab-cn]#gitlab-ctl stop
#開始漢化
[root@git gitlab_pack]# \cp -rf Gitlab-cn/*/opt/gitlab/embedded/service/gitlab-rails/
測試是否漢化成功
[root@git ~]# gitlab-ctl start
ok: run: gitlab-workhorse: (pid 1407) 263s
ok: run: logrotate: (pid 1403) 263s
ok: run: nginx: (pid 1404) 263s
ok: run: postgresql: (pid 1405) 263s
ok: run: redis: (pid 1402) 263s
ok: run: sidekiq: (pid 1400) 263s
ok: run: unicorn: (pid 1401) 263s
登入
http://192.168.201.131/users/sign_in
#9版本漢化
[root@gitlab ~]#gitclone https://gitlab.com/xhang/gitlab.git
Cloning into 'gitlab'...
remote: Counting objects: 496150, done.
remote: Compressing objects: 100%(103590/103590), done.
remote: Total 496150 (delta 387041), reused495906 (delta 386824)Receiving objects: 100% (496150/496150), 220.14 MiB | 2
Resolving deltas: 100% (387041/387041), done.
Checking out files: 100% (9254/9254), done
#更新包
[root@gitlab ~]# cd gitlab/
[root@gitlab [9-1-stable-zh ≡]# git fetch
#生成補丁,進入到gitlab目錄下
[root@gitlab gitlab]# git diff v9.1.2 v9.1.2-zh> ../9.1.2-zh.diff
#打補丁
[root@gitlab gitlab]# patch -d/opt/gitlab/embedded/service/gitlab-rails -p1 < ../9.1.2-zh.diff
2.5 Gitlab命令使用
gitlab-ctl command (subcommand)
Service Management Commands |
|
start |
啟動所有服務 |
stop |
關閉所有服務 |
restart |
重啟所有服務 |
status |
檢視所有服務狀態 |
tail |
檢視日誌資訊 |
service-list |
列舉所有啟動服務 |
graceful-kill |
平穩停止一個服務 |
例子:
#啟動所有服務
[root@gitlab ~]# gitlab-ctl start
#啟動單獨一個服務
[root@gitlab ~]# gitlab-ctl start nginx
#檢視日誌,檢視所有日誌
[root@gitlab ~]# gitlab-ctl tail
#檢視具體一個日誌,類似tail -f
[root@gitlab ~]# gitlab-ctl tail nginx
help |
幫助 |
reconfigure |
修改配置檔案之後,需要重新載入下 |
show-config |
檢視所有服務配置檔案資訊 |
uninstall |
解除安裝這個軟體 |
cleanse |
刪除gitlab資料,重新白手起家 |
例子:
#顯示所有服務配置檔案
[root@gitlab ~]#gitlab-ctl show-config
#解除安裝gitlab
[root@gitlab ~]#gitlab-ctl uninstall
DatabaseCommands(慎重使用)
Database Commands |
|
pg-upgrade |
更新postgresql版本 |
revert-pg-upgrade |
還遠先前的(離現在正在使用靠近的版本)一個資料庫版本 |
例子:
#升級資料庫
[root@gitlab ~]# gitlab-ctl pg-upgrade
Checking for an omnibus managed postgresql: OK
Checking if we already upgraded: OK
The latest version 9.6.1 is already running,nothing to do
#降級資料庫版本
[root@gitlab ~]# gitlab-ctl revert-pg-upgrade
Toggling deploy page:cp/opt/gitlab/embedded/service/gitlab-rails/public/deploy.html/opt/gitlab/embedded/service/gitlab-rails/public/index.html
Toggling deploy page: OK
Toggling services:ok: down: gitaly: 129s,normally up
ok: down: gitlab-monitor: 128s, normally up
ok: down: logrotate: 127s, normally up
ok: down: node-exporter: 127s, normally up
ok: down: postgres-exporter: 126s, normally up
ok: down: prometheus: 125s, normally up
ok: down: redis-exporter: 125s, normally up
ok: down: sidekiq: 123s, normally up
Toggling services: OK
Checking if we need to downgrade: NOT OK
/var/opt/gitlab/postgresql/data.9.2.18 does notexist, cannot revert data
Will proceed with reverting the running programversion only, unless you interrupt
Reverting database to 9.2.18 in 5 seconds
=== WARNING ===
This will revert the database to what it wasbefore you upgraded, including the data.
Please hit Ctrl-C now if this isn't what youwere looking for
=== WARNING ===
== Reverting ==
ok: down: postgresql: 131s, normally up
ok: run: postgresql: (pid 12102) 0s
== Reverted ==
Toggling deploy page:rm -f/opt/gitlab/embedded/service/gitlab-rails/public/index.html
Toggling deploy page: OK
Toggling services:ok: run: gitaly: (pid 12107)1s
ok: run: gitlab-monitor: (pid 12111) 0s
ok: run: logrotate: (pid 12115) 1s
ok: run: node-exporter: (pid 12121) 0s
ok: run: postgres-exporter: (pid 12125) 0s
ok: run: prometheus: (pid 12130) 1s
ok: run: redis-exporter: (pid 12139) 0s
ok: run: sidekiq: (pid 12144) 1s
Toggling services: OK
2.6 gitlab配置詳解
配置路徑 |
|
gitlab配置檔案 |
/etc/gitlab/gitlab.rb |
unicorn配置檔案 |
/var/opt/gitlab/gitlab-rails/etc/unicorn.rb |
nginx配置檔案 |
/var/opt/gitlab/nginx/conf/gitlab-http.conf |
gitlab倉庫預設位置 |
/var/opt/gitlab/git-data/repositories |
#修改web埠
如果80和8080埠被佔用可以修改
[root@gitlabgitlab_pack]# vi /var/opt/gitlab/gitlab-rails/etc/unicorn.rb
listen"127.0.0.1:8080", :tcp_nopush => true #這一行埠修改為你要埠
#修改nginx埠
[root@gitlabgitlab_pack]# vi /var/opt/gitlab/nginx/conf/gitlab-http.conf
server{ #這裡的80埠修改為你所需要的埠
listen *:80;
注:
只要修改了配置檔案一定要重新載入配置
#修改Prometheus埠
#Prometheus預設埠是9090
[root@gitlabgitlab_pack]# vi /etc/gitlab/gitlab.rb
#根據自己情況自行修改成自己需要的port
#修改專案工程數量
預設安裝好,你能建立的專案,只能建立10個
#第一種方式修改
[root@gitlab gitlab_pack]# vi/opt/gitlab/embedded/service/gitlab-rails/config/initializers/1_settings.rb
Settings.gitlab['default_projects_limit'] ||=10
修改成你自己所需要的引數,儲存
Settings.gitlab['default_projects_limit'] ||=10000
#重新初始化
[root@gitlab postgresql]# gitlab-ctlreconfigure
#檢視修改之後專案數量
注:
這個是在安裝完gitlab之後修改,如果已經使用一段時間,在修改專案的數量,需要你自己在自己的使用者下修改,第二次初始化,會縮短時間
#第二種方式修改
#首先登入gitlab
#點選Adminstrator這個使用者
#點選編輯
#關閉註冊功能
預設註冊功能是開啟的, 對於個人的gitlab, 沒有對外公佈的必要
#首先點選管理區域---à在點選設定按鈕
找到註冊限制
選中,然後儲存
#關閉監控
#關閉服務
[root@gitlab gitlab_pack]# gitlab-ctl stop
[root@gitlabgitlab_pack]# vi /etc/gitlab/gitlab.rb
把true改成false
prometheus_monitoring['enable']= true
prometheus_monitoring['enable']= false
#儲存
#重新載入配置檔案
[root@gitlabgitlab_pack]# gitlab-ctl reconfigure
#啟動服務
[root@gitlab gitlab_pack]# gitlab-ctl start
ok: run: gitaly: (pid 21611) 0s
ok: run: gitlab-workhorse: (pid 21615) 1s
ok: run: logrotate: (pid 21622) 0s
ok: run: nginx: (pid 21628) 1s
ok: run: postgresql: (pid 21633) 0s
ok: run: redis: (pid 21641) 0s
ok: run: sidekiq: (pid 21645) 1s
ok: run: unicorn: (pid 21648) 0s
#很顯然沒有prometheus這個服務
2.7 gitlab安全
#Custom password length limits
#初始化器的密碼長度設定為最少8個字元
[root@gitlab opt]# cd/opt/gitlab/embedded/service/gitlab-rails/config/initializers
[root@gitlab initializers]#cpdevise_password_length.rb.example devise_password_length.rb
#重啟gitlab服務
#Rack attack
為了防止濫用客戶造成損害GitLab使用機架攻擊,提供一個保護路徑
預設情況下,使用者登入,使用者註冊(如果啟用)和使用者密碼重置被限制為每分鐘6個請求。嘗試6次後,客戶端將不得不等待下一分鐘再次嘗試。
如果發現節流不足以保護您免遭濫用客戶端,機架式攻擊寶石提供IP白名單,黑名單,Fail2ban樣式過濾器和跟蹤。
[root@gitlab opt]# cd/opt/gitlab/embedded/service/gitlab-rails/config/initializers
[root@gitlab initializers]# cp rack_attack.rb.example rack_attack.rb
#編輯application.rb
[root@gitlab config]#vi/opt/gitlab/embedded/service/gitlab-rails/config/application.rb
config.middleware.use Rack::Attack
儲存
#重新啟動GitLab例項
#Information exclusivity
Git是分散式版本控制系統(DVCS)。這意味著每個與原始碼一起工作的人都具有完整儲存庫的本地副本。在GitLab中,不是客人的所有專案成員(因此,記者,開發人員和主人)都可以克隆資料庫以獲取本地副本。獲取本地副本後,使用者可以隨時上傳完整的儲存庫,包括其控制下的另一個專案或其他伺服器。結果是您無法構建訪問控制,阻止有權訪問原始碼的使用者有意共享原始碼。這是DVCS的固有特性,所有git管理系統都有這個限制。很明顯,你可以採取措施,防止意外分享和破壞資訊,這就是為什麼只有一些人被允許邀請他人,沒有人可以強制推行一個受保護的分支機構。
#How to reset your root password
[root@gitlab config]# gitlab-railsconsole production
Loading production environment (Rails 4.2.8)
irb(main):001:0> user = User.where(id: 1).first#檢視資訊
=> #<User id: 1, email: "admin@example.com",created_at: "2017-05-16 09:04:59", updated_at: "2017-05-1707:18:16", name: "Administrator", admin: true, projects_limit:100000, skype: "", linkedin: "", twitter: "",authentication_token: "k44aWyAaaaJaHYx4B_QP", bio: nil, username:"root", can_create_group: true, can_create_team: false, state:"active", color_scheme_id: 1, password_expires_at: nil,created_by_id: nil, last_credential_check_at: nil, avatar: nil,hide_no_ssh_key: false, website_url: "", notification_email:"admin@example.com", hide_no_password: false, password_automatically_set:false, location: nil, encrypted_otp_secret: nil, encrypted_otp_secret_iv: nil,encrypted_otp_secret_salt: nil, otp_required_for_login: false,otp_backup_codes: nil, public_email: "", dashboard: 0, project_view:2, consumed_timestep: nil, layout: 0, hide_project_limit: false,otp_grace_period_started_at: nil, ldap_email: false, external: false,incoming_email_token: "9wt82lanyjoakil3asrhfevvh", organization: nil,authorized_projects_populated: true, ghost: nil, last_activity_on: nil, notified_of_own_activity:false, require_two_factor_authentication_from_group: false,two_factor_grace_period: 48>
irb(main):002:0> user.password = 'admin123' #設定新的密碼
=> "admin123"
irb(main):003:0> user.password_confirmation = 'admin123' #驗證密碼
=> "admin123"
irb(main):004:0> user.save! #儲存密碼
Enqueued ActionMailer::DeliveryJob (Job ID:b2ba5d30-853c-405d-8d95-fa938d88f32c) to Sidekiq(mailers) with arguments:"DeviseMailer", "password_change", "deliver_now",gid://gitlab/User/1
=> true
irb(main):005:0> #ctrl+d退出
#User email confirmation at sign-up
如果您想在所有使用者電子郵件登入之前確認,Gitlab管理員可以在註冊時啟用電子郵件確認。
2.8 gitlab叢集
2.9 GitLab Runner 構建任務
官方:https://docs.gitlab.com/runner/
#簡介
GitLab Runner是用於執行作業並將結果傳送回GitLab的開源專案。它與GitLab CI結合使用,GitLab CI是GitLab中協調工作的開源連續整合服務。
#Requirements
GitLab Runner是用Go編寫的,可以作為一個二進位制檔案執行,不需要任何語言特定的要求。它被設計為在GNU / Linux,macOS和Windows作業系統上執行。只要您可以編譯一個Go二進位制檔案,其他作業系統就可能會工作。
#Features
Allows to run
- multiple jobs concurrently(多個工作同時進行)
- use multiple tokens with multiple server (even per-project)( 使用多個令牌與多個伺服器(甚至每個專案))
- limit number of concurrent jobs per-token(限制每個令牌的併發作業數)
Jobs can be run
- locally(本地)
- using Docker containers(使用Docker容器)
- using Docker containers and executing job over SSH(使用Docker容器並通過SSH執行作業)
- using Docker containers with autoscaling on different clouds and virtualization hypervisors(使用Docker容器在不同的雲和虛擬化管理程式上進行自動縮放)
- connecting to remote SSH server(連線到遠端SSH伺服器)
#安裝
#安裝gitlab-ci-multi-runner源
[root@gitlab ~]#curl -Lhttps://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh| sudo bash
#安裝
[root@gitlab ~]#yum installgitlab-ci-multi-runner
#gitlab-runner使用
必須是在8版本以上才能使用這個整合功能
https://docs.gitlab.com/runner/commands/README.html
語法
gitlab-runner
[root@gitlab ~]# gitlab-runner --help
USAGE:
gitlab-runner[global options] command [command options] [arguments...]
COMMANDS |
|
名稱 |
作用 |
exec |
顯示runner配置檔案 |
list |
|
run |
執行多個runner服務 |
register |
註冊一個新的runner |
install |
安裝服務 |
uninstall |
解除安裝服務 |
start |
啟動一個服務 |
stop |
停止一個服務 |
restart |
重啟 |
status |
一個服務狀態 |
run-single |
執行單獨的一個runner |
unregister |
登出特定的runner |
verify |
驗證所有註冊的runner |
artifacts-downloader downloadand extract build artifacts (internal)
artifacts-uploader create andupload build artifacts (internal)
cache-archiver create and uploadcache artifacts (internal)
cache-extractor download andextract cache artifacts (internal)
例子:
#list
[root@gitlab ~]# gitlab-runner list
Listing configured runners ConfigFile=/etc/gitlab-runner/config.toml
#debug
[root@gitlab ~]# gitlab-runner --debug list
Runtime platform arch=amd64 os=linuxrevision=0118d89 version=9.1.0
Listing configured runners ConfigFile=/etc/gitlab-runner/config.toml
gitlab-ci-multi-runner
[root@gitlab gitlab]# gitlab-ci-multi-runnerregister --help
Runner型別
GitLab-Runner可以分類兩種型別:
Shared Runner(共享型)
Specific Runner(指定型)。
Shared Runner:
這種Runner(工人)是所有工程都能夠用的。只有系統管理員能夠建立Shared Runner。
Specific Runner:
這種Runner(工人)只能為指定的工程服務。擁有該工程訪問許可權的人都能夠為該工程建立Shared Runner。
註冊runner
1,copy 註冊授權碼
2,register
安裝好gitlab-ci-multi-runner這個軟體之後,我們就可以用它向GitLab-CI註冊Runner了。
向GitLab-CI註冊一個Runner需要兩樣東西:GitLab-CI的url和註冊token。
其中,token是為了確定你這個Runner是所有工程都能夠使用的Shared Runner還是具體某一個工程才能使用的Specific Runner
#檢視register幫助
[root@gitlab gitlab]# gitlab-ci-multi-runnerregister --help
#註冊Shared Runner
在註冊Runner的時候,需要填入Token,GitLab根據不同的Token確定這個Runner是被設定為Shared Runner還是Specific Runner
[root@gitlab gitlab]# gitlab-ci-multi-runnerregister
Running in system-mode.
Please enter the gitlab-ci coordinator URL(e.g. https://gitlab.com/):
http://192.168.201.148/ci#輸入ci
Please enter the gitlab-ci token for thisrunner:
2RBdZavdy6UsZvbyCcMF#註冊授權碼
Please enter the gitlab-ci description for thisrunner:
[gitlab.server.com]: test_runner #描述
Please enter the gitlab-ci tags for this runner(comma separated):
hello_tom #寫個標籤,可以多個,用逗號隔開
Whether to run untagged builds [true/false]:
[false]: #輸入回車
Whether to lock Runner to current project[true/false]:
[false]: #輸入回車
Registering runner... succeeded runner=2RBdZavd
Please enter the executor: virtualbox, docker-ssh+machine,kubernetes, parallels, shell, ssh, docker+machine, docker, docker-ssh:
shell #輸入選擇通訊方式
Runner registered successfully. Feel free tostart it, but if it's running already the config should be automaticallyreloaded!
#檢視服務是否執行
[root@gitlab gitlab]# ps -ef|grep runner
root 7998 1 0 13:09 ? 00:00:02/usr/bin/gitlab-ci-multi-runner run --working-directory /home/gitlab-runner --config/etc/gitlab-runner/config.toml --service gitlab-runner --syslog --usergitlab-runner
注意:
如果不執行gitlab-ci-multi-runner register命令,直接在配置檔案裡面新增Runner的配置資訊可以嗎
當然不行。因為gitlab-ci-multi-runner register的作用除了把Runner的資訊儲存到配置檔案以外,還有一個很重要的作用,那就是向GitLab-CI發出請求,在GitLab-CI中登記這個Runner的資訊並且獲取後續通訊所需要的token。
3,檢視register
# 登陸
http://my_url/admin/runners
#檢視gitlab-runner配置檔案
[root@gitlab ~]# cat/etc/gitlab-runner/config.toml
concurrent = 1
check_interval = 0
[[runners]]
name ="test_ci"
url ="http://192.168.201.148/ci"
token ="c6f62fe5a2b4ec072f5cc2fb096c02"
executor = "shell"
[runners.cache]
4,執行runner
要讓一個Runner執行起來,--url、--token和--executor選項是必要的.
[root@gitlab gitlab]# gitlab-ci-multi-runnerrun-single --help
[root@gitlab ~]# gitlab-ci-multi-runner install--user=gitlab-runner --working-directory=/home/gitlab-runner
[root@gitlab ~]# gitlab-ci-multi-runner status
gitlab-runner: Service is running!
[root@gitlab test]# gitlab-ci-multi-runner list
Listing configured runners ConfigFile=/etc/gitlab-runner/config.toml
popop Executor=shell Token=8bfcd3b988ae348111b5500a355273URL=http://192.168.201.149/ci
5,yaml
https://docs.gitlab.com/ee/ci/yaml/README.html
從7.12版本開始,GitLab CI使用YAML 檔案(.gitlab-ci.yml)來配置project's builds
.gitlab-ci.yml 使用YAML語法, 需要格外注意縮排格式,要用空格來縮排,不能用tabs來縮排。
6,實戰
3.0 實戰測試
http客戶端測試
#建立測試目錄
[root@client ~]# mkdir test2
[root@client ~]# cd test2
#把伺服器的上倉庫clone下來
[root@cleint test2]# git clone http://gitlab.server.com/root/test.git
Cloning into 'test'...
warning: You appear to have cloned an emptyrepository.
Checking connectivity... done.
或者
[root@cleint test2]# git clone http://gitlab.server.com/root/test.git
Username for 'http://git.server.com':root
Password for 'http://root@git.server.com':adminroot
Counting objects: 3, done.
Writing objects: 100% (3/3), 216 bytes | 0bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://git.server.com/root/go.git
* [newbranch] master -> master
Branch master set up to track remote branchmaster from origin.
[root@git test2]# ls
test
#配置使用者
[root@cleint test2]# git config --globaluser.name "Administrator"
[root@client test2]# git config --globaluser.email "admin@example.com"
[root@client test2]# cd test/
#建立檔案
[root@client test]# touch README.md
[root@client test]# vi README.md
[root@client test]# git add README.md
[root@client test]# git commit -m "addREADME"
[master (root-commit) 874889b] add README
1 filechanged, 1 insertion(+)
createmode 100644 README.md
#push
[root@client test]# git push -u origin master
Username for 'http://git.server.com': root
Password for 'http://root@gitlab.server.com': adminroot
Counting objects: 3, done.
Writing objects: 100% (3/3), 223 bytes | 0bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://git.server.com/root/test.git
* [newbranch] master -> master
Branch master set up to track remote branchmaster from origin.
從web上檢視test倉庫下是否上傳了README.md這個檔案
#檢視是否成功
上傳成功
ssh客戶端測試
#生成公鑰
[root@node6 .ssh]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key(/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in/root/.ssh/id_rsa.
Your public key has been saved in/root/.ssh/id_rsa.pub.
The key fingerprint is:
d9:0d:43:2b:17:cc:3b:01:fa:c9:cb:2c:6e:b7:27:6droot@node6
The key's randomart image is:
+--[ RSA 2048]----+
| .+o |
| ..+o |
| .. =o |
| o*o+ |
| S ... |
| o. |
| .+. |
| ...o E |
| ....= |
+-----------------+
[root@node6 .ssh]#
[root@node6 .ssh]# ls
id_rsa id_rsa.pub
[root@node6 .ssh]# cat id_rsa.pub
ssh-rsaAAAAB3NzaC1yc2EAAAABIwAAAQEAoOLsYhPPlHPOnGh6SoVDPlVn2o8rfO55J60Gz7E0EDB0ugKgTu4VGOE8vVta7HH5exNAjw2UqHIliYcmVvrj5eFbvXLdLYGypiMfuP4H7dVwGXfxSzeG17aIbZma0fpB2bTQr3tN+nVA7tokVSmO+jC61/H6Qj9G1TEiedq0wtTuSQ8pza5hyeWRO9oi0W7ccZkYg7lSQ3Eo2n2/RJbmQHWdIcoBO8c64h5vq/gB1s7ZjHKUjSFvGTyHu7uYE6yD2PXylavLfq2FHUc4syV8yAvyW2ehgIcc+xDWMFC85SNuPvTOt0YNzG628gWB2lm+D8CPhZBUbz2IUkFN0jEdyQ==root@node6
#新增域名(如果是真實的域名,這步不需要做)
[root@node6 .ssh]# vi /etc/hosts
192.168.201.131 git.server.com
#新增到gitlab上
#測試ssh是否可用
[root@node6 .ssh]# ssh -T git@gitlab.server.com
The authenticity of host 'git.server.com(192.168.201.134)' can't be established.
RSA key fingerprint is45:1f:76:55:cb:72:fe:65:22:75:10:eb:d5:2e:35:d5.
Are you sure you want to continue connecting(yes/no)?yes
Warning: Permanently added'git.server.com,192.168.201.134' (RSA) to the list of known hosts.
Welcome to GitLab, Administrator!
證明成功
#克隆資料
[root@node6 .ssh]# git clone git@gitlab.server.com:root/test.git
Initialized empty Git repository in/root/.ssh/test/.git/
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), 223 bytes, done
Gitlab-runner
在建立register之前,需要拿到token和ci地址
1,找到你要register的專案地址
2,進入到這個專案
3,點選設定
4,點選pipline,檢視token和ci
#register
[root@gitlab test]# gitlab-ci-multi-runnerregister
#檢視register
# 登陸
http://my_url/admin/runners
#檢視gitlab-runner配置檔案
[root@gitlab ~]# cat/etc/gitlab-runner/config.toml
concurrent = 1
check_interval = 0
[[runners]]
name ="test_ci"
url ="http://192.168.201.148/ci"
token ="c6f62fe5a2b4ec072f5cc2fb096c02"
executor = "shell"
[runners.cache]
#配置pipline
1,開啟runner
2,編輯runner
#clone倉庫
[root@gitlab test]# git clone http://root@gitlab.server.com/root/test.git
[root@gitlab test]#cd test
#建立gitlab-ci.yml檔案
[root@gitlab test]# cat .gitlab-ci.yml
stages:
- test
job1:
stage:test
script:
-echo "I am job1"
- echo "I am intest stage"
#上傳到gitlab倉庫中
[root@gitlab test]# git add .gitlab-ci.yml
[root@gitlab test]# git commit -m"kskksksk"
[master 9376c70] kskksksk
1 filechanged, 1 insertion(+), 1 deletion(-)
[root@gitlab test]# git push origin master
Password for 'http://root@gitlab.server.com':
Counting objects: 5, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 363 bytes | 0bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To http://root@gitlab.server.com/root/test.git
df0b7b4..9376c70 master ->master
#檢視效果
#點選passwd
相關文章
- 【乾貨】快速安裝 GitLab 並漢化Gitlab
- 搭建 GitLab 並漢化Gitlab
- Docker 安裝配置 GitLabDockerGitlab
- CentOS7 安裝配置 GitLabCentOSGitlab
- MongoDB之安裝並配置MongoDB
- 安裝並配置goldengateGo
- GitLab安裝Gitlab
- Gitlab環境快速部署(RPM包方式安裝)Gitlab
- Windows 安裝並配置 MySQL 5.6WindowsMySql
- gitlab遷移到docker並升級大版本到10.1.1和漢化GitlabDocker
- docker 安裝 nginx 並配置反向代理DockerNginx
- linux配置multipath 並安裝racLinux
- docker安裝gitlabDockerGitlab
- CodeMan快速安裝配置教程:Windows下安裝配置Java JDK環境WindowsJavaJDK
- linux下安裝node npm並配置LinuxNPM
- LINUX下安裝cassandra 並配置clusterLinux
- Ubuntu上安裝KVM並配置顯示卡直通Ubuntu
- 3. gitlab安裝Gitlab
- gitlab社群版安裝Gitlab
- 用Docker安裝GitlabDockerGitlab
- CentOS 7 安裝 GitlabCentOSGitlab
- gitlab - [02] 安裝部署Gitlab
- Poechant快速安裝配置教程:Eclipse + SVNEclipse
- Qt Creator 安裝、漢化及helloworld程式QT
- Jmeter下載安裝教程(含漢化)JMeter
- mac安裝mysql並配置環境變數MacMySql變數
- CentOS7安裝Docker並配置映象加速CentOSDocker
- Linux安裝Nginx並配置啟動命令LinuxNginx
- Redmine 安裝並配置使用Agile plugin外掛Plugin
- CentOS 7.0下面安裝並配置SparkCentOSSpark
- GitLab 安裝、管理、運維Gitlab運維
- GitLab 的安裝和使用Gitlab
- Docker 教程十四安裝 GitlabDockerGitlab
- gitlab中文版安裝Gitlab
- 在CentOS上安裝GITLABCentOSGitlab
- GitLab 如何降級安裝?Gitlab
- 使用docker安裝gitlab以及gitlab簡單使用DockerGitlab
- SourceInsight漢化版一鍵安裝