016-gitlab私服中文安裝與配置(轉)
1 gitlab中文網地址 https://www.gitlab.com.cn
2 gitlab安裝:centos6中文安裝教程 https://www.gitlab.com.cn/installation/#centos-6
包含了社群版(Community Edition)和企業版(Enterprise Edition)的安裝
每種版本都包含了線上安裝和安裝包安裝兩種方式
強烈建議使用 Omnibus 包安裝 GitLab ,因為它安裝起來更快、更容易升級版本,而且包含了其他安裝方式所沒有的可靠性功能。同時我們強烈推薦承載 GitLab 執行的伺服器 至少分配4GB的記憶體 給 GitLab
安裝gitlab的去求見地址https://docs.gitlab.com.cn/ce/install/requirements.html
安裝包各個版本下載地址如下https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/
3 gitlab配置資訊
配置域名訪問
為使使用者可以正確的獲取到GitLab上顯示的當前倉庫的clone地址,GitLab需要你設定好哪個url才是使用者可以訪問到GitLab, 比如http://gitlab.example.com。你需要編輯下面這個檔案
/etc/gitlab/gitlab.rb:
external_url "http://gitlab.example.com"#替換為你自己的地址
執行sudo gitlab-ctl reconfigure使修改生效
配置子路徑訪問(實驗性)
注意:Relative URL(子路徑)是在8.5版本被引入 Omnibus GitLab的,該功能還處於測試階段。 如果你使用原始碼安裝的,這裡有一篇獨立介紹原始碼安裝如何使用子路徑的文件.
雖然我們建議GitLab使用二級域名訪問, 但有時由於各種各樣的原因,我們想用子路徑的方式訪問GitLab。 出於這種需求,Gitlab也可以安裝到子路徑, 如https://example.com/gitlab.
需要注意的是,修改了這個URL後, 所有遠端倉庫地址要也做相應的修改,所以你需要手動修改本地倉庫中的remote url以使可以正常連線GitLab伺服器
配置子路徑訪問的條件
自Omnibus 8.17 安裝包開始,不再需要重新編譯靜態資源Omnibus GitLab 一鍵包附帶了預編譯的資源(如CSS, JavaScript,fonts, 等等)。 如果你使用的是8.17 之前的版本並配置了GitLab使用relative URL,這些資原始檔就需要重新生成,而生成資源的過程需要消耗一部分CPU和記憶體資源。為防止記憶體不足, 需要保證伺服器至少有2GB的可用記憶體,我們建議的伺服器配置為4GB記憶體,4核或者8核CPU
啟用子路徑訪問
請按照下面的步驟為GitLab啟用relative URL:
(可選) 如果當前伺服器可用資源不用,可用下面的命令暫時關閉Unicorn 和 Sidekiq 釋放一部分記憶體:
sudo gitlab-ctl stop unicornsudo gitlab-ctl stop sidekiq
修改external_url,編輯/etc/gitlab/gitlab.rb:
external_url"https://example.com/gitlab"
上面的例子將使GitLab的訪問路徑變成域名後面加/gitlab,請將此處修改為你自己的地址。
Reconfigure GitLab 使修改生效:
sudo gitlab-ctl reconfigure
Restart the services so that Unicorn and Sidekiq picks up the changes
sudo gitlab-ctl restart
禁用子路徑訪問
禁用relative URL, 同樣的也要修改external_url,改成不包含子路徑的地址。然後重啟下Unicorn服務即可:
sudo gitlab-ctl restart unicorn
使用子路徑的故障排查
如果你配置子路徑後,發現 gitlab 靜態資源發生錯誤(如圖片丟失,資源響應長時間未響應),請在GitLab-CE的 issue 頁面提交問題,注意使用Frontend標籤。
如你使用的是8.17 之前的版本並發現由於一些原因導致資源生成失敗(比如伺服器記憶體不足),你可以在解決這些問題後手動執行生成資源的任務(比如增加swap):
sudo NO_PRIVILEGE_DROP=true USE_DB=false gitlab-rake assets:clean assets:precompilesudo chown-Rgit:git /var/opt/gitlab/gitlab-rails/tmp/cache
上面的命令中的使用者和組如果和你在gitlab.rb中設定的user['username'],user['group'],gitlab_rails['dir']不一樣,執行該命令的時候注意修改chown命令後面的git:git為配置檔案裡面的使用者和組
載入非超級使用者的擴充套件配置
Omnibus-gitlab會載入/etc/gitlab/gitlab.rb檔案中的所有配置項。這個檔案的屬主為root,並且有嚴格的許可權控制,這樣做的原因是執行gitlab-ctl reconfigure的過程中要以root身份執行Ruby解析/etc/gitlab/gitlab.rb。這就意味著擁有/etc/gitlab/gitlab.rb寫入許可權的使用者可以編輯配置項然後以root使用者身份來執行解析。
在某些團隊,可能會允許非root使用者來修改gitlab的配置,你可以在/etc/gitlab/gitlab.rb檔案中引入外部擴充套件配置檔案實現這個需求:
from_file"/home/admin/external_gitlab.rb"
使用from_file引入到/etc/gitlab/gitlab.rb的程式碼在sudo gitlab-ctl reconfigure的時候都會以root許可權執行。/etc/gitlab/gitlab.rb和from_file中重複的配置項,/etc/gitlab/gitlab.rb的優先順序更高
設定儲存倉庫資料的備用目錄
預設情況下omnibus-gitlab 將倉庫資料儲存在/var/opt/gitlab/git-data目錄下,倉庫存放在子目錄repositories裡面。 以可以通過修改/etc/gitlab/gitlab.rb的這一行來自定義git-data的父目錄。
git_data_dirs({"default"=>{"path"=>"/mnt/nas/git-data"}})
自GitLab 8.10開始,可以通過在/etc/gitlab/gitlab.rb檔案中新增下面的幾行配置,來增加多個 git 資料儲存目錄。
git_data_dirs({"default"=>{"path"=>"/var/opt/gitlab/git-data"},"alternative"=>{"path"=>"/mnt/nas/git-data"}})
注意目標路徑和其子路徑必須不能為軟連結。
執行sudo gitlab-ctl reconfigure使修改生效。
如果/var/opt/gitlab/git-data目錄已經存在Git倉庫資料,你可以用下面的命令把資料遷移到新的位置:
# 準備遷移之前要停止GitLab服務,防止使用者寫入資料。sudo gitlab-ctl stop# 注意 'repositories'後面不帶斜槓,而# 'git-data'後面是有斜槓的。sudo rsync-av/var/opt/gitlab/git-data/repositories /mnt/nas/git-data/# 如果需要修復許可權設定,# 可執行下面的命令進行修復。sudo gitlab-ctl reconfigure# 再次檢查下 /mnt/nas/git-data的目錄. 正常情況應該有下面這個子目錄:# repositoriessudo ls/mnt/nas/git-data/# 完工! 啟動GitLab,驗證下是否能# 通過web訪問Git倉庫。sudo gitlab-ctl start
修改預設的執行使用者和組
預設情況下omnibus-gitLab使用git使用者登陸Git gitlab-shell,Git data是屬主也是git,網頁上生成的SSH URL也是git使用者。同樣的,git使用者組也是Git data的屬組。
我們不建議在已經安裝好的gitlab上修改預設的user/group,因為這會產生無法預知的副作用。如果你固執的想要修改預設的user/group,你可以在/etc/gitlab/gitlab.rb檔案中新增下面加行配置:
user['username']="gitlab"
user
['group']="gitlab"
執行sudo gitlab-ctl reconfigure使修改生效。
注意:如果你在已經安裝好的GitLab中修改了user/group,reconfigure不會修改子目錄的屬主和屬組,你需要手動修改,並確認新使用者可以讀寫repositories和uploads目錄
設定使用數字表示的使用者和組
omnibus-gitlab 為GitLab, PostgreSQL, Redis 和 NGINX建立了執行使用者。你可以在/etc/gitlab/gitlab.rb檔案中指定這些使用者的uid和gid。
user['uid']=1234
user['gid']=1234
postgresql
['uid']=1235
postgresql
['gid']=1235
redis['uid']=1236
redis
['gid']=1236
web_server
['uid']=1237
web_server['gid']=1237
執行sudo gitlab-ctl reconfigure使修改生效
禁用管理使用者和組賬戶的功能
預設情況下,綜合gitlab照顧建立系統使用者和組帳戶以及保持資訊更新。這些系統帳戶執行包的各個元件。大多數使用者不需要改變這種行為。但是,如果您的系統帳戶由其他軟體(如LDAP)管理,則可能需要禁用包所做的帳戶管理。
為了禁用omnibus-gitlab管理使用者和組賬戶,我們需要在/etc/gitlab/gitlab.rb中做如下設定:
manage_accounts['enable']=false
警告Omnibus-gitlab 建議在系統上保留omnibus-gitlab安裝包建立的預設使用者。
omnibus-gitlab 建立的預設使用者如下:
# GitLab user (必需)
git
# Web server user (必需)
gitlab-www
# Redis user for GitLab (如使用內建的redis,該賬號必需)
gitlab-redis
# Postgresql user (如使用內建的Postgresql,該賬號必需)
gitlab-psql
# Prometheus user for prometheus monitoring and various exporters
gitlab-prometheus
# GitLab Mattermost user (only when using GitLab Mattermost)
mattermost
# GitLab Registry user (only when using GitLab Registry)
registry
# GitLab Consul user (only when using GitLab Consul)
gitlab-consul
omnibus-gitlab 建立的預設組如下:
# GitLab group (必需)
git
# Web server group (必需)
gitlab-www
# Redis group for GitLab (如使用內建的Redis,該使用者組必需)
gitlab-redis
# Postgresql group (如使用內建的Postgres,該使用者組必需)
gitlab-psql
# Prometheus user for prometheus monitoring and various exporters
gitlab-prometheus
# GitLab Mattermost group (如使用內建的Mattermost,該使用者組必需)
mattermost
# GitLab Registry group (only when using GitLab Registry)
registry
# GitLab Consul group (only when using GitLab Consul)
gitlab-consul
你也可以自定義user/group ,但需要在/etc/gitlab/gitlab.rb配置檔案中配置詳細的user/group,如:
# 禁用管理user/group的功能
manage_accounts['enable']=false
# GitLab
user['username']="custom-gitlab"
user['group']="custom-gitlab"
user['shell']="/bin/sh"
user['home']="/var/opt/custom-gitlab"
# Web server
web_server
['username']='webserver-gitlab'
web_server['group']='webserver-gitlab'
web_server
['shell']='/bin/false'
web_server['home']='/var/opt/gitlab/webserver'
# Postgresql (如使用外部Postgresql,可忽略該配置)
postgresql['username']="postgres-gitlab"
postgresql
['shell']="/bin/sh"
postgresql
['home']="/var/opt/postgres-gitlab"
# Redis (如使用外部Redis,可忽略該配置)
redis['username']="redis-gitlab"
redis['shell']="/bin/false"
redis['home']="/var/opt/redis-gitlab"
# 以此類推,GitLab Mattermost 也需要指定詳細的user/group
禁用管理儲存目錄的功能
預設情況下,omnibus-gitlab負責建立所有必需的資料夾並賦予目錄正確的所有權和許可權,並根據配置檔案保持更新。
在某些大型組織架構中,隨著專案程式碼和數量的增加,一些目錄會儲存大量的資料,為擴充套件儲存能力這些目錄可能就需要掛載到NFS(或者其他共享儲存)上。
掛載某些檔案系統會拒絕root使用者自動建立目錄,比如 NFS 需要啟用root_squash。要解決這個問題,omnibus-gitlab會嘗試使用該目錄的屬主使用者來自動建立子目錄。
如果你掛載了/etc/gitlab目錄,你可以禁用omnibus-gitlab對該目錄的管理功能。
修改/etc/gitlab/gitlab.rb:
manage_storage_directories['manage_etc']=false
如果計劃重新掛載GitLab所有儲存目錄到每個獨立的掛載點上,應該完全禁用omnibus-gitlab對各個儲存目錄的管理功能。
為禁止對所有儲存目錄的管理功能,修改/etc/gitlab/gitlab.rb:
manage_storage_directories['enable']=false
Warningomnibus-gitlab 建議保留預設的目錄。如該選項已設定,將有管理員建立目錄並設定正確的許可權。
啟用此設定會阻止omnibus-gitlab建立如下目錄:
Default locationPermissionsOwnershipPurpose
/var/opt/gitlab/git-data0700git:rootHolds repositories directory
/var/opt/gitlab/git-data/repositories2770git:gitHolds git repositories
/var/opt/gitlab/gitlab-rails/shared0751git:gitlab-wwwHolds large object directories
/var/opt/gitlab/gitlab-rails/shared/artifacts0700git:rootHolds CI artifacts
/var/opt/gitlab/gitlab-rails/shared/lfs-objects0700git:rootHolds LFS objects
/var/opt/gitlab/gitlab-rails/uploads0700git:rootHolds user attachments
/var/opt/gitlab/gitlab-rails/shared/pages0750git:gitlab-wwwHolds user pages
/var/opt/gitlab/gitlab-ci/builds0700git:rootHolds CI build logs
/var/opt/gitlab/.ssh0700git:gitHolds authorized keys
設定延遲啟動
為保證服務質量,我們可以設定讓omnibus-gitlab的服務(Nginx, Redis, Unicorn等)在指定的檔案系統掛載成功後再啟動,在/etc/gitlab/gitlab.rb檔案中新增如下內容:
# wait for /var/opt/gitlab to be mountedhigh_availability['mountpoint']='/var/opt/gitlab'
執行sudo gitlab-ctl reconfigure使修改生效
配置執行時目錄
When Prometheus monitoring is enabled, GitLab-monitor will conduct measurementsof each Unicorn process (Rails metrics). Every Unicorn process will need to writea metrics file to a temporary location for each controller request.Prometheus will then collect all these files and process their values.
In order to avoid creating disk I/O, the omnibus-gitlab package will use aruntime directory.
Duringreconfigure, package will check if/runis atmpfsmount.If it is not, warning will be printed:
Runtime directory '/run' is not a tmpfs mount.
and Rails metrics will be disabled.
To enable Rails metrics again, create atmpfsmount and specify it in/etc/gitlab/gitlab.rb:
runtime_dir '/path/to/tmpfs'
Please note that there is no=in the configuration.
Runsudo gitlab-ctl reconfigurefor the settings to take effect
配置基礎防護
為阻止惡意使用客戶端破壞GitLab,我們使用了rack-attack gem包。查閱 rack_attack獲取更多內容。
原始碼中的config/initializers/rack_attack.rb檔案在omnibus-gitlab中由/etc/gitlab/gitlab.rb管理
禁用安裝過程中自動清理快取
If you have large gitlab installation, you might not want to runrake cache:cleantask.As it can take long time to finish. By default, cache clear task will run automaticallyduring reconfigure.
編輯 /etc/gitlab/gitlab.rb:
# This is advanced feature used by large gitlab deployments where loading# whole RAILS env takes a lot of time.gitlab_rails['rake_cache_clear']=false
Don't forget to remove the#comment characters at the beginning of thisline
啟用禁用賬戶驗證防護
修改下面的配置項控制Rack Attack:
gitlab_rails['rack_attack_git_basic_auth']={
'enabled'=>true,# 啟用/禁用 Rack Attack
'ip_whitelist'=>["127.0.0.1"],# 白名單地址,多個IP用","隔開
'maxretry'
=>10,# 限制每個IP嘗試登陸的次數為10次。
'findtime'
=>60,# 60秒後重置每IP的授權計數器
'bantime'
=>3600# 對多次錯誤登陸的IP封禁1小時(3600秒)
}
設定訪問路徑防護
要修改預設的防護路徑,需在配置檔案中設定gitlab_rails['rack_attack_protected_paths']區段。
Warning此操作會覆蓋omnibus-gitlab 預設列表:
gitlab_rails['rack_attack_protected_paths']=[
'/users/password',
'/users/sign_in',
'/api/#{API::API.version}/session.json',
'/api/#{API::API.version}/session',
'/users','/users/confirmation',
'/unsubscribes/',
'/import/github/personal_access_token'
]
Note:所有路徑必須是 gitlab 的相對路徑.如啟用了relative URL,上面的路徑要做相應修改。
Warning若要在路徑中插入rails的變數,如(#{API::API.version}),應避免用大括號和單引號字串。示例:"/api/#\{API::API.version\}/session.json"或者'/api/#{API::API.version}/session.json'
設定路徑防護的頻率
用如下配置來控制頻率和週期:
gitlab_rails['rate_limit_requests_per_period']=10#限制每週期請求次數
gitlab_rails
['rate_limit_period']=60#每週期的時長,60s
執行sudo gitlab-ctl reconfigure使修改生效。
配置使用LDAP登入
See doc/settings/ldap.md.
強制HTTP跳轉為HTTPS
修改預設埠和SSL證照路徑
使用外部 web-server
使用系統上已安裝的Nginx, Passenger, or Apache webserver 請查閱doc/settings/nginx.md.
使用外部的PostgreSQL資料庫伺服器
連線外部PostgreSQL or MySQL DBMS 請查閱doc/settings/database.md(Omnibus安裝包只有Enterprise(企業版)支援Mysql).
使用外部 Redis 例項
新增系統變數到GitLab執行環境
Seedoc/settings/environment-variables.md.
Changing GitLab.yml settings 自定義GitLab.yml設定
Seedoc/settings/gitlab.yml.md.
Sending application email via SMTP 使用SMTP傳送郵件
Omniauth (Google, Twitter, GitHub login)
Omniauth configuration is documented indocs.gitlab.com.
Adjusting Unicorn settings 調整 Unicorn 配置
Setting the NGINX listen address or addresses 配置 NGINX 監聽地址
Inserting custom NGINX settings into the GitLab server block 在內建NGINX中插入自定義server塊
Inserting custom settings into the NGINX config 在內建NGINX中插入自定義設定
Enable nginx_status 啟用內建NGINX的nginx_status模組
相關文章
- TortoiseGit安裝與配置(轉)Git
- Maven高階-本地倉庫訪問私服配置及私服資源上傳與下載Maven
- 【轉】Jenkins 安裝與配置Jenkins
- maven 安裝到私服Maven
- cvs在Federa Code 4中的安裝與配置(轉)
- (轉)CentOS之SSH安裝與配置CentOS
- apache2 安裝與配置(轉)Apache
- FreeBSD安裝與配置概述(轉)
- VMware 虛擬機器圖文安裝和配置 Ubuntu Server 22.04虛擬機UbuntuServer
- CentOs中mysql的安裝與配置CentOSMySql
- 阿里私服 maven 配置settings.xml阿里MavenXML
- 超詳細的CentOS7.4下載與圖文安裝CentOS
- 安裝Maven私服—Sonatype nexusMaven
- 在CentOS 6.3中安裝與配置cmakeCentOS
- 安裝與配置MySQL,phpmyAdmin;安裝與測試PHPLIB (轉)MySqlPHP
- 本地windows搭建spark環境,安裝與詳細配置(jdk安裝與配置,scala安裝與配置,hadoop安裝與配置,spark安裝與配置)WindowsSparkJDKHadoop
- Maven私服倉庫配置-Nexus詳解!Maven
- [轉]RedHat 5中裸裝置(raw)的配置Redhat
- datastage8 linux中文安裝ASTLinux
- npm私服安裝教程 – verdaccio 入門NPM
- Centos6.2中mysql的安裝與配置CentOSMySql
- 在CentOS中安裝與配置SVN的方法CentOS
- 在ubuntu中安裝與配置zsh與oh-my-zshUbuntu
- [轉]RAC 安裝配置過程中的問題
- maven學習(中)- 私服nexus搭建Maven
- centos7 (阿里雲、linux) 單機spark的安裝與配置詳解(jdk安裝與配置,scala安裝與配置,hadoop安裝與配置,spark安裝與配置)CentOS阿里LinuxSparkJDKHadoop
- Maven私服:Docker安裝nexus3MavenDockerS3
- ANT安裝、配置(轉)
- 部署 packagist私服 搭配gitlab 私服使用Gitlab
- MacVim安裝與配置Mac
- [Redis] 安裝與配置Redis
- 【MongoDB】安裝與配置MongoDB
- 【Redis】安裝與配置Redis
- 【MySQL】安裝與配置MySql
- vim安裝與配置
- jdk安裝與配置JDK
- Rabbitmq安裝與配置MQ
- MySQL安裝與配置MySql