無料でGithubライクな共同開発環境を「さくらインターネット」で実現する

Gitを利用して多人数で共同開発がしたい!というときに便利なのがGithub。
オープンソースなら無料で使うことができますが、プライベート(非公開)なリポジトリを作るとなると月額がかかってしまいます。

そこで、さくらインターネットのサーバを利用して、
無料でプライベートな共用リポジトリを構築する方法を紹介します。*1

本文中のexampleは各自サーバーの初期ドメインのID「この部分.sakura.ne.jp」に置き換えて読んでください。

用意するもの

さくらインターネットにGitをインストールする

1.SSHでさくらインターネットのサーバにログイン

PoderosaTera Termなどでサーバにログインします。
ホストには「example.sakura.ne.jp」の初期ドメインを、パスワード(パスフレーズ)にはサーバパスワードを入力します。

2.ソースを取得してインストール

インストール場所はどこでもいいですが、参考サイトの例にならって/home/example/local/git/にインストールします。

$ cd ~
$ mkdir -p local/git
$ wget http://ftp.ntu.edu.tw/ftp/pub2/software/scm/git/git-1.7.6.1.tar.gz
$ tar zxvf git-1.7.6.1.tar.gz
$ cd git-1.7.6.1
$ ./configure --prefix=$HOME/local/git
$ gmake ← 結構時間がかかる
$ gmake install

通常ならhttp://kernel.org/からダウンロードするのがセオリーだけど、クラックされて落ちてるらしい*4 ので、http://ftp.ntu.edu.tw/ftp/pub2/software/scm/git/git-1.7.6.1.tar.gzを利用しました。

3.$HOME/local/git/binにパスを通す

パスの記述をするファイルは使用しているシェルによって変わります。僕の場合は「csh」だったので「.cshrc」を編集します。自身のシェルは次のコマンドでシェルを確認できます。

$ echo $SHELL
/bin/csh

cshの場合、「.cshrc」にパスを追加します。

$ cp .cshrc .cshrc.bk ← 不安な人は念のため保存
$ vi .cshrc

※viの操作に慣れていない場合は、FTPで.cshrcをダウンロード、編集後、FTPで上書き保存でもかまいません。(このときもバックアップしておくとより安全)

set path = (…いくつかパスが記載されてる…)
という行があるので、カッコ内の最後に半角スペースで前のパスと区切って

set path = (…略… $HOME/local/git/bin)

のパスを追記します。

最後に

$ source ./.cshrc

でファイルを読み込みます。

4.gitが利用できるようになったことを確認する

$ git --version
git version 1.7.6.1 ← バージョンが返ればインストール完了です!

意外と簡単でしたね。
次は共用リポジトリの作成です。

おまけ.インストールに使ったソースファイルの削除

いらなくなったソースファイルを削除しましょう。
余計なファイルを削除しないように慎重に!
コマンドで削除するのが怖ければftpで削除したっていーんです!面倒だけど。

※rmコマンドは自己責任でご使用ください

$ rm -rf git-*

rmはファイルやディレクトリの削除コマンド。
-rはディレクトリごと削除のオプション、-fは削除確認をしないというオプションです。*はファイル名、ディレクトリ名を指定する際のワイルドカード – Google 検索です。
つまり、カレントディレクトリにある「git-」で始まるファイル、ディレクトリを確認無しで削除するとコマンドになります。

間違って「rm -rf *」とかやると死ぬ*5 ので絶対やらないこと。

さくらインターネットのサーバに共用リポジトリを作成する

リポジトリへのアクセスはSSHに加え、マネージドサーバプランで利用できるWebDAVでもいけるようですが、WebDAVは設定が面倒なことに加えSSHにはない制限があるらしい*6 ので、SSHで接続することにしました。

1.サーバに共用リポジトリを作成

まず共用リポジトリを置くディレクトリを用意します。僕は/home/example/git/以下に置いています。
取り合えずname.gitというディレクトリに共用リポジトリを作ることにしましょう。

$ mkdir -p $HOME/git/name.git

mkdirでディレクトリを作成します。-pのオプションは中間ディレクトリ*7 も一緒に作成するという意味です。

作成したディレクトリに移動して、共用リポジトリを作成します。

$ cd git/name.git
$ git --bare init --share

はい。終了です。
サーバでの作業はたったこれだけ。
name.gitのname部分を変えればいくらでもリポジトリを量産できます^^

ローカルリポジトリに共用リポジトリを登録

1.共用リポジトリのURLをローカルリポジトリに登録する

remote originにサーバに作成した共用リポジトリのアドレスを登録します。
下記のパスの太字部分3箇所をご自身の初期ドメインのIDに置き換えてくださいね。
ssh://example@example.sakura.ne.jp/home/example/git/name.git

$ git remote add origin ssh://example@example.sakura.ne.jp/home/example/git/name.git
※すでに設定されている場合は下記
$ git config remote.origin.url ssh://example@example.sakura.ne.jp/home/example/git/name.git
$ git config branch.master.remote origin
$ git config branch.master.merge refs/heads/master

次にローカルリポジトリの履歴を共用リポジトリに反映させます。

2.ローカルリポジトリの履歴をpushする

ローカルリポジトリで行ってきた作業の履歴を共用リポジトリにpushして反映させます。
まだ共用リポジトリは空の状態なので、最初のpushはフルパスを指定して行います。

$ git push ssh://example@example.sakura.ne.jp/home/example/git/name.git master
The authenticity of host 'happyquality.sakura.ne.jp (59.106.19.175)' can't be established.
DSA key fingerprint is (DSAキー...)
Are you sure you want to continue connecting (yes/no)? 
⇒ yes と入力しエンター
example@example.sakura.ne.jp's password:
⇒サーバのパスワードを入力してエンター

1度pushしてしまえば、それ以降

$ git push
$ git pull

のみでOKです!*8

おまけ.他の端末でcloneする方法

$ git clone ssh://example@example.sakura.ne.jp/home/example/git/name.git master

cloneする場合はremote.origin.urlが設定済みなのでそのまま共用リポジトリを利用できます。

さいごに

想像よりとても簡単で驚きました。
あまり知らない方との共同開発の場合はサーバパスワードを教えるわけに行かないのでgithubのほうが向いていますが、社内や信頼できるパートナーとの共同作業にはこの方法の方が手軽で向いていそうですね。

さいごに、参考にさせていただいた下記サイトに感謝いたします。有益な情報をありがとうございました!

参考サイト:
2010-02-19 – Dive into the Tech World!
院生活備忘録: sakuraサーバでgit

  1. さくらインターネットのレンタルサーバ費用はかかります []
  2. ライトプランはSSHが利用できませんでした。ご指摘いただいた佐藤さまありがとうございます! []
  3. もし持ち合わせていらっしゃらない場合は安価にて引き受けますのでご連絡を(笑) []
  4. kernel.org クラックした奴は☆ねよ – flatlineの日記 []
  5. カレントにあるすべてのファイル、ディレクトリが削除されます。やったこと無いけどσ(^_^;) []
  6. ちゃんと調べてないけど面倒そうなので・・・(-。-;) []
  7. この例だとgit []
  8. パスワードの入力は必要です []
スポンサーリンク
336x280_1
336x280_1

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
336x280_1