# Gitlab 架設 ###### Tags: `服務安裝流程` ## 安裝流程 ### 安裝相關套件:openssh-server(加密通訊)、ca-certificates(認證相關)、postfix(郵件伺服器) ```shell # apt-get install openssh-server ca-certificates postfix ``` ### 下載Gitlab套件包 ```shell # curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash ``` ### 安裝 Gitlab ```shell # apt-get update //記得更新後才找得到剛剛下載的套件包 # apt-get install gitlab-ce //gitlab-ce為免費版 gitlab-ee為企業版 ``` ### 配置環境 ```shell # gitlab-ctl reconfigure ``` ### 設定網址 #### 進入設定檔 ```shell # vi /etc/gitlab/gitlab.rb ``` #### 在設定檔裡找到external_url,接著在後面修改自己的ip #### 例如 ```shell # external_url 'http://192.168.56.1:80' ``` ### 信箱設定  ### 時區修改  #### 在最後記得再次配置環境 ## 備份還原 ### 檔案路徑:/var/opt/gitlab/backups #### 備份: ```shell # gitlab-rake gitlab:backup:create ``` #### 還原: ```shell //停止相關數據連線服務 # gitlab-ctl stop unicorn # gitlab-ctl stop sidekiq //還原檔案 # gitlab-rake gitlab:backup:restore BACKUP=[備份檔案編號] //啟動 Gitlab 服務 # gitlab-ctl start ``` ### SSL 配置 #### 啟用 ssl 模塊 ```shell= sudo a2enmod ssl ``` #### 安装openssl ```shell= sudo apt-get install openssl ``` #### 建立CA簽名 ```shell= openssl genrsa -out server.key 2048 ``` #### 建立CSR ```shell= openssl req -new -key server.key -out server.csr ``` #### 自己簽發證書 ```shell= openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt ``` #### 複製到對應目錄 ```shell= sudo cp server.crt /etc/ssl/certs sudo cp server.key /etc/ssl/private ``` ##### 在底下加入内容 ``` SSLEngine On SSLOptions +StrictRequire SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key ``` ### A+級配置  #### 更新OpenSSL 版本 ```shell= # 下載openssl 1.1.1 wget https://www.openssl.org/source/openssl-1.1.0g.tar.gz # 解壓縮安裝檔至/usr/local/src tar -zxvf openssl-1.1.0g.tar.gz -C /usr/local/src # 切換到安裝資料夾 cd /usr/local/src/openssl-1.1.0g/ # 配置安裝環境 ./config #編譯 make #執行安裝 make install #安除舊版本資料夾,並把新版本作為新來源 rm /usr/bin/openssl & ln -s /usr/local/bin/openssl /usr/bin/openssl #透過自動安裝指令,啟用新版OpnSSL sudo apt-get install --only-upgrade libssl1.0.0 openssl # 重新啟動gitlab服務 sudo gitlab-ctl reconfigure # 查看OpenSSL版本 openssl version ``` 配置設定檔/etc/gitlab/gitlab.rb ```shell= nginx['ssl_certificate'] = "/etc/gitlab/ssl/server.cer" nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/server.key" nginx['ssl_ciphers'] = 'ECDHE-RSA-AES256-CBC-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4' nginx['ssl_honor_cipher_order'] = "on" nginx['ssl_prefer_server_ciphers'] = "on" nginx['ssl_protocols'] = "TLSv1.2" nginx['ssl_session_cache'] = "shared:SSL:10m" nginx['ssl_session_timeout'] = "30m" ``` #### 問題: #### 第一點 : **nginx跟apache不同,nginx沒有apache設定檔裡的SSLCaCertificateFile這個參數 所以我們必須將原本的crt後面加上ca的crt** **意思是說原本設定是這樣 SSLCertificateFile /cert/server.cer SSLCertificateKeyFile /cert/server.key SSLCertificateChainFile /cert/uca.cer** **由於nginx沒有SSLCertificateChainFile所以把server.cer和uca.cer 合併起來以後設定在SSLCertificateFile** #### 第二點 : **兩個crt內容需要有一行空格** **EX:** **-----END CERTIFICATE-----** **-----BEGIN CERTIFICATE-----** #### 參考下面這個文章 #### https://www.jazz321254.com/nginx-ssl/ ### 參考網頁: - **[GitLab安裝與基本設定教學](https://xenby.com/b/131-%E6%8E%A8%E8%96%A6-gitlab%E5%AE%89%E8%A3%9D%E8%88%87%E5%9F%BA%E6%9C%AC%E8%A8%AD%E5%AE%9A%E6%95%99%E5%AD%B8)** - **[Gitlab備份與恢復、遷移與升級](https://www.itread01.com/content/1527863887.html)** -
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up