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