Gitlab의 Omnibus 버전을 설치하고 Apache에서 실행해보십시오 (이어서 SSL 및 자동 백업도)

Gitlab의 Omnibus 버전을 설치하고 Apache에서 실행해보십시오 (이어서 SSL 및 자동 백업도)

2022-10-05 last update

5 minutes reading 리눅스 Git 아파치 nginx GitLab
조사하면 이런 기사가 상당히 있었지만, 이미 낡은 버전이거나, 정보가 흩어져 있거나 하기 때문에, 최신 버전으로 해 보았을 경우의 메모.
어쩌면 불필요한 설정이 있을지도 모르지만, 일단 이것으로 동작 확인은 OK.
이하에 설정 파일 포함한 전모를 기재.

설치 환경


  • 서버
  • CentOS 6.5
  • 메모리는 우선 gitlab 추천의 2GB


  • Gitlab Omnibus 패키지 설치



    Gitlab의 HP 에서 대상 OS를 선택하면 설치 방법이 나온다.
    Gitlab 본체의 인스톨은 상기와 같이 해 가면 순조롭게 완료한다(정말 2분으로 끝난다)

    이번에는 GitLab Community Edition 8.7.0의 최신판을 설치했다.

    Omnibus 패키지라면 postgres도 nginx 모두 필요한 것을 설치, 설정해주기 때문에 매우 편하지만, 이미 설치하고 있는 postgres나 nginx를 사용하는 경우는 스스로 설정해야 하기 때문에 약간 문턱이 높아진다 .

    Apache에서 운영



    Gitlab은 nginx를 웹 서버로 작동하지만 이미 사용중인 서버가 있고 Apache를 사용하여 80 번 포트로 액세스하고 싶다면 조금 한 번 더 추가해야 할 것 같습니다.

    그래서 리버스 프록시를 이용하여 Apache에서 받은 요청을 nginx에 전달함으로써 실현시킨다.

    gitlab 설정 변경 (SSL도 지원)



    이번 요청의 수락이 되는 URL을 htps : // 기 t. 왓 x. 이 m 로 한다
  • /etc/gitlab/gitlab.rb
  • external_url = 'https://git.xxxxx.com' # urlの設定。今回はhttps
    ・・・
    nginx['listen_addresses'] = ["0.0.0.0", "[::]"]
    nginx['listen_port'] = 4080 # nginxをポート4080で受けるように設定
    ・・・
    nginx['ssl_certificate'] = "path_to_cert" # これいらないかも?
    nginx['ssl_certificate_key'] = "path_to_key" # これも
    ・・・
    # あとはsmptのところでメール送信のセットアップを行う
    

    ※ 설치 당초, external_url 부분에 "="가 붙어 있지 않았지만, 아무래도 기재하지 않으면 갈 수없는 모양
  • /var/opt/gitlab/nginx/conf/gitlab-http.conf
  • server {
      listen 0.0.0.0:4080;
      listen [::]:4080;
      server_name git.xxxxx.com; # ここを追記
    
  • /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
  •   gitlab:
        ## Web server settings (note: host is the FQDN, do not include http://)
        # host:
        host: 'git.xxxxx.com'
        port: 443
        https: true
    
        # Uncommment this line below if your ssh host is different from HTTP/HTTPS one
        # (you'd obviously need to replace ssh.host_example.com with your own host).
        # Otherwise, ssh host will be set to the `host:` value above
        ssh_host:  'git.xxxxx.com'
        url: https://git.xxxxx.com
    

    마지막으로 gitlab-ctl reconfigre 에서 설정을 로드하고 gitlab-ctl restart 로 다시 시작합니다.

    Apache 설정



    80번 포트측(HTTP)



    HTTPS로 리디렉션
    <VirtualHost *:80>
        ServerName git.xxxxx.com
        RewriteEngine On
        RewriteCond %{HTTPS} !=on
        RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [R]
    </VirtualHost>
    

    443번 포트측(HTTPS)



    여러 가지 생략
    <VirtualHost *:443>
        ServerName git.xxxxx.com:443
        SSLEngine on
        SSLCertificateFile path_to_cert
        SSLCertificateKeyFile path_to_key
        SSLCertificateChainFile path_to_chain # 中間証明があれば
        SSLProxyEngine On
        ProxyRequests off
        ProxyPass / http://127.0.0.1:4080/
        ProxyPassReverse / http://127.0.0.1:4080/
        ProxyPass /assets http://127.0.0.1:4080/assets
        ProxyPassReverse /assets http://127.0.0.1:4080/assets
    </VirtualHost>
    
    /etc/init.d/httpd restart
    # sslのpassを入力
    

    이제 htps : // 기 t. 왓 x. 이 m

    자동 백업 설정



    gitlab의 백업은 명령 한 줄에서 얻을 수 있습니다.
    /opt/gitlab/bin/gitlab-rake gitlab:backup:create
    

    이제/var/opt/gitlab/backups에 tar로 백업이 생성됩니다.
    자세한 내용은 여기에 설명되어 있습니다.

    백업 보존 기간 설정



    다시/etc/gitlab/gitlab.rb로 설정하는 부분이 있기 때문에 아래와 같이 설정
    gitlab_rails['backup_keep_time'] = 604800 # 7日間分保存する
    

    cron으로 하루 1회 자정 2시에 백업을 한다
    0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
    

    원격 서버에 백업



    svn이면 svnsync 등 편리한 것이 있었지만, 그다지 생각하지 않기 때문에 rsync를 사용하여 원격 서버에 tar 파일을 디렉토리 별 백업.
    rsync -avz --delete /var/opt/gitlab/backups/ [remoteのIP]::gitlab
    

    gitlab의 백업 작업과 함께 스크립트를 짜두면 백업하고 나서 원격으로 저장할 수 있다. 다만, 이것이라면 백업을 취할 수 없는 나날이 계속되었을 경우에 모두 사라져 버리므로 파일 마다 백업하는 편이 좋을 것 같다.

    원격 서버 측 설정
    rsync를 설치하고 아래와 같이 설정.
  • /etc/rsyncd.conf
  • [gitlab] # ここは上記の[remoteのIP]::gitlabの"gitlab"と同じ命名にする
    path = /path/to/backup
    hosts allow = [バックアップ元サーバのIP]
    hosts deny = *
    list = true
    uid = root
    gid = root
    read only = false
    

    비고


    https://git.xxxxx.com/gitlab 와 같이, 서브 디렉토리로 운용하려고 했지만, 최신판의 8.7. 0에서는 버그가 있는 것 같아, 레이아웃 무너짐이 발생하고 있었다.
    서브 디렉토리 운용하는 경우는 그것보다 낮은 버젼이면, 문제 없게 설정할 수 있었다. (설정이 조금 귀찮아)