このシステムをまるごと自分の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的に).
できた
。゚+.(・∀・)゚+.゚