GitoriousをUbuntu 11.04 Serverにインストール

GitHubクローンの代表格なGitホスティングサービスGitorious,今では例えばQtもホスティングされています.
このシステムをまるごと自分のWWWサーバに入れて,ユーザ数やプロジェクト・リポジトリ数,非公開設定まで無制限な,WEBベースのリポジトリ管理システムを構築することができます.

タイミング悪いですね

もともとMarcurialホスティングサービスなBitbucketがGitに対応して,無料アカウントでもユーザ数5人まで,公開/非公開・数・容量共に無制限のGitリポジトリを置けるというとんでもないサービスが始まりました.
何と言うことでしょう.やっぱ外に置くのは不安じゃんって人もいるでしょうけど,それにしても今日の記事は無駄になるのでしょうか.

ビルドサーバとしてfook書いてCIと連携したりできるシステムを構築するところまですれば,差も出るのかもしれません.
そこまでするならRedmineでも入れましょう.

都合の悪い話はおいといて話を進めることにしましょう><。。

インストール方法

LAMPの入った空っぽ状態のUbuntu 11.04 サーバ版(x64)にGitoriousをインストールする手順.
ちなみにこのブログはDebian 5.0なVPSで稼働してます.

基本的には公式なドキュメントの通りですが,ところどころちがっているようなので補完してこっちでまるごと再掲します.
aptitudeはちゃんと入れててください.

ではここから.

sudo su -
aptitude install \
build-essential zlib1g-dev tcl-dev libexpat-dev \
libcurl4-openssl-dev postfix apache2 mysql-server mysql-client \
apg geoip-bin libgeoip1 libgeoip-dev sqlite3 libsqlite3-dev \
imagemagick libpcre3 libpcre3-dev zlib1g zlib1g-dev libyaml-dev \
libmysqlclient15-dev apache2-dev libonig-dev ruby-dev rubygems \
libopenssl-ruby libdbd-mysql-ruby libmysql-ruby \
libmagick++-dev zip unzip memcached git-core git-svn git-doc \
git-cvs irb libxml2 libxml2-dev libxslt libxslt-dev

5分から10分くらいはかかります.途中で入力を求められる場面もあります.

REALLY_GEM_UPDATE_SYSTEM=1 gem update --system
gem install --no-ri --no-rdoc -v 0.8.7 rake && \
gem install --no-ri --no-rdoc -v 1.1.0 daemons && \
gem install -b --no-ri --no-rdoc \
rmagick stompserver passenger bundler

 

wget http://sphinxsearch.com/files/sphinx-0.9.9.tar.gz && \
tar -xzf sphinx-0.9.9.tar.gz && \
cd sphinx-0.9.9 && \
./configure --prefix=/usr && \
make all install

 

git clone git://gitorious.org/gitorious/mainline.git /var/www/gitorious

cloneけっこうかかります.5分くらい?

ln -s /var/www/gitorious/script/gitorious /usr/bin
cd /var/www/gitorious/doc/templates/ubuntu/ && \
cp git-daemon git-poller git-ultrasphinx stomp /etc/init.d/ && \
cd /etc/init.d/ && \
chmod 755 git-daemon git-poller git-ultrasphinx stomp

 

update-rc.d git-daemon defaults && \
update-rc.d git-poller defaults && \
update-rc.d git-ultrasphinx defaults && \
update-rc.d stomp defaults

 

$(gem contents passenger | grep passenger-install-apache2-module)

↑これを実行したとき,次の内容をもつファイル/etc/apache2/mods-available/passenger.loadを作成しろと出ますので,その通りにします.

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.9/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.9
PassengerRuby /usr/bin/ruby1.8

ここまできたらいったんapache再起動

/etc/init.d/apache2 restart

 

a2enmod passenger && \
a2enmod rewrite && \
a2enmod ssl

 

touch /etc/apache2/sites-available/gitorious
touch /etc/apache2/sites-available/gitorious-ssl
a2dissite default && \
a2dissite default-ssl && \
a2ensite gitorious && \
a2ensite gitorious-ssl

続いてMySQLでごにょごにょ.
MySQLに入るときパスワード聞かれます.これはMySQLインストール時に指定したはず.
んで,続くクエリを入力.<insert password>のところは,DBアクセス用のパスワードを指定.あとで使います.

mysql -u root -p
> GRANT ALL PRIVILEGES ON *.* TO 'gitorious'@'localhost' IDENTIFIED BY '<insert password>' WITH GRANT OPTION;
> FLUSH PRIVILEGES;
> exit

 

cd /var/www/gitorious/ && \
bundle install

gitorious専用のユーザ・グループを作ります.
このとき,パスワードも空でないものを指定し,またsudoersに追記する必要があります.

adduser --system --home /var/www/gitorious/ --no-create-home --group --shell /bin/bash git && \
chown -R git:git /var/www/gitorious
passwd git
(ユーザgitに指定するパスワードを入力)
vim /etc/sudoers
(ユーザgitがsudoできるように記述)

ここで始めてrootから抜けて,gitユーザになって作業.

su - git && \
mkdir .ssh && \
touch .ssh/authorized_keys && \
chmod 700 .ssh && \
chmod 600 .ssh/authorized_keys && \
mkdir tmp/pids && \
mkdir repositories && \
mkdir tarballs

こっから,gitoriousの設定をいじくります.

cp config/database.sample.yml config/database.yml && \
cp config/gitorious.sample.yml config/gitorious.yml && \
cp config/broker.yml.example config/broker.yml
  • config/database.ymlの変更

production以下にあるpasswordのところに,先ほどMySQLで指定したものを記述.

  • config/gitorious.ymlの変更

これもproduction以下(今は空っぽのハズ)に次の内容を記述.
xxxxxxxx…のところには,コマンド”apg -m 64″の出力を貼り付けましょう.

production:
cookie_secret: xxxxxxxxxxxxxxxxxxxxxxxxxx
repository_base_path: /var/www/gitorious/repositories
gitorious_client_port: 80
gitorious_client_host: szk-vbox
gitorious_host: szk-vbox
archive_cache_dir: /var/www/gitorious/tarballs
archive_work_dir: /tmp/tarballs-work
hide_http_clone_urls: true
is_gitorious_dot_org: false
use_ssl: false
public_mode: false
only_site_admins_can_create_projects: true
  • config/boot.rbの変更

先頭行に

require 'thread'

を挿入します.

ここから最後のステップ.

bundle install        //途中パスワード入力求められる
export RAILS_ENV=production && \
bundle exec rake db:create && \
bundle exec rake db:migrate && \
bundle exec rake ultrasphinx:bootstrap

cronに登録します.

crontab -e

で,エディタは適当に選んで,

 * * * * * cd /var/www/gitorious && /usr/bin/bundle exec rake ultrasphinx:index RAILS_ENV=production

をコピペします.

最後に,

env RAILS_ENV=production ruby1.8 script/create_admin

また,Apacheのホスト設定を/etc/apache2/httpd.confに記述する必要があります.

<VirtualHost *:80>
ServerName (ホスト名)
DocumentRoot /var/www/gitorious/public
</VirtualHost>

この設定が終わったら,OSごと再起動します(cron的に).

できた

。゚+.(・∀・)゚+.゚

コメントを残す

メールアドレスが公開されることはありません。