「 サーバー構築 」一覧

git-media を使えるようにしてみた


オリジナルの git-media には以前に確認したような不具合が Windows 上で発生するため、そのままではバイナリが破壊されてしまうため使用に耐えませんでした。
今回 git-media を fork して、この問題を修正してみました。原因は簡単なことで改行コード変換がバイナリ取り出し時の処理に挟まってしまうことでした。

自分が修正した git-media はこちらに上げてあります。一応手元ではテストを行っていますが、動作を保証するモノではありません。普段の環境が Windows なので、 Windows の環境でのみテストしています。設定項目等も通常のものと変更はないです。

これで git を使っても、ひとまずは巨大バイナリに対して戦える状況になったかなと思っています。

git-media そのものの使い方は過去の記事を参考にしてもらえればと。

git-media はファイルシステムや scp, webdav が使える点がすごくいいと思ってます。これで送り込んだ先をバイナリ管理のリポジトリサーバーとしてバックアップ等含めてきちんと運用させるとよいかと思います。 続きを読む


git-annex を Windowsにて実験してみた


Git LFS が進んでいるようですが、 git-annex を実験してみました。git-annex はまだ Windows の環境でベータ扱いのようですが…。あまり日本語の記事もなく、手探りで色々と試してみましたが、以下の内容は間違っている可能性があるのでご注意ください。

公式サイトのほうからは Windows のインストーラーが公開されています。これをインストールして使用してみました。自分の環境では、うまくパスが通らなかったため、git-annex が配置された場所に手動でパスを通して動くように変更しています。
その後、公式ページの walkthrough にあった以下のようなコマンドを実行してみました. 続きを読む



git-media を使ってみる (2)


前回 git-media をインストールして動作をちょっと確認するところまで説明しました。
今回は以前に説明できなかった部分を見ていこうと思います。

git media sync について

巨大ファイルのハッシュから実体や、そもそも管理場所に送信する機能として git media sync を手作業で実行していました。
それは以下のような設定をしたからでした。

この autodownload を true に変更したらどうなるかを見てみます。
新規にファイルを追加して、add, commit した時点では変化がありませんでした。
しかし、Push を実行すると、・・・なんと挙動は従来のままかわりません!
設定項目の通り、ダウンロードのみに影響するようです。

この設定はリポジトリのチェックアウト時(ブランチの切り替え時とか)の挙動に影響してくるようです。
チェックアウト時に管理されている対象のファイルを、その外部の置き場からダウンロード(取得)してくるようになります。説明によると Pull 時にもこの設定は効いてくるようです。 続きを読む


git-media を使ってみる


git-media をインストールして使ってみます。Windows 環境にインストールして使っている事例がなかったのでちょっと手間取りました。

git-mediaとは

git-media とは巨大なバイナリファイルの扱いが苦手とされる git の拡張として作られたプラグインです。巨大なファイルにおいて、通常の git リポジトリに対してはファイルのハッシュ値を記録して、巨大なファイルの扱いに長けた別の場所にそのファイル実体を上げることが出来るようになります。
 こういった git のプラグインは他にもあって git annex とか有名(らしい)です。また最近の git には LFS( Large File Storage ) の拡張も出始めているので実は本内容はそのうち不要なものとなるかもしれません。

インストール

git-media では ruby スクリプトが使われているため、まずは Windows に Ruby を使えるようにするところからスタートです。
ここでは Ruby Installer (http://rubyinstaller.org/) を利用させてもらうことにしました。ここから 2.2.2 (32bit) を使用することにしました。32bit の理由は git 側が 32bit だったからです。 続きを読む


Gitlab (7.13.1) のその他の項目確認


メールサーバーの設定

新規にローカルのユーザーを作成した際にはメールで通知がいくようで、それがないとそのユーザーはパスワードを設定できないようです。
そのためにもメールサーバーの設定は済ませておく必要がありそうです。

これもまた /etc/gitlab/gitlab.rb ファイルに設定があるので適当なエディタで開きます。すると以下のような行が見つかるので、この部分を編集していきます。

これらをざっくりと以下のような感じにします

各設定項目は、メールサーバーの状態に合わせて設定します。
問題がなければユーザーを作成したりグループを作成したりといったタイミングでメール通知が飛ぶようになるかと思われます。

自分の環境ではメールが確認できず苦戦しましたが、外部メールサーバーを使う前提でローカルの Postfix を停止させたところうまくメールが飛ぶようになりました。同じような現象に出遭っている人はもしかするとコレで改善するかもしれません。

リポジトリの一覧

GitBucket 導入後に、公開リポジトリの一覧が見れたらいいなと思っていたので、 GitLab ではどうか確認してみました。
ここでは適当に2ユーザーくらい作ってそれぞれにリポジトリを作ってみました。

サインインしない状態で一覧みることができるかも気になりましたが、以下の画面に示すリンクから飛べるようです。

gitlab-search-repo-1

そこから All Projects というメニューを選ぶと以下のように既にあるリポジトリをリストとして見ることが出来ました。この画面を見るとさらに検索が出来るようなので多くのリポジトリがあっても大丈夫そうに見えます。(あくまでプロジェクト名での検索の模様です)

gitlab-repos-list

グループでのリストの様子もうかがえますし、さすがに機能がそろっているなと感じました。

リポジトリの操作

リポジトリへのプッシュ種別

HTTP でも SSH でもプッシュが可能なようです。プロキシのこととか考えると、httpが対応してくれているのはありがたいですね

リポジトリのフォーク

ちゃんとforkして作業が出来るようでした。fork元がどのくらい fork されたのかを正しく把握するのは難しそうです。フォークされた数がわかるようです。また forkした側は、どこからフォークしたのかが表示として出てくるみたいです。

マージリクエスト

いわゆるGitHubのプルリクエスト相当の機能で、マージリクエストと呼ぶリクエストを出すことが出来ます。forkしたブランチで何かしらの実装を行い、それを fork 元にマージしてもらって本家に反映する、というフローをするために使われます。
 マージリクエストを出されると、ちゃんとメールで通知が行われました。GitBucket のときのリクエストはメールが飛ばないような感じだったので、こちらはちゃんと使えそうな印象です。


Gitlab (7.13.1) でユーザー認証に LDAP を使う


タイトルの通りですが、認証に LDAP というか Active Directory を使えるかどうかを試してみました。Enterprise Edition だと間違いなく LDAP の機能を備えているのですが、 Community Edition でもこの機能が使えるかどうかがとても気になりました。

LDAPを使うように設定する

WebUI の画面からは設定することが不可能でした。
そこで、設定ファイルを編集して LDAP 認証を有効化します。

/etc/gitlab/gitlab.rb ファイルがあるのでこれを適当なエディタで開きます。すると以下のような行が見つかるので、この部分を編集していきます。

先頭の # がコメントの意味なので必要な部分をコメントから外します。このとき、後続の EOS の行もコメントになっているので外します。忘れがちなので注意します。この部分を見ると GitLab は2つめの LDAP サーバーを設定できるようですね。
コメントを外したら各項目を設定します。

設定したら、 reconfigureを実行します。
# gitlab-ctl stop
# gitlab-ctl reconfigure
# gitlab-ctl start

Webブラウザでアクセスして、再びログイン画面を開いてみます。するとログイン入力する箇所で以下のように変更されているかと思います。つまりこの画面にならなかったら、まず LDAP が有効化されていないので、設定を見直す必要があります。

gitlab-signin-ldap-7_13_1

当たり前ですが、ログインユーザーの種別に応じたタブでサインインしないと認証が通らないようです。

まとめ

LDAP (Active Directory) が認証に使えることがわかり、やりたいことの1つがクリアできました。Enterprise版だけの機能かと内心思っていただけに使うことが出来てよかったです。


CentOS6.5 に Gitlab 7.13.1 をインストール


GitBucket にほしい機能があったのですが、 GitLab にはあるかなと思ったので久しぶりにインストールしてみることにしました。欲しい機能というのは、リポジトリの横断的な探索機能とか一覧機能とかです。メンバーで寄って集ってコードを置くような場所だと一覧や検索は欲しい機能です。

CentOS7ではあまりにシステム周りが変わっているようなので、手慣れている CentOS 6.5 でまずは試してみることにしました。
ちなみにインストールタイプは Minimal として設定しています。
定番の SELinux無効化 も行っておきます。

Gitの更新

CentOS 6.5 の yum で Git インストールすると今となっては古いバージョンなので比較的新しいバージョンを入れることにします。

新しい git のために、古い git でソースリポジトリを clone して make します

こんな感じでやろうとしたら git がまだ入っていなかったようなので、以下のようにしてもうまとめて実行(Minimalインストールだからだと思います)

これをやってから再び git の clone を実行してソース類を取得します。

なにやら途中でエラーが出たので、別のパッケージを追加

改めて make all を実行します。

インストールが終わったので古い方を削除

GitLab本体のインストール

昔は1つ1つ手作業でインストールおよび設定していて、大変な思いをした記憶がありますが、最近はパッケージ化されて随分とインストールしやすくなりました。公式のページにもその手順は書いてあるので、スムーズに入れることが出来ると思います。
以下の手順は公式ページのものほぼそのままだったりしますが、問題なくインストールすることが出来ました。

こんな感じとなります。回線がやや遅いようで、320M程度といってもそこそこの時間がかかります。

日本語化

日本語化パッチを作っている方がいらっしゃるのでそれも利用させてもらうことにしました。英語のまま使う場合にはこの手順は不要です。
現時点においては 7.9.4 までのバージョンに対応しているようなので、その範囲で日本語化を行えるような印象です。英語が直接コーディングされているようなので、バージョンが変更になるとうまく日本語化できない箇所も多くあるようです。

うまくパッチを当てられる部分だけあてるので、このあと Y や Enter 連打だったりします。

Gitlab起動

それでは以下のコマンドを実行して起動してみます。最初はそこそこ時間がかかります。

なんかエラーが出てしまったのですがもう1回実行してみます。

サーバーの IP アドレスをいれて最初の画面が出るか確認します。問題なければ以下のような画面が出ると思います。ここでデフォルト管理者のID/パスワードでログインします(この情報は公式ページを参照)

gitlab-home-7_13_1

gitlab-signin-7_13_1

まとめ。次回へ続く

長くなってきたので1回ここらで区切りとします。昔は大変だった GitLab のインストールも随分とやりやすくなりました。さすがにコンテナ1つ配備して終了できる GitBucket 並ではありませんが、手こずる部分はなくなったと言えると思います。
 次回は GitLab の操作や設定そのものをチェックしてみたいと思います。



Gitblit でユーザー認証をドメインサーバーに任せる


GitblitがQNAPで動作できたという記事を以前に書きましたが、GitblitはWindows上でも簡単に動かすことが出来ます。公式ページで Gitblit GO というパッケージを配布しており、ダウンロード後は中に入っているバッチファイルを実行するだけで、サービスのホスティングが可能となります。

このGitblitの認証は割とたくさんの方式をサポートしています。通常だと管理者が1つずつユーザーを追加する状態ですが、これをWindowsドメインに任せることができます。GitblitはLDAP認証をサポートしています。日本語での記事が見つからないようなので、記事にしてみました。

早速設定方法です。
gitblitを展開した中に、data/gitblit.properties という設定ファイルがあります。
この中の項目を書き換えていきます。

ウィンドウズドメインサーバー(LDAP)を使うための設定

LDAP用の設定

ここからは各自の環境に合わせて適宜変更してください。
ここではサーバーを 192.168.0.1 とし、ドメイン名を mydomain.com (ユーザーはMYDOMAINに参加)と仮定して設定方法を下記に示します。

ドメインの中を検索するユーザーとして、searchUser というユーザーを準備して、パスワードを password としておきます。

これらの設定をしたうえで、gitblitを起動し直して、ユーザーがログインしようとするとWindowsドメインに認証にいくと思います。
うまくいかない場合にはサーバーのアドレスや、usernameが間違っていないかチェックしてみて下さい。またユーザー名の前にはドメイン名を付加させることもお忘れ無く。

企業などで、細かくグループが分かれている場合には、accountBase, groupBase らを変更するだけでなく、
realm.ldap.bindpattern といった項目も変更が必要になるかもしれません。

問題点

試したバージョンが 1.6.0 です。この場合 LDAP認証されたユーザーはデフォルトで様々な権限を持たないようです。そのため、リポジトリの作成権限すらありませんのでちょっと使いづらいかもしれません。パブリックなリポジトリがあればそれらに対してコードの取得程度は出来るんでしょうが・・・。
このあたりは改善される気配があるので、様子見です。せめてグループ単位でデフォルトの設定を適用できるような改良が望まれます。