Github
を使って、オープンな環境でいろんな人と交流をもって開発するのが一番良い刺激になるとは思うものの、クローズドなソース管理がしたいとなると、自前で用意する必要がある。
以下のサイトで非常に詳しく丁寧に比較・紹介されており、GitLabを使ってみることに決定。構築手順などの備忘録を残しておく。
GitHubのようなサイトを独自に運用できる「GitLab」や「GitBucket」を使ってみよう
GitLabのインストール
以下のサイトで、プラットフォームを選択して手順どおりに進めば、最新版のGitLab
をダウンロードしてインストールまで完了できる。
=="3. Configure and start GitLab"==を実行する前に、インストール環境に合わせた
設定が必要になる。
GitLabの設定
とりあえず基本設定として、以下の環境構築を目指す。
- https、ポート番号8080番で起動させる。
- 稼働中のプロキシサーバーから
ポートフォワード
によって、外部からは== https://server.hoge.com ==からアクセスして上記URLへ転送されるようにする。 - Gitリポジトリ、PostgresのDB、各種アップロードファイルなどの配置先を変更して、
/home/gitlab
とする。(ほかはデフォルトの/var/opt/gitlab
)
ポートフォワードに関しては、過去の投稿を参照
https, http両対応のproxyサーバー(ポートフォワード)
https通信するための証明書発行は、
設定ファイルの場所
> /etc/gitlab/gitlab.rb
外部URLの設定 (external_url)
external_url 'https://hoge.com:8080'
証明書の設定
HTTPSで接続するためには、Ngnix
で使用する証明書(中間証明書を含む)と秘密鍵を設定する。以前の投稿で無料の証明書を取得しているので、これを流用する。 注意点としては、ドメイン証明書に中間証明書が含まれているfullchain.pem
を指定する。
nginx['ssl_certificate'] = "/etc/letsencrypt/live/hoge.com/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/hoge.com/privkey.pem"
Gitリポジトリ、DBデータ、バックアップの配置先
gitlab-ctl reconfigureの注意点
gitlab.rb
を編集した後、後述するgitlab-ctl reconfigure
を実行すると、設定内容をもとにGitlabを構成する各種サーバーアプリの設定を変更し、再起動まで実施してくれる。なので設定を変更した場合は、つどgitlab-ctl reconfigure
を実施するだけで良い。
ただし、リポジトリの場所やDBデータの配置先などを、初回のreconfigure後にgitlab.rbを変更して、再度reconfigureを実施しても、PostgresのDBファイルの移動などは行ってもらえなかった。(そのまま動作させるとどうなるかは不明)なので、gitリポジトリの場所やPostgresのDBイメージの場所などは、初回reconfigureの前に決定&設定しておくようにする。
(もちろん手順を踏めば稼動後の移動はもちろんできる)
Option | Location | Purpose |
---|---|---|
git_data_dirs() | /home/gitlab/git-data | Git repositories directory |
gitlab_rails['shared_path'] | /home/gitlab/gitlab-rails/shared | Large object directories |
gitlab_rails['uploads_directory'] | /home/gitlab/gitlab-rails/uploads | User attachments |
postgresql['data_dir'] | /home/gitlab/postgresql/data | DB data |
gitlab_rails['backup_path'] | /home/gitlab/backups | Backup data store |
GitLabのメールユーザ追加
システムからお知らせメールなどを飛ばしたり、その他のGitLab内部で動作するための専用ユーザを作成しておく。どうもデフォルトだとgit
というユーザで動作するようだが、別のユーザーを作成しておく。
> useradd sysadmin
> mkdir /home/sysadmin
Gitlabメール設定
公式サイトやその他を参考に設定
GitLab 8.2 + HTTPS 設定メモ(CentOS7)
### Email Settings
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'sysadmin@usagi1975.com'
gitlab_rails['gitlab_email_display_name'] = 'GitLab'
gitlab_rails['gitlab_email_reply_to'] = 'sysadmin@usagi1975.com'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.usagi1975.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "sysadmin"
gitlab_rails['smtp_password'] = "sysadmin"
gitlab_rails['smtp_domain'] = "usagi1975.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'
GitLab 運用ユーザの設定
Changing the name of the Git user / group
基本変更しないほうがよさそう。ユーザ変更はやめておく。インストールした時点で各サーバー用のユーザは自動作成されてはいる。
データのホームディレクトリ
デフォルトでは、/var/opt/gitlab
以下にDBデータなどが作成される設定になっている。運用管理上、保存データは/home
以下に変更しておく。
設定の再構築 (gitlab-ctl reconfigure)
以下のコマンドで設定を構築する。変更があった場合も以下を実行すれば反映される。
最初の実行では、何も設定されていない状態なので、DBの構築などいろいろ実行される。
> sudo gitlab-ctl reconfigure
:
Running handlers:
Running handlers complete
Chef Client finished, 233/332 resources updated in 01 minutes 54 seconds
gitlab Reconfigured!
reconfigure
を実行すると、デーモンも起動される。
ちゃんと起動したかどうかは、status
コマンドで確認する。すべてのサーバーが"run"になっていればとりあえず全部起動している。また"down"だとそのサーバーだけ起動していないことになる。設定など見直す必要がある。
> sudo gitlab-ctl status
run: gitlab-workhorse: (pid 1064) 165328s; run: log: (pid 1058) 165328s
run: logrotate: (pid 682) 3325s; run: log: (pid 1059) 165328s
run: nginx: (pid 6204) 735s; run: log: (pid 1061) 165328s
run: postgresql: (pid 1065) 165328s; run: log: (pid 1057) 165328s
run: redis: (pid 1063) 165328s; run: log: (pid 1055) 165328s
run: sidekiq: (pid 4054) 1473s; run: log: (pid 1060) 165328s
run: unicorn: (pid 4105) 1461s; run: log: (pid 1056) 165328s
gitlab-ctl reconfigure
を実行した直後の/home/gitlab
と/var/opt/gitlab
のフォルダ構成を示す。設定ファイルで指定したディレクトリ構成で作成されている。
/home/gitlab$ sudo du . -h --total
4.0K ./backups
4.0K ./git-data/repositories
8.0K ./git-data
4.0K ./gitlab-rails/shared/artifacts
4.0K ./gitlab-rails/shared/pages
4.0K ./gitlab-rails/shared/lfs-objects
16K ./gitlab-rails/shared
4.0K ./gitlab-rails/uploads
24K ./gitlab-rails
12K ./postgresql/data/pg_clog
68K ./postgresql/data/pg_stat_tmp
4.0K ./postgresql/data/pg_serial
12K ./postgresql/data/pg_notify
12K ./postgresql/data/pg_subtrans
4.0K ./postgresql/data/pg_xlog/archive_status
17M ./postgresql/data/pg_xlog
4.0K ./postgresql/data/pg_snapshots
456K ./postgresql/data/global
4.0K ./postgresql/data/pg_tblspc
12M ./postgresql/data/base/16385
6.0M ./postgresql/data/base/12037
6.1M ./postgresql/data/base/1
6.1M ./postgresql/data/base/12042
30M ./postgresql/data/base
12K ./postgresql/data/pg_multixact/offsets
12K ./postgresql/data/pg_multixact/members
28K ./postgresql/data/pg_multixact
4.0K ./postgresql/data/pg_twophase
47M ./postgresql/data
47M ./postgresql
47M .
47M 合計
こちらがデフォルトの/var/opt/gitlab
のディレクトリ。
/var/opt$ sudo du . -h --total
4.0K ./gitlab/nginx/proxy_temp
4.0K ./gitlab/nginx/fastcgi_temp
4.0K ./gitlab/nginx/scgi_temp
4.0K ./gitlab/nginx/client_body_temp
4.0K ./gitlab/nginx/proxy_cache
4.0K ./gitlab/nginx/uwsgi_temp
16K ./gitlab/nginx/conf
48K ./gitlab/nginx
12K ./gitlab/postgresql
8.0K ./gitlab/gitlab-shell
28K ./gitlab/logrotate/logrotate.d
36K ./gitlab/logrotate
8.0K ./gitlab/gitlab-workhorse
4.0K ./gitlab/gitlab-ci/builds
8.0K ./gitlab/gitlab-ci
64K ./gitlab/redis
4.0K ./gitlab/.ssh
4.0K ./gitlab/gitlab-rails/sockets
4.0K ./gitlab/gitlab-rails/working
4.0K ./gitlab/gitlab-rails/tmp
52K ./gitlab/gitlab-rails/etc
8.0K ./gitlab/gitlab-rails/upgrade-status
88K ./gitlab/gitlab-rails
292K ./gitlab
296K .
296K 合計
ログイン
本来は、external_url
で設定したURLでブラウザからアクセスできればOKだが、自身の環境ではプロキシサーバー経由でアクセスしてみる。
> https://server.hoge.com
最初に以下のような画面が表示されて、root(管理者)
ユーザーのパスワード
を変更する画面が表示される。(8文字以上)
変更が成功したら、とりあえずroot
ユーザーでログインできるか確認する。
下記の画面がでれば、とりあえずOKとする。
状態、再起動
再起動後、"OK"と出てもすぐにはアクセスできない。
しばらくしてからログインできるようなる。
> sudo gitlab-ctl status
run: gitlab-workhorse: (pid 31083) 6973215s; run: log: (pid 804) 9154596s
run: logrotate: (pid 26980) 3489s; run: log: (pid 806) 9154596s
run: nginx: (pid 31099) 6973214s; run: log: (pid 801) 9154596s
run: postgresql: (pid 31142) 6973213s; run: log: (pid 799) 9154596s
run: redis: (pid 31144) 6973213s; run: log: (pid 803) 9154596s
run: sidekiq: (pid 31156) 6973211s; run: log: (pid 800) 9154596s
run: unicorn: (pid 31193) 6973190s; run: log: (pid 805) 9154596s
> sudo gitlab-ctl restart
ok: run: gitlab-workhorse: (pid 2680) 1s
ok: run: logrotate: (pid 2689) 0s
ok: run: nginx: (pid 2696) 1s
ok: run: postgresql: (pid 2707) 0s
ok: run: redis: (pid 2716) 0s
ok: run: sidekiq: (pid 2722) 0s
ok: run: unicorn: (pid 2727) 0s
その他:GitLabのアンインストール
再度クリーンインストールするときは以下のように手動操作も加えて削除する。中途半端な状態で再インストールしようとすると、インストールスクリプトでエラーになるケースがあるので注意。
> sudo apt remove gitlab-ce
> sudo apt purge gitlab-ce
> sudo rm -rf /etc/gitlab
> sudo rm -rf /opt/gitlab
> sudo rm -rf /var/opt/gitlab
> sudo rm -rf /var/log/gitlab
> sudo rm -rf /home/gitlab