Skip to content

Instantly share code, notes, and snippets.

@lanius
Created April 19, 2011 06:03
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save lanius/926894 to your computer and use it in GitHub Desktop.
Save lanius/926894 to your computer and use it in GitHub Desktop.
Gitorious Installation to Ubuntu Server 10.04
# Gitorious Installation to Ubuntu Server 10.04
# from gitorious mainline:
# commit e2e70edd42ac1c00dab518d61d566ee3fec929db
# Author: Marius Mathiesen <marius@gitorious.org>
# Date: Wed Apr 13 11:43:07 2011 +0200
: << '#COMMENT_OUT'
Ubuntu Server 10.04 に Gitorious をインストールしたときのメモ。
wgetなどのプロキシは適切に設定されていることが前提。
以下の点に注意。
- 冗長な作業がある
- まだ手作業が必要な部分がちらばっているので、注意。
- プロキシ環境を前提にしているので、使わない場合には書き換えが必要。
- teeまわりなど、手動でやっていたところを書き換えている部分はテストしていないので、コケるかも。
#COMMENT_OUT
# 変数の設定
export GITORIOUS_PROXY=http://example.co.jp:8080/
# APTを使ったパッケージのインストール
sudo apt-get update
sudo apt-get install build-essential -y
sudo apt-get install zlib1g-dev -y
sudo apt-get install tcl-dev -y
sudo apt-get install libexpat-dev -y
sudo apt-get install libcurl4-openssl-dev -y
sudo apt-get install postfix -y
# postfixの設定画面があらわれる。
# 「インターネットサイト」を選択し、「システムメール名」にホスト名を入力する。
# IPアドレスを入力すると後ですこしハマる。
sudo apt-get install apache2 -y
sudo apt-get install mysql-server -y
# MySQLの設定画面があらわれる。
# rootのパスワードを入力する。
sudo apt-get install mysql-client -y
sudo apt-get install apg -y
sudo apt-get install geoip-bin -y
sudo apt-get install libgeoip1 -y
sudo apt-get install libgeoip-dev -y
sudo apt-get install sqlite3 -y
sudo apt-get install libsqlite3-dev -y
sudo apt-get install imagemagick -y
sudo apt-get install libpcre3 -y
sudo apt-get install libpcre3-dev -y
sudo apt-get install zlib1g -y
sudo apt-get install zlib1g-dev -y
sudo apt-get install libyaml-dev -y
sudo apt-get install libmysqlclient15-dev -y
sudo apt-get install apache2-dev -y
sudo apt-get install libonig-dev -y
sudo apt-get install phpmyadmin -y
# phpMyAdminを動作させるために自動再設定するWebサーバが聞かれるので、apache2を選択。
# データベースをdbconfig-commonで設定していいかどうか聞かれるのでYesと解答。
# MySQLのパスワードを求められるので、入力する。
sudo apt-get install libmagick++-dev -y
sudo apt-get install zip -y
sudo apt-get install unzip -y
sudo apt-get install memcached -y
sudo apt-get install git-core -y
sudo apt-get install git-svn -y
sudo apt-get install git-doc -y
sudo apt-get install git-cvs -y
sudo apt-get install irb -y
sudo apt-get install sphinxsearch -y
sudo apt-get install uuid -y
sudo apt-get install uuid-dev -y
sudo apt-get install openjdk-6-jre -y
# ActiveMQのインストール
mkdir ~/workspace
cd workspace
wget http://people.apache.org/~gtully/staging-repos/activemq-5.2.0/org/apache/activemq/apache-activemq/5.2.0/apache-activemq-5.2.0-bin.tar.gz
sudo tar xzvf apache-activemq-5.2.0-bin.tar.gz -C /usr/local/
# /etc/activemq.confを作成する
echo "export ACTIVEMQ_HOME=/usr/local/apache-activemq-5.2.0" | sudo tee -a /etc/activemq.conf
echo "export JAVA_HOME=/usr/" | sudo tee -a /etc/activemq.conf
# activemqユーザーを作成する
sudo adduser --system --no-create-home activemq
sudo chown -R activemq /usr/local/apache-activemq-5.2.0/data
# activemq.xmlの編集
: << '#COMMENT_OUT'
/usr/local/apache-activemq-5.2.0/conf/activemq.xmlを編集し、
networkConnectorのdefault multicastingをOFFにする。
cd /usr/local/apache-activemq-5.2.0/conf/
sudo cp activemq.xml activemq.xml.old
sudo vi activemq.xml
networkConnectors要素について以下のように書き換える。
<networkConnectors>
<!-- by default just auto discover the other brokers -->
<!-- Example of a static configuration: -->
<networkConnector name="localhost" uri="static://(tcp://127.0.0.1:61616)"/>
</networkConnectors>
#COMMENT_OUT
# ActiveMQのスタートアップスクリプトをセットアップして起動
cd /tmp
wget http://launchpadlibrarian.net/15645459/activemq
sudo mv activemq /etc/init.d/activemq
sudo chmod +x /etc/init.d/activemq
sudo update-rc.d activemq defaults
sudo service activemq start
# Ruby Enterprise Editionをインストールする
cd ~/workspace
wget http://rubyforge.org/frs/download.php/71098/ruby-enterprise_1.8.7-2010.02_amd64_ubuntu10.04.deb
sudo dpkg -i ruby-enterprise_1.8.7-2010.02_amd64_ubuntu10.04.deb
# RubyGemsをインストール
cd /tmp
wget https://rubyforge.org/frs/download.php/70696/rubygems-1.3.7.tgz --no-check-certificate
tar xzvf rubygems-1.3.7.tgz
cd rubygems-1.3.7
ruby setup.rb
sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
sudo gem update --system -p ${GITORIOUS_PROXY}
# Gemをインストール
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} rmagick
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} chronic
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} geoip
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} daemons
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} hoe
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} echoe
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} ruby-yadis
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} ruby-openid
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} mime-types
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} diff-lcs
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} json
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} rack
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} ruby-hmac
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} rake
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} stompserver
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} passenger
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} rails
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} ultrasphinx
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} mysql
# 以下のものはバージョンを指定してインストール
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} -v 1.0.1 rack
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} -v 1.3.1.1 rdiscount
sudo gem install -b --no-ri --no-rdoc -p ${GITORIOUS_PROXY} -v 1.1 stomp
sudo ln -s /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/bin/rake /usr/bin/rake
sudo ln -s /usr/local/lib/ruby/gems/1.8/gems/stompserver-0.9.9/bin/stompserver /usr/bin/stompserver
# gitoriousのインストール
git config --global http.proxy ${GITORIOUS_PROXY}
sudo git clone http://git.gitorious.org/gitorious/mainline.git /var/www/gitorious
sudo cp /var/www/gitorious/doc/templates/ubuntu/git-daemon /etc/init.d/
sudo cp /var/www/gitorious/doc/templates/ubuntu/git-ultrasphinx /etc/init.d/
# /etc/init.d/git-daemonを書き換える
: << '#COMMENT_OUT'
sudo vi /etc/init.d/git-daemon
以下のように書き換える。
変更前:
GIT_DAEMON="/opt/ruby-enterprise/bin/ruby /var/www/gitorious/script/git-daemon -d"
変更後:
GIT_DAEMON="/usr/local/bin/ruby /var/www/gitorious/script/git-daemon -d"
#COMMENT_OUT
# git-pollerの起動スクリプトを作成
: << '#COMMENT_OUT'
sudo vi /etc/init.d/git-poller
以下の内容で作成する。
#!/bin/sh
# Start/stop the git poller
#
### BEGIN INIT INFO
# Provides: git-poller
# Required-Start: stomp
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 1
# Short-Description: Gitorious poller
# Description: Gitorious poller
### END INIT INFO
/bin/su - git -c "cd /var/www/gitorious;RAILS_ENV=production script/poller $@"
#COMMENT_OUT
# stompの起動スクリプトを作成
: << '#COMMENT_OUT'
sudo vi /etc/init.d/stomp
以下の内容で作成する。
#!/bin/sh
# Start/stop the stompserver
#
### BEGIN INIT INFO
# Provides: stomp
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 1
# Short-Description: Stomp
# Description: Stomp
### END INIT INFO
test -f /usr/bin/stompserver || exit 0
. /lib/lsb/init-functions
case "$1" in
start) log_daemon_msg "Starting stompserver" "stompserver"
start-stop-daemon --start --name stompserver --startas /usr/bin/stompserver --background --user git
log_end_msg $?
;;
stop) log_daemon_msg "Stopping stompserver" "stompserver"
start-stop-daemon --stop --name stompserver
log_end_msg $?
;;
restart) log_daemon_msg "Restarting stompserver" "stompserver"
start-stop-daemon --stop --retry 5 --name stompserver
start-stop-daemon --start --name stompserver --startas /usr/bin/stompserver --background --user git
log_end_msg $?
;;
status)
status_of_proc /usr/bin/stompserver stompserver && exit 0 || exit $?
;;
*) log_action_msg "Usage: /etc/init.d/stomp {start|stop|restart|status}"
exit 2
;;
esac
exit 0
#COMMENT_OUT
# 起動スクリプトをセットアップ
sudo chmod 755 /etc/init.d/git-ultrasphinx
sudo chmod 755 /etc/init.d/git-daemon
sudo chmod 755 /etc/init.d/stomp
sudo chmod 755 /etc/init.d/git-poller
sudo update-rc.d stomp defaults
sudo update-rc.d git-daemon defaults
sudo update-rc.d git-ultrasphinx defaults
sudo update-rc.d git-poller defaults
# apache setup scriptを実行
sudo /usr/local/bin/passenger-install-apache2-module
# Enterでインストールが完了する。
# /etc/apache2/mods-available/passenger.loadを作成
: << '#COMMENT_OUT'
sudo vi /etc/apache2/mods-available/passenger.load
以下の内容で作成する。
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.6/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.6
PassengerRuby /usr/local/bin/ruby
#COMMENT_OUT
# MySQLのセットアップ
: << '#COMMENT_OUT'
https://<ホスト名>/phpmyadmin/にアクセスし、ログインする。
# gitユーザーに権限を与える
上部メニューから 特権 > 新しいユーザを追加する を選択する。
ユーザー名:git
ホスト:すべてのホスト
パスワード:なし
グローバル権限:createにチェック
他はデフォルトのまま。
実行する を押すとユーザーが作成される。
そのまま データベースに固有の特権 を設定する。
データベースに特権を追加:gitorious_production
実行する を押し、 すべてチェックする をクリックしたあと、 実行する を押す。
「特権を更新しました」と表示されればOK。
#COMMENT_OUT
# Apacheのセットアップ
: << '#COMMENT_OUT'
sudo vi /etc/apache2/sites-available/gitorious
以下の内容で作成する。
ホスト名は適当な値に変えること。
<VirtualHost *:80>
ServerName <ホスト名>
DocumentRoot /var/www/gitorious/public
</VirtualHost>
#COMMENT_OUT
: << '#COMMENT_OUT'
sudo vi /etc/apache2/sites-available/gitorious-ssl
以下の内容で作成する。
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
DocumentRoot /var/www/gitorious/public
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
</VirtualHost>
</IfModule>
#COMMENT_OUT
sudo a2dissite default
sudo a2dissite default-ssl
sudo a2ensite gitorious
sudo a2ensite gitorious-ssl
# gitユーザーを作る
sudo adduser --system --home /var/www/gitorious/ --no-create-home --group --shell /bin/bash git
sudo chown -R git:git /var/www/gitorious
: << '#COMMENT_OUT'
# パスワードを設定する
sudo passwd git
#COMMENT_OUT
# sshログイン時のPATHにgitoriousスクリプトを通す
sudo ln -s /var/www/gitorious/script/gitorious /usr/bin
# gitユーザーでログインし、設定ファイルなどのセットアップをおこなう
su - git
cd /var/www/gitorious
mkdir .ssh
touch .ssh/authorized_keys
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
mkdir tmp/pids
mkdir repositories
mkdir tarballs
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を編集する
: << '#COMMENT_OUT'
vi config/database.yml
production以外のセクション(test, development)を削除する。
mysqlのパスワードを指定する。
#COMMENT_OUT
# config/gitorious.ymlを編集する
: << '#COMMENT_OUT'
vi config/gitorious.yml
以下の行を削除する。
development:
test:
以下の値を記入する。以下にない部分はデフォルト値を使用する。
cookie_secret: <apg -m 64の結果を入力する>
repository_base_path: "/var/www/gitorious/repositories"
gitorious_client_port: 80
gitorious_client_host: <ip address>
gitorious_host: <ip address>
archive_cache_dir: "/var/www/gitorious/tarballs"
archive_work_dir: "/tmp/tarballs-work"
hide_http_clone_urls: true
is_gitorious_dot_org: false
#COMMENT_OUT
# 元のユーザーに戻る
exit
# 変数の再設定を忘れずに
export GITORIOUS_PROXY=http://example.co.jp:8080/
# 不足しているコンポーネントを補う
cd /var/www/gitorious/
export http_proxy=${GITORIOUS_PROXY}
bundle install
# 最新バージョンでは以降の処理がコケるため、元のバージョンに戻す
cd /tmp/rubygems-1.3.7/
sudo ruby setup.rb
# gitユーザーで再びログインし、Rakeする
su - git
export RAILS_ENV=production
rake db:create
rake db:migrate
rake ultrasphinx:bootstrap
rake ultrasphinx:configure
# crontabにultrasphinxを登録する
: << '#COMMENT_OUT'
crontab -e
以下の一行を追加する。
* * * * * cd /var/www/gitorious && /usr/local/bin/rake ultrasphinx:index RAILS_ENV=production
#COMMENT_OUT
# gitoriousの管理者ユーザーを作成する
env RAILS_ENV=production ruby script/create_admin
# メールアドレスとパスワードを入れる。
# rootに戻ってGemのパッケージのバージョンを合わせる
exit
# 変数の再設定を忘れずに
export GITORIOUS_PROXY=http://example.co.jp:8080/
sudo gem install daemons --version "1.1.0" -p ${GITORIOUS_PROXY}
sudo gem uninstall daemons --version "1.1.2"
sudo gem install geoip --version "0.8.9" -p ${GITORIOUS_PROXY}
sudo gem uninstall geoip --version "1.0.0"
# サービスを起動
sudo service apache2 restart
sudo service git-daemon start
sudo service stomp start
sudo service git-poller start
# Gitoriousの構築完了
: << '#COMMENT_OUT'
以下の作業ができればOK.
https:<ホスト名>/にアクセス
ログイン
プロジェクト、リポジトリの作成
#COMMENT_OUT
# ハマったところ
: << '#COMMENT_OUT'
# メール送信でエラーが発生する
各アプリケーションの設定で、ホスト名ではなくIPアドレスを使うと、メール送信エラーが起きる。
/var/log/の下のmail.logやmail.errを見て、メール送信エラーが発生している場合は
Postfixの設定などを修正し、git-daemon, git-ultrasphinx, git-pollerを再起動する。
# git pushができない
以下を忘れずに。
ln -s /var/www/gitorious/script/gitorious /usr/bin
#COMMENT_OUT
# 参考資料
: << '#COMMENT_OUT'
http://gitorious.org/gitorious/pages/UbuntuInstallation
http://www.silly-science.co.uk/2010/12/12/installing-gitorious-on-ubuntu-10-04-howto/
http://www.slideshare.net/stealthinu/gitoriousubuntu1004-lts
#COMMENT_OUT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment