GitLabの更新 その1

事の始まり

研究室のGitLabがかなり古かった
その時にまとめたブログ

2016/09/10での最新版:8.11.5
研究室のGitlab:8.1.3

Webから、アーカイブ(zipでまとめてくれる)がダウンロードできないバグがあったので、夏休み中にUpdateしたいと思った

状況確認

研究室のGitlabはVPSで動いている

cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.5 LTS"

研究室にGitlabを導入したのは先輩で多少アプデしてそのままのようだ

拾えた情報

  • omnibusのGitLabを導入
  • nginxはaptで入れたものを使用
  • https(port番号443)のみで動かしてる

GitLabの構成

ディレクトリ構成

  • /opt/gitlab
  • /var/opt/gitlab
  • /var/log/gitlab
  • /etc/gitlab

ソフトウェア構成

  • git
  • Ruby
  • Ruby on Rails
  • runit
    • スーパーデーモン
  • nginx
    • フロントエンド Web サーバー (無効化可能)
    • デフォルト TCP ポート: *:80
  • Unicorn
    • バックエンド Web サーバー (Rails 実行環境)
    • デフォルト TCP ポート: 127.0.0.1:8080
    • デフォルト UNIX ドメインポート: /var/opt/gitlab/gitlab-workhorse/socket
  • PostgreSQL
    • デフォルトポート: /tmp/.s.PGSQL.5432
  • Redis
  • Chef
  • そのほか

詳細は以下のページ

https://docs.gitlab.com/ce/development/architecture.html

設定ファイルの場所

  • /etc/gitlab/gitlab.rb
    • GitLabの各種設定を行う
  • /etc/nginx/conf.d/gitlab.conf
    • このGitlabはGitlab内蔵のnginxを使っていないのでここで設定

UpdateするまえにBackup

sudo gitlab-rake gitlab:backup:create

/var/opt/gitlab/backups/以下にtar形式でBackupされる

Update

バージョンによって多少手順が違うらしい

Updating GitLab via omnibus-gitlab

とりあえず、Updating from GitLab 6.6 and higher to 7.10 or newerを見ながらやった

apt-getすればいいだけだった
アクセスしたら500エラーになって焦ったけど、Ubuntuを再起動したら直った

不具合

不具合を列挙する(修正済みを含む)

ログアウトするとGitLabに入れなくなる

[修正済み]
他の不具合を修正するためにいろいろ設定をいじったらなった
たぶん、port周りの設定をミスってた

Gravatar表示ができない

先生はGravatarでアイコンを表示していたのだが、表示されなくなる不具合
原因は、フロントエンド Web サーバー(nginx)の実行ユーザーが指定されてなかったせい
/etc/gitlab/gitlab.rb

web_server['external_users'] = ['www-data']

と追記

アーカイブがダウンロードできない

[修正済み]
一番の問題だった
ググっても同じ不具合が起こっている人がいない(英語圏も含め)

後述するRAW表示や個別のファイルダウンロードができないというlssuesがあった

Getting raw files over http/https not working in 8.5.x

Vhost (server block)

こいつのVhost (server block)をnginxの設定(/etc/nginx/conf.d/gitlab.conf)に加えたらアーカイブのダウンロードが可能になった

RAW表示や個別のファイルダウンロードができない

[未解決]
原因不明。上記のissuesを修正すればいいと思ったのだが、直らず
-> 直ってた。詳しくは siragumohuin.hatenablog.com

怪しい部分「gitlab-workhorse」

workhorseって何?

gitlab-workhorse

gitlab-workhorseはファイルのダウンロード、ファイルのアップロード、Gitのpush/pullとかGitのアーカイブダウンロードなどのデカイHTTP要求を処理するらしい

高負荷に耐えられるように設置されたという歴史があるっぽい

A Brief History of GitLab Workhorse