1. 程式人生 > >群暉DS218+部署GitLab

群暉DS218+部署GitLab

### 歡迎訪問我的GitHub [https://github.com/zq2599/blog_demos](https://github.com/zq2599/blog_demos) 內容:所有原創文章分類彙總及配套原始碼,涉及Java、Docker、Kubernetes、DevOPS等; ### 起因是懶 最近開始折騰GitLab的CI功能,就打算在家部署一個GitLab,通常做法是開啟電腦,啟動GitLab,用完再關閉電腦,總覺得這些操作挺麻煩(您想罵我懶麼?您罵得對.....) ### 群暉解決煩惱 1. 家裡有臺群暉DS218+,從不關機,為全家提供穩定的圖片和視訊服務,之前已在上面部署了maven私服、MySQL,執行得很穩定,今天就把GitLab也部署在上面吧,今後可以隨時想用就用,算得上懶人救星了。 2. 下圖是DS218+剛買來的樣子,兩塊NAS硬碟,一直在穩定服務: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202012/485422-20201221075648254-421450052.png) 3. 下圖是網購的記憶體條,現在一共2+8=10G記憶體,記憶體充足才是敢折騰的底氣: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202012/485422-20201221075649003-1570639250.png) ### 前文連結 之前折騰群暉的記錄: 1. [群暉DS218+部署mysql](https://blog.csdn.net/boling_cavalry/article/details/105460567) 2. [群暉DS218+部署kafka](https://blog.csdn.net/boling_cavalry/article/details/105462692) 3. [群暉DS218+做maven私服(nexus3)](https://blog.csdn.net/boling_cavalry/article/details/105458466) 4. [K8S使用群暉DS218+的NFS](https://blog.csdn.net/boling_cavalry/article/details/105465233) 5. [群暉DS218+部署Harbor(1.10.3)](https://xinchen.blog.csdn.net/article/details/106962214) ### 思路 其實操作很簡單:GitLab的部署是基於docker-compose的,群暉已帶有docker-compose了,按照官方的部署指南操作即可,以下幾處是要注意的地方: 1. 部署操作需要管理員許可權,所以不在網頁上操作了,而是SSH登入後臺進行操作; 2. GitLab最好是用域名訪問,如果用IP就意味著檔案訪問地址中帶有IP,一旦IP變了,原有的檔案訪問地址就無效了 ### 環境資訊 1. 群暉系統:DSM 6.2.2-24922 Update 4 2. GitLab:Community Edition 13.0.6 ### 配置host GitLab中的檔案都有訪問地址,用GitLab伺服器的IP作為這個地址顯然是不合適的(如果GitLab伺服器的IP變了這個檔案的訪問地址就無效了),所以以下兩點需要滿足: 1. 為GitLab伺服器準備域名,這裡就是給群暉的IP地址準備域名:gitlab.synology.com 2. 確保群暉自己能通過域名訪問到GitLab 3. 確保所有訪問者都能通過域名訪問到GitLab 4. 一般是修改訪問者的hosts檔案來達到域名訪問的目標,我這裡為了省事兒,是在路由器裡配置的:192.168.50.43 gitlab.synology.com ### 允許SSH登入 先要設定允許SSH後臺登入: 1. 如下圖紅框的操作: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202012/485422-20201221075649560-999907065.png) 2. 如下圖,勾選啟用SSH功能,埠就用22: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202012/485422-20201221075649923-155807049.png) 3. 現在用SSH終端即可登入群暉了,我這裡是在windows電腦上用Xshell6登入的,您可以選用任意SSH終端工具,賬號密碼就是能登入群暉的賬號密碼,如下圖,登入後,就可以使用日常的linux命令了: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202012/485422-20201221075650289-797865372.png) 4. 注意上圖的紅框,登入賬號的home目錄是/var/services/homes/zq2599 ### 部署 1. 建立docker-compose.yml檔案,內容如下(大多數內容可以直接使用,需要修改的地方稍後會說): ```shell version: '2.3' services: redis: restart: always image: redis:5.0.9 command: - --loglevel warning volumes: - redis-data:/var/lib/redis:Z postgresql: restart: always image: sameersbn/postgresql:11-20200524 volumes: - postgresql-data:/var/lib/postgresql:Z environment: - DB_USER=gitlab - DB_PASS=password - DB_NAME=gitlabhq_production - DB_EXTENSION=pg_trgm gitlab: restart: always image: sameersbn/gitlab:13.0.6 depends_on: - redis - postgresql ports: - "10080:80" - "10022:22" volumes: - gitlab-data:/home/git/data:Z healthcheck: test: ["CMD", "/usr/local/sbin/healthcheck"] interval: 5m timeout: 10s retries: 3 start_period: 5m environment: - DEBUG=false - DB_ADAPTER=postgresql - DB_HOST=postgresql - DB_PORT=5432 - DB_USER=gitlab - DB_PASS=password - DB_NAME=gitlabhq_production - REDIS_HOST=redis - REDIS_PORT=6379 - TZ=Asia/Kolkata - GITLAB_TIMEZONE=Kolkata - GITLAB_HTTPS=false - SSL_SELF_SIGNED=false - GITLAB_HOST=gitlab.synology.com - GITLAB_PORT=10080 - GITLAB_SSH_PORT=10022 - GITLAB_RELATIVE_URL_ROOT= - GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string - GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string - GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alphanumeric-string - GITLAB_ROOT_PASSWORD= - GITLAB_ROOT_EMAIL= - GITLAB_NOTIFY_ON_BROKEN_BUILDS=true - GITLAB_NOTIFY_PUSHER=false - [email protected] - [email protected] - [email protected] - GITLAB_BACKUP_SCHEDULE=daily - GITLAB_BACKUP_TIME=01:00 - SMTP_ENABLED=false - SMTP_DOMAIN=www.example.com - SMTP_HOST=smtp.gmail.com - SMTP_PORT=587 - [email protected] - SMTP_PASS=password - SMTP_STARTTLS=true - SMTP_AUTHENTICATION=login - IMAP_ENABLED=false - IMAP_HOST=imap.gmail.com - IMAP_PORT=993 - [email protected] - IMAP_PASS=password - IMAP_SSL=true - IMAP_STARTTLS=false - OAUTH_ENABLED=false - OAUTH_AUTO_SIGN_IN_WITH_PROVIDER= - OAUTH_ALLOW_SSO= - OAUTH_BLOCK_AUTO_CREATED_USERS=true - OAUTH_AUTO_LINK_LDAP_USER=false - OAUTH_AUTO_LINK_SAML_USER=false - OAUTH_EXTERNAL_PROVIDERS= - OAUTH_CAS3_LABEL=cas3 - OAUTH_CAS3_SERVER= - OAUTH_CAS3_DISABLE_SSL_VERIFICATION=false - OAUTH_CAS3_LOGIN_URL=/cas/login - OAUTH_CAS3_VALIDATE_URL=/cas/p3/serviceValidate - OAUTH_CAS3_LOGOUT_URL=/cas/logout - OAUTH_GOOGLE_API_KEY= - OAUTH_GOOGLE_APP_SECRET= - OAUTH_GOOGLE_RESTRICT_DOMAIN= - OAUTH_FACEBOOK_API_KEY= - OAUTH_FACEBOOK_APP_SECRET= - OAUTH_TWITTER_API_KEY= - OAUTH_TWITTER_APP_SECRET= - OAUTH_GITHUB_API_KEY= - OAUTH_GITHUB_APP_SECRET= - OAUTH_GITHUB_URL= - OAUTH_GITHUB_VERIFY_SSL= - OAUTH_GITLAB_API_KEY= - OAUTH_GITLAB_APP_SECRET= - OAUTH_BITBUCKET_API_KEY= - OAUTH_BITBUCKET_APP_SECRET= - OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL= - OAUTH_SAML_IDP_CERT_FINGERPRINT= - OAUTH_SAML_IDP_SSO_TARGET_URL= - OAUTH_SAML_ISSUER= - OAUTH_SAML_LABEL="Our SAML Provider" - OAUTH_SAML_NAME_IDENTIFIER_FORMAT=urn:oasis:names:tc:SAML:2.0:nameid-format:transient - OAUTH_SAML_GROUPS_ATTRIBUTE= - OAUTH_SAML_EXTERNAL_GROUPS= - OAUTH_SAML_ATTRIBUTE_STATEMENTS_EMAIL= - OAUTH_SAML_ATTRIBUTE_STATEMENTS_NAME= - OAUTH_SAML_ATTRIBUTE_STATEMENTS_USERNAME= - OAUTH_SAML_ATTRIBUTE_STATEMENTS_FIRST_NAME= - OAUTH_SAML_ATTRIBUTE_STATEMENTS_LAST_NAME= - OAUTH_CROWD_SERVER_URL= - OAUTH_CROWD_APP_NAME= - OAUTH_CROWD_APP_PASSWORD= - OAUTH_AUTH0_CLIENT_ID= - OAUTH_AUTH0_CLIENT_SECRET= - OAUTH_AUTH0_DOMAIN= - OAUTH_AUTH0_SCOPE= - OAUTH_AZURE_API_KEY= - OAUTH_AZURE_API_SECRET= - OAUTH_AZURE_TENANT_ID= volumes: redis-data: postgresql-data: gitlab-data: ``` 2. 上述配置中,有四處地方需要您修改; - 第一處:gitlab.ports,這裡用宿主機的10080埠對映容器的http埠,宿主機的10022埠對映容器的ssh埠 - 第二處:gitlab.environment.GITLAB_PORT,要和前面對映的10080埠一致,這樣GitLab上的檔案url中會帶有10080埠,確保在網頁上可以正常訪問檔案 - 第三處:gitlab.environment.GITLAB_SSH_PORT,要和前面對映的10022埠一致,這樣GitLab上給出的倉庫地址中會帶有10022,您在客戶端使用git clone命令時才連線GitLab成功 - 第四處:gitlab.environment.GITLAB_HOST,配置成前面準備好的host:gitlab.synology.com - 其他引數我這裡暫時無需修改,請您自己酌情調整,參考文件:https://github.com/sameersbn/docker-gitlab 3. 再次確認群暉上的域名是可以訪問的(192.168.50.43是群暉的IP地址): ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202012/485422-20201221075650809-1531196646.png) 4. 執行命令sudo docker-compose up -d,完成GitLab的部署和啟動; 5. 等待啟動成功,群暉的硬體效能一般,我這裡大約等待10分鐘左右(期間網頁訪問會出現502錯誤,等啟動成功後就好了); 6. 啟動成功後,訪問地址http://gitlab.synology.com:10080,會提示設定root賬號的密碼: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202012/485422-20201221075651151-679416067.png) 7. 設定好密碼後,就可以用root賬號登入了: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202012/485422-20201221075651389-303319465.png) 8. 如下圖,請另外註冊一個賬號,在後面的實際操作中用到,我這邊註冊賬號是zq2599,郵箱[email protected] ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202012/485422-20201221075651781-480027601.png) ### 驗證:建立專案 1. 用新建賬號登入,點選Create a project: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202012/485422-20201221075652140-2059483413.png) 2. 新建倉庫的資訊如下: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202012/485422-20201221075652491-1474108392.png) 3. 在新倉庫的頁面,下圖紅框中是該倉庫的地址,請記下來,稍後用到: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202012/485422-20201221075652793-2141351792.png) ### 驗證:提交程式碼 1. 找一臺電腦來驗證提交程式碼,我這裡找了個CentOS7伺服器; 2. 安裝git:yum install -y git 3. 建立ssh key,執行ssh-keygen -t rsa -C "[email protected]",然後一路回車: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202012/485422-20201221075653231-242618102.png) 4. 賬號和郵箱做全域性配置,執行如下命令: ```shell git config --global user.name "zq2599" \ && git config --global user.email [email protected] ``` 5. 將檔案~/.ssh/id_rsa.pub的內容完整複製到如下位置: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202012/485422-20201221075653592-1257809585.png) 6. 回到客戶端機器上,克隆專案試試: ```shell git clone ssh://[email protected]:10022/zq2599/test001.git ``` 7. 如下圖,程式碼下載成功: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202012/485422-20201221075653981-364966456.png) 8. 再來試試修改內容能否成功提交,操作命令如下圖所示: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202012/485422-20201221075654403-1689501308.png) 9. 再去網站上看看,內容已經成功提交: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202012/485422-20201221075654698-520402956.png) 至此,群暉伺服器上已成功安裝了GitLab,接下來可以愉快的折騰GitLab CI了; ### 你不孤單,欣宸原創一路相伴 1. [Java系列](https://xinchen.blog.csdn.net/article/details/105068742) 2. [Spring系列](https://xinchen.blog.csdn.net/article/details/105086498) 3. [Docker系列](https://xinchen.blog.csdn.net/article/details/105086732) 4. [kubernetes系列](https://xinchen.blog.csdn.net/article/details/105086794) 5. [資料庫+中介軟體系列](https://xinchen.blog.csdn.net/article/details/105086850) 6. [DevOps系列](https://xinchen.blog.csdn.net/article/details/105086920) ### 歡迎關注公眾號:程式設計師欣宸 > 微信搜尋「程式設計師欣宸」,我是欣宸,期待與您一同暢遊Java世界... [https://github.com/zq2599/blog_demos](https://github.com/zq2599/blo