Git を用いたプロジェクト開発を複数人で行う場合、サーバーでレポジトリ管理を行えると便利です。何らかの事情で GitHub や Bitbucket を利用できない場合は、サーバーを構築して GitLab をインストールします。ここでは特に CentOS 6 の場合についてインストール手順をまとめます。
個人的な検証用途であれば Vagrant や VirtualBox を用いてサーバーを構築します。メモリが少ないとインストールに時間がかかったりします。
We also strongly recommend at least 4GB of free memory to run GitLab.
https://about.gitlab.com/installation/
GitLab Installation に記載の手順に従います。GitLab 専用の yum レポジトリをインストールするためのシェルスクリプトを実行します。
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
シェルスクリプトの内部では OS の判定などが行われます。CentOS は Red Hat Enterprise Linuxとの完全互換を目指したフリーのディストリビューションであり、以下のファイルで判定されます。
$ cat /etc/redhat-release
CentOS release 6.6 (Final)
インストールされた yum レポジトリの設定ファイルは以下の場所にあります。
ls /etc/yum.repos.d/gitlab_gitlab-ce.repo
gitlab-ce
をインストールします。
sudo yum info gitlab-ce
sudo yum install gitlab-ce
/opt/gitlab/
以下に nginx
, chef
, rails
, psql
, redis
等のファイルが設置されたことが確認できます。
rpm -ql gitlab-ce | less
以下のコマンドで chef
を実行して上記ソフトウェアをインストールします。
sudo gitlab-ctl reconfigure
前述のとおりメモリが少ないと以下のように 30 分もの時間がかかります。
...
Running handlers:
Running handlers complete
Chef Client finished, 362/511 resources updated in 30 minutes 17 seconds
gitlab Reconfigured!
[vagrant@localhost ~]$ free -m
total used free shared buffers cached
Mem: 458 442 15 8 1 55
-/+ buffers/cache: 385 72
Swap: 927 601 326
ポート番号の使用状況を netstat で調べると以下のようになっています。
sudo netstat -ltnp
ドキュメントにも記載のとおり、redis
や psql
は UNIX ドメインソケットで通信します。OS ユーザーの gitlab-redis
権限で sudo してインストール済みの redis-cli を用いて接続するには以下のようなコマンドを実行します。
sudo -u gitlab-redis /opt/gitlab/embedded/bin/redis-cli -s /var/opt/gitlab/redis/redis.socket
同様に psql
については以下のようになります。gitlabhq_production
データベースにソケットファイル経由で接続します。
sudo -u gitlab-psql /opt/gitlab/embedded/bin/psql -h /var/opt/gitlab/postgresql -d gitlabhq_production
ドキュメントを参照すると、以下のコマンドでも接続できることが記載されています。
sudo gitlab-rails dbconsole
接続
psql -h mydw.xxxx.us-east-1.redshift.amazonaws.com -p 5439 mydw username
データベース一覧 show databases
\l
ユーザ一覧 select user,host from mysql.user
\du
postgres
データベースへの切り換え use
\c postgres
テーブル一覧 show tables
\dt
テーブル情報 desc
\d emails
現在のコネクションに関する情報を表示
\conninfo
終了 quit
\q
ページャを無効化する
\pset pager
MySQL の \G
のように縦に表示する
\x
コマンドラインから実行
PGPASSWORD=xxxxxxxxxx psql -h mydw.xxxx.us-east-1.redshift.amazonaws.com -p 5439 mydw username -c "\dt"
postgresql.conf
の場所を探します。
ps auxw | grep postgres
ログ出力の設定を追加します。
sudo vim /etc/postgresql/10/main/postgresql.conf
logging_collector = on
log_directory = '/tmp/psql_log'
log_statement = 'all'
サービスを再起動します。
sudo systemctl restart postgresql.service
初期パスワードを求められます。ユーザー名は root
です。ログイン後に他の名前に変更できます。
インストール時に表示される以下のメッセージのとおり /etc/gitlab/gitlab.rb
を編集して再度 reconfigure すると設定を変更できます。公式ドキュメントを参考に設定します。
gitlab: GitLab should be reachable at http://localhost
gitlab: Otherwise configure GitLab for your system by editing /etc/gitlab/gitlab.rb file
gitlab: And running reconfigure again.
gitlab:
gitlab: For a comprehensive list of configuration options please see the Omnibus GitLab readme
gitlab: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md