UbuntuにRhodeCodeを入れてGitリポジトリを公開する

RhodeCodeというのは、

Githubのような雰囲気のソース共有サーバを構築するオープンソースです。

Githubでやりたい事を、Githubではなく、ローカルで実現したい、といった場合に適していると思います。

リポジトリをフォークしたり、ソースレビューをしたりetc

と言うことで、

RhodeCodeをインストールして見ます。

RhodeCodeはPython製なので、Pythonをインストールします。

sudo apt-get install python-dev python-setuptools

RhodeCodeのデフォルトのソース管理がMarcurialなので、入れておきます。

sudo apt-get install mercurial

Gitクライアントも入れておきます。

sudo apt-get install git

リポジトリ保存用のディレクトリ、プログラムディレクトリなどをあらかじめ作成します。

cd /var

sudo mkdir rhodecode
cd rhodecode
sudo mkdir rhodecode
sudo mkdir repositories

実行ユーザを作成します

sudo adduser rhodecode –disabled-password
sudo chown -R rhodecode:rhodecode /var/rhodecode

RhodeCodeのインストール

sudo easy_install rhodecode

RhodeCodeのセットアップ
以下が参考
http://packages.python.org/RhodeCode/setup.html#setup

RhodeCodeの設定ファイル作成

cd /var/rhodecode/rhodecode
paster make-config RhodeCode production.ini

production.iniファイルを開き、hostに実際のIPアドレスを設定

paster setup-rhodecode production.ini \
–user=admin \
–password=admin \
–email=gendosu@gendosu.jp \
–repos=/var/rhodecode/repositories

RhodeCodeの起動確認

paster serve production.ini

RhodeCode用のinit.dスクリプトを追加

https://secure.rhodecode.org/rhodecode/files/beta/init.d
に登録されている、「rhodecode-daemon2」を参考にする

パス情報などが環境にマッチしないと思うので、その辺を修正する。

修正後のファイルの中身

#!/bin/sh -e
########################################
#### THIS IS A DEBIAN INIT.D SCRIPT ####
########################################

### BEGIN INIT INFO
# Provides: rhodecode
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts instance of rhodecode
# Description: starts instance of rhodecode using start-stop-daemon
### END INIT INFO

APP_NAME=”rhodecode”
APP_PATH=”/var/gendosu/$APP_NAME”

CONF_NAME=”production.ini”

PID_PATH=”$APP_PATH/$APP_NAME.pid”
LOG_PATH=”$APP_PATH/$APP_NAME.log”

PYTHON_PATH=”/usr/local”

RUN_AS=”hoge”

DAEMON=”$PYTHON_PATH/bin/paster”

DAEMON_OPTS=”serve –daemon \
–user=$RUN_AS \
–group=$RUN_AS \
–pid-file=$PID_PATH \
–log-file=$LOG_PATH $APP_PATH/$CONF_NAME”

start() {
echo “Starting $APP_NAME”
PYTHON_EGG_CACHE=”/tmp” start-stop-daemon -d $APP_PATH \
–start –quiet \
–pidfile $PID_PATH \
–user $RUN_AS \
–exec $DAEMON — $DAEMON_OPTS
}

stop() {
echo “Stopping $APP_NAME”
start-stop-daemon -d $APP_PATH \
–stop –quiet \
–pidfile $PID_PATH || echo “$APP_NAME – Not running!”

if [ -f $PID_PATH ]; then
rm $PID_PATH
fi
}

case “$1” in
start)
start
;;
stop)
stop
;;
restart)
echo “Restarting $APP_NAME”
### stop ###
stop
wait
### start ###
start
;;
*)
echo “Usage: $0 {start|stop|restart}”
exit 1
esac

アンケート