由於圖片和格式解析問題,為了更好閲讀體驗可前往 閲讀原文
對於gitlab的安裝本人都是在arm架構Centos7.9虛擬機上進行的,請悉知本人安裝環境,或者與本人的環境保持一致,以便產生不必要的疑惑
這裏使用docker安裝Gitlab,機器上需要先安裝docker,如果你還不知道docker,可以先看看我的往期docker文章;如果你直接在Linux機器上安裝,可以參考Linux Install;如果你已經用上了k8s,可以參考Helm chart;
📷攻粽號,查看更多優質文章
# arm架構鏡像(如果你也是arm架構,可以使用此鏡像)
docker pull yrzr/gitlab-ce-arm64v8
# 最新版amd架構(非arm架構)
docker pull gitlab/gitlab-ee
配置並啓動
# 下載好後使用docker engine 運行gitlab
sudo docker run -d \
--hostname gitlab.ihengshuai.com \
--publish 443:443 --publish 80:80 --publish 8422:22 \
--name gitlab \
--restart always \
-v /srv/gitlab/config:/etc/gitlab \
-v /srv/gitlab/logs:/var/log/gitlab \
-v /srv/gitlab/data:/var/opt/gitlab \
--shm-size 512m \
yrzr/gitlab-ce-arm64v8
# IP
sudo docker run -d \
--hostname 192.168.10.10 \
--publish 443:443 --publish 80:80 --publish 8422:22 \
--name gitlab \
--restart always \
-v /srv/gitlab/config:/etc/gitlab \
-v /srv/gitlab/logs:/var/log/gitlab \
-v /srv/gitlab/data:/var/opt/gitlab \
--shm-size 512m \
yrzr/gitlab-ce-arm64v8
命令式
-
首先創建掛載卷
mkdir -p /srv/gitlab cd /srv/gitlab && mkdir config data logs -
運行gitlab容器
sudo docker run -d \ --hostname 192.168.10.10 \ -p 443:443 --publish 80:80 --publish 8422:22 \ --name gitlab \ --restart always \ -v /srv/gitlab/config:/etc/gitlab \ -v /srv/gitlab/logs:/var/log/gitlab \ -v /srv/gitlab/data:/var/opt/gitlab \ --shm-size 512m \ yrzr/gitlab-ce-arm64v8
相關參數説明:
hostname:指定gitlab的ip地址,用於瀏覽器的訪問(域名訪問看後面),這裏指定虛擬的ip192.168.10.10-p:暴露gitlab的http、https、ssh端口,這裏http使用主機的80端口,需要注意主機是否佔用80端口;https使用主機443端口,同樣注意端口占用;由於虛擬機佔用了ssh端口22,這裏使用8422端口作為gitlab的ssh端口-v:掛載gitlab的相關配置到主機,方便修改配置
當執行上面命令後,根據自己機器的配置等待一段時間,便會啓動成功,你可以查看啓動日誌:
docker logs -f gitlab
通常出現以下情況啓動成功:
瀏覽器進行訪問:
默認賬户是root,密碼可以從下文得知
配置文件安裝
此方式使用docker-compose配置文件安裝,你可以根據自己的需求來選擇安裝方式,相關配置參數此處不做解釋。
version: '3.6'
services:
web:
image: 'yrzr/gitlab-ce-arm64v8'
restart: always
hostname: '192.168.10.10'
ports:
- '80:80'
- '443:443'
- '8422:22'
volumes:
- '/srv/gitlab/config:/etc/gitlab'
- '/srv/gitlab/logs:/var/log/gitlab'
- '/srv/gitlab/data:/var/opt/gitlab'
shm_size: '256m'
然後運行此配置文件
docker compose -d up .
後續內容同上
密碼
在gitlab搭建好後,需要查看root賬户的初始密碼,當一些密碼忘記後,也可以重置密碼
-
查看root初始
# 查看root初始密碼 sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
其實gitlab的初始密碼就存儲在/etc/gitlab/initial_root_password這個文件裏,由於我們掛載了卷,你也可以在宿主機上查看。
-
重置密碼,這裏以root賬户為例,修改數據庫重置(實際情況對於root賬户沒忘的話,可以用root賬户重置其它賬户的密碼)
# https://docs.gitlab.cn/jh/security/reset_user_password.html # 進入gitlab容器中 docker exec -it gitlab bash # 使用gitlab-rails gitlab-rails console -e production # id為1的是root user = User.where(id: 1).first user.password = 'xxxxx' user.password_confirmation = 'xxxx' user.save # 保存退出後,如果登不上,則需要重載配置
域名與證書
gitlab除了可以使用ip地址外,也可以自定義域名,也可以使用https,並認證自簽證書,整個過程主要分為以下步驟:
- 添加域名:可以使用本機DNS映射域名
- 使用https:可選,如果你需要https
- 配置證書:可選,如果你啓用了https,需要提供證書,你可以使用自簽證書並信任
- 重載配置
以上相關配置都是在gitlab.rb配置文件中修改的,你可以在宿主機的 /srv/gitlab/config/gitlab.rb文件中進行修改,或進入容器中修改/etc/gitlab/config/gitlab.rb,二者是等價的。
配置域名
# vim /srv/gitlab/config/gitlab.rb
# 使用域名 https://gitlab.ihengshuai.com (這裏使用了https),域名自行修改
external_url 'https://gitlab.ihengshuai.com'
在你的主機上添加HOST記錄,進行映射
# vim /etc/hosts
192.168.10.10 gitlab.ihengshuai.com
開啓https
# vim /srv/gitlab/config/gitlab.rb
nginx['client_max_body_size'] = '250m'
# 強制HTTPS
nginx['redirect_http_to_https'] = true
nginx['redirect_http_to_https_port'] = 80
ssl證書配置
當你開啓了https需要配置ssl證書(如果沒有可以跳過),你可以使用相關雲廠商(阿里雲、騰訊雲...)提供的免費證書,也可以自簽證書。
-
生成證書,下面以OpenSSL自簽證書為例:
# 使用OpenSSL簽發證書 # 1. 生成服務器私鑰 (domain.com.key) domain.com 隨便起的名字 openssl genrsa -out domain.key 4096 # 2.生成證書籤名請求(CSR) domain.com.csr # 生成 CSR 的過程中,會提示輸入一些信息,其中一個提示是 Common Name (e.g. YOUR name), # 這個非常重要,這一項應填入 FQDN(Fully Qualified Domain Name)完全合格域名/全稱域名, # 如果您使用 SSL 加密保護網絡服務器和客户端之間的數據流, # 舉例被保護的網站是 https://test.chinacloudsites.cn, # 那麼此處 Common Name 應輸入 test.chinacloudsites.cn openssl req -new -key domain.key -out domain.csr # 3.使用上一步的證書籤名請求籤發證書 openssl x509 -req -days 365 -in domain.csr -signkey domain.key -out domain.crt將以上的domain替換成你想都要的域名如:gitlab.example.com
這裏我寫成了一個腳本:
# auto-cetificate.sh #!/bin/bash echo "請使用sudo運行以獲取系統權限!" echo "請輸入域名:" read userdomain # 啥都不輸退出 if [ ! "$userdomain" ]; then exit fi openssl genrsa -out $userdomain.key 4096 openssl req -new -key $userdomain.key -out $userdomain.csr openssl x509 -req -days 365 -in $userdomain.csr -signkey $userdomain.key -out $userdomain.crt echo echo "Generate success!" echo # 將本地域名寫入host echo 需要將域名寫入host嗎[yes/no]? read confirm_read_host if [ "$confirm_read_host" != "yes" ]; then exit fi echo 需要保持和證書域名相同不[yes/no]? read confirm_write_host if [ "$confirm_write_host" == "no" ]; then echo 請填寫待寫入host的域名 read custom_host_domain cp /etc/hosts /etc/hosts.old echo "127.0.0.1 $custom_host_domain" >>/etc/hosts exit fi cp /etc/hosts /etc/hosts.old echo "127.0.0.1 $userdomain" >>/etc/hosts echo "Write success!" sleep 1當創建完以上文件後,需要將其加權限,然後執行腳本即可:
chmod +x ./auto-cetificate.sh # 執行 ./auto-cetificate.sh執行後根據提示一步一步填寫相關內容
-
配置證書
# vim /srv/gitlab/config/gitlab.rb # https證書 nginx['ssl_certificate'] = "/etc/gitlab/ssl/domain.crt" nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/domain.key" # 用默認 nginx['ssl_ciphers'] = xxx # 需要關閉這個 letsencrypt['enable'] = false這裏的
domain改為你自己生成的域名,以上需要使用.key和.crt兩個文件,你可以把相關文件移至/srv/gitlab/ssl,這裏容器中gitlab的位置為/etc/gitlab/ssl
當以上工作都做好了,需要重啓加載配置並重新啓動便會配置成功(這裏可以看下一小節)
最後使用https和域名訪問,由於自簽證書不安全,你需要忽略安全提示即可
至此https配置成功了
配置重載
重載配置有兩種:在外部直接docker restart和進入容器中使用gitlab-ctl進行重新啓動
-
外部重啓
docker restart gitlab -
進入容器中
# 進入容器 docker exec -it gitlab bash # 1.使用gitlab-ctl重啓加載配置 gitlab-ctl reconfigure #日誌... (up to date) Recipe: gitlab::gitlab-rails * execute[clear the gitlab-rails cache] action run - execute /opt/gitlab/bin/gitlab-rake cache:clear Recipe: nginx::enable * runit_service[nginx] action restart (up to date) Recipe: monitoring::grafana * runit_service[grafana] action restart (up to date) Running handlers: Running handlers complete Chef Infra Client finished, 9/735 resources updated in 20 seconds gitlab Reconfigured! # 2.重新啓動 gitlab-ctl restart
這裏推薦使用第二種方式
Centos安裝
這裏我的虛擬機為Centos7.9 arm架構系列
後續更新...
由於圖片和格式解析問題,為了更好閲讀體驗可前往 閲讀原文