GitBucketを導入してみた

仕事ではSubversionを使用しているので個人的に開発しているときのソース管理ではGitを使いたいと思い環境を構築することにしました。いくつかの候補から自分のサーバ環境で動かしやすく環境構築が楽らしいのでGitBucketを使うことにしました。
以下、環境構築用のメモです。
作業の流れは、
Javaのバージョンを確認
・GitBucketのダウンロード
Apacheのプロキシ設定
・(GitBucket)ユーザ、リポジトリの作成
・サーバ上にリポジトリの作成
・(必要に応じて)SSH用のポート開放
EclipseSSH鍵を作成して登録
Eclipseから接続

# Javaのバージョンを確認
# 1.8 ではなければ、yumで1.8をダウンロード
java -version
yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64
# 1.8を選択
alternatives --config java

# GitBucketのダウンロード
cd /usr/local/tomcat/webapps
wget https://github.com/takezoe/gitbucket/releases/download/3.11/gitbucket.war

service tomcat restart
ls -l /usr/local/tomcat/webapps/gitbucket/

# Apacheのプロキシ設定
vi /etc/httpd/conf/httpd.conf

以下を追記
<Location /gitbucket/>
ProxyPass ajp://localhost:8009/gitbucket/
</Location>

service httpd restart

# ユーザ、リポジトリの作成(ブラウザ)
ブラウザで http://ドメイン名/gitbucket/ でアクセスできればインストールは成功です。
初期はUsername「root」、Password「root」です。
右上のアイコンから「System administration」を選択し[New User]ボタンからユーザ追加。
右上のアイコンから「System administration」を選択し「System Settings」でBase URLに「https://」から始まるURLを入力し「Enable SSH access to git repository」にチェックを入れて登録します。このときのポート番号をiptablesなどで許可にしないと外部から接続する際に拒否られますのでご注意を。
新規で作成したユーザでログインし直します。
右上のアイコンから「Account settings」を選択し「SSH Keys」でSSHの公開鍵を登録してください。
リポジトリをコマンドで接続するユーザで鍵を作るか別途ユーザを用意して鍵を作ります。

cd ~/.ssh
ssh-keygen -b 2048
# この結果を「SSH Keys」ページに貼り付けます
cat id_rsa.pub

右上のプラスアイコンから「New repository」を選択し新しいリポジトリを作成。

完了画面で以下のようなコマンドが表示されるので適用なパスにディレクトリを作成。
リポジトリ名は「sample」とします。

mkdir -p /usr/local/repositories/sample/
cd /usr/local/repositories/sample/
touch README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin ssh://[ユーザ名]@[ドメイン名]:[ポート番号]/[ユーザ名]/sample.git
git push -u origin master

ここで「Permission denied (publickey).fatal: The remote end hung up unexpectedly」と出力されたら、SSHの公開鍵が登録できていませんので先述の通り設定してください。

パスフレーズを聞かれるのでssh-keygen コマンドの時に入力したパスフレーズを入力します。

# EclipseSSH鍵を作成して登録
[ウィンドウ]→[設定]→[一般]→[ネットワーク接続]→[SSH2]の「鍵管理」タブから「RSA鍵の生成」をクリック。表示される鍵をリポジトリを作成したユーザの「SSH Keys」ページに登録してください。
パスフレーズを入力して「秘密鍵の保管」ボタンをクリックして任意の場所に保管してください。反映するためにEclipseの再起動をオススメします。

# Eclipseから接続
[ウィンドウ]→[パースペクティブを開く]→[Gitリポジトリエクスプローラー]でGitリポジトリーで右クリック[リポジトリー・パスまたはURIの貼り付け]で「ssh://[ユーザ名]@[ドメイン名]:[ポート番号]/[ユーザ名]/sample.git」をコピーしておきます。
それぞれの情報が入力された状態でウィンドウが開くのであとは「次へ」で進んでいけばサーバのリポジトリとつなげることができます。