git一覧

QNAPファイルサーバー(NAS)で、Gitを使いたい

QNAPのファイルサーバー(NAS)にSubversionは以前いれてみたので、Gitも同様にできないかと考えていました。できればGitLabとか入れてみたいなと思っていたのですが手持ちの TS-439では厳しいようだったので、他の物を探してみました。
その結果、warファイル1つで簡単にGitリポジトリのホスティングをできるGitBucketがあったので、これを導入してみることにしました。以下はその導入記録です。

QNAPにtomcatを入れる

QNAP/AppCenter(QPKG) のページからJREをダウンロードしてPCに展開します。
そして、展開フォルダを指定してインストールを行います。
続いて Tomcat についても同様の手順でインストールを行います。
(ここでは、JRE_6.0.22_x86.qpkg, Tomcat_6.0.20_x86.qpkg を使用しました)

インストール後は Tomcat を起動して、画面を開いてみます。

qnap-tomcat

tomcat のアプリケーションを配置するフォルダは
/share/MD0_DATA/.qpkg/Tomcat/tomcat/webapps
になる模様。
$CATALINA_HOME は /share/MD0_DATA/.qpkg/Tomcat/tomcat ということのようです。
そこで、$CATALINA_HOME/conf/tomcat-users.xml を開いてユーザーを編集します。

※ ここ見れば既存のユーザーとパスワードの組み合わせもわかると思います。

そして、Tomcatの管理画面にログインすると次のように表示されます。

tomcat-manager

GitBucketのインストール

https://github.com/takezoe/gitbucket/releases
から gitbucket.war をダウンロードして、これを先ほどのTomcat管理画面からアップロードします。ここで使用した gitbucket.war は 1.8 のバージョンとなっています。

さて、GitBucket を Start を押すと・・・起動しません。
ログを確認してみると、クラスが足りていないような感じです。
javaが古いのかと思って調べてみたのですがどうやら Tomcat のほうが古いようです。qpkgでインストールされるのは 6.0系なようで、GitBucketは 7.0 以降のものを必要としているようです。残念。

というわけで、Tomcatの新しい物が利用可能になれば使えるのかもな~と思っている次第です。


GitlabとRhodecodeのメール設定

GitlabとRhodecodeを調べていてメール関連でどちらも設定を放置していたので調べてみました。

Gitlabの場合

gitlab.yml の email セクションの host という項目に対して、メールサーバーのアドレスを設定します。
たいていlocalhostのままなので、ここにメールサーバーのアドレスを記載します。
localhostのままでメールを送れるようにするためには、gitlabを動かしているサーバーでPostfixなりssmtpなりのメールサーバーを動かす必要があります。

Rhodecodeの場合

production.ini ファイルの中に smtp_server という項目があるので、そこにメールサーバーのアドレスを記載します。送信についてSMTP認証がかかっていたりする場合には、smtp_serverの行付近にアカウント情報を設定するような項目があったので、そこで設定してあげればよいように思います。

ついでに、email_prefix という項目もあるので、何かしら設定しておくと、メール振り分け設定の指標になるし便利だと思います。


Rhodecodeのバージョン更新

1.3.6を以前インストールしましたが、最近は既に1.4.3が出ているようなので以下の手順でバージョンをあげてみました。

バージョンを更新する

production.ini.oldの中身を確認しつつ、新しく作られた production.ini の中身を再設定していく.
自動マージされるらしいのだけど、手元ではうまくいきませんでした。

データベースを更新します。

起動し直します

そういえば更新してみて気付きましたが、言語を日本語の設定にすることが出来るようになったようです。production.iniの中にlangという項目があり、そこにjaを設定することができます。

チケット連携?

rhodecodeのIssue Tracker連携があるかと思っていたのですが、連携というわけでは無く単にリンクが張られるだけのようでした。コミットコメントにチケット番号を記述しておくと、それに対応する
IssueTrackerのチケットへ飛べるだけの機能のようにみえます。


gitをhttp経由で使いたい(ついでにgitweb)

以前にGitLabのインストールや使い方を書いてみたのですが、どうやらあれはsshをつかえる環境でないといけないようで、簡単にhttp(やhttps)を経由してのclone, pushなどはできないようでした。おまけに各ユーザーのプライベートリポジトリを作ることが前提で、非登録のユーザーが閲覧することもできないようです。(言い分としてはその場合はGitHubでいいでしょ、ということだそうで)。

さて、なぜHttp経由かという理由ですが、httpプロトコルしか通過できないファイアウォールがあるところも多いです。特に開発の現場ではまだまだ多く存在するようです。こういった場合にはgitを使う場合にclone,pushらをhttpによって行う必要が出てきます。
Subversionでもsvnプロトコルではなくhttp経由のWebDAVを用いて使っている例も多いのはその理由によるところもあるのかなと思ったりしています。

前提条件

次のものはインストール済みで設定も終わっているものとします。

  • Apache(WebDAV有効状態で)
  • git

設定

リポジトリらを /var/www/html/repos-git に配置するとして、ディレクトリを用意しておきます。
これから説明するディレクトリらの所有者はapacheとしておきます。

Apacheの設定ファイル(httpd.conf)を開いて、リポジトリらをWebDAVでアクセスできるように修正します。

※上記で指定するWebDAVを有効にするディレクトリを指定する際には、gitリポジトリそのものである必要があります。
SVNのよう な親ディレクトリを指定すればOKな感じでは無く、各リポジトリそれぞれでDAV ONとしなくてはならないようです。この点にはまりました(5/29追記)

apacheを再起動した上で、テストのためにリポジトリを用意してみます。

動作チェック

次のコマンドを実行していき、リモートリポジトリを用意します。

入力するアドレスは、 http://(サーバーのIP)/repos-git/test です。
うまくいけば、Success を表示されて、リポジトリが取得できます。

gitを試していると、リポジトリが取得できても、push ができないことが割と発生しますので、ここでpushも正常にできるかを確認しておきます。
適当なファイルを追加して、編集した後で、commit, push してリモートリポジトリにpushが成功するかを確認してみてください。

Gitwebのインストール

せっかくなのでGitwebも入れてみました。

このコマンドで簡単にインストールが完了します。
あとは設定ファイル /etc/gitweb.conf を編集するだけです。

$projectroot という変数にGitリポジトリの場所を設定するようになっているので、次のように書き換えます。

そして、apacheを再起動して、http://(サーバーのIP)/git/ にアクセスしてみます。
問題なければ、testリポジトリが一覧に並んでいることでしょう。

まとめ

とりあえずユーザー認証はなしでまずはサーバーにgitを用意してhttpによるアクセスをさせるというところを目的として、環境設定を行ってみました。今のところやっぱりWebDAVによってhttp経由のアクセスをさせるというところに落ち着いてしまいました。 ただWebDAVを使っていると遅いという話もあるようなので、別の方法でhttp経由のgitリポジトリ取得の方法がないかを、もうしばらく探してみたいと思います。