Subversionのフック・スクリプトでコミット前にRedmineのチケットを確認
RedmineのチケットとSubversionのリビジョンの連携を徹底するために、コミット時にチケット番号の指定を強制するようにした。
Subversionのフックとは?*1
- 特定のタイミングで特定の外部プログラムを実行することであり、そのプログラムはフック・スクリプトと言われる。
- 外部プログラムを実行する条件は次の通り。
- 実行可能なファイル(コミット関連)
- start-commit ファイル
- pre-commit ファイル
- post-commit ファイル
- コミットされ、新しいリビジョンが作られた後に実行。
- 第一引数 : リポジトリへのパス
- 第二引数 : 今回作られたリビジョン番号
- 終了コードは無視される。
コミットに制約を設ける
制約内容:
- 参照用(refs)のチケット番号が指定されていて、そのチケットがRedmimeに存在すること。
- 完了用(fixes)のチケット番号が指定されていた場合は、そのチケットがRedmineに存在して、かつ、完了していないこと。
- pre-commitの内容
#!/bin/sh REPOS="$1" TXN="$2" # Make sure that the log message contains some text. SVNLOOK=/usr/bin/svnlook #$SVNLOOK log -t "$TXN" "$REPOS" | \ # grep "[a-zA-Z0-9]" > /dev/null || exit 1 #参照用のチケット番号の確認 $SVNLOOK log -t "$TXN" "$REPOS" | \ grep -i -E "refs[ ]*[#]*[0-9]+" > /dev/null || \ { echo "No refs ticket number.(refs #)" 1>&2 && exit 1; } #チケット進捗状態確認の関数 getTicketRatio() { mysql -s -u root redmine <<__REDMINE__ select issue_statuses.default_done_ratio from issues , issue_statuses where issues.id = ${1} and issues.status_id = issue_statuses.id ; __REDMINE__ } #参照用のチケット番号の取り出し TICKET_NO=`$SVNLOOK log -t "$TXN" "$REPOS" | sed -e "s/.*refs[ ]\+[#]*\([0-9]\+\).*/\1/i" | grep -i -E "^[0-9]+$"` if [ "NULL" == ${TICKET_NO:-NULL} ]; then echo "No refs ticket number.(refs #)" 1>&2 exit 1 else #チケット進捗状態確認 TICKET_RATIO=`getTicketRatio ${TICKET_NO}` #進捗状態が確認できない場合はコミット不可 if [ "NULL" == ${TICKET_RATIO:-NULL} ]; then echo "Ticket #${TICKET_NO} is nothing." 1>&2 exit 1 fi fi #完了用のチケット番号の取り出し TICKET_NO=`$SVNLOOK log -t "$TXN" "$REPOS" | sed -e "s/.*fixes[ ]\+[#]*\([0-9]\+\).*/\1/i" | grep -i -E "^[0-9]+$"` if [ "NULL" != ${TICKET_NO:-NULL} ]; then #チケット進捗状態確認 TICKET_RATIO=`getTicketRatio ${TICKET_NO}` #100%の時はコミット不可 if [ "NULL" == ${TICKET_RATIO:-NULL} ]; then echo "Ticket #${TICKET_NO} is nothing." 1>&2 exit 1 elif [ 100 -eq ${TICKET_RATIO} ]; then echo "Ticket #${TICKET_NO} is complite." 1>&2 exit 1 fi fi # Check that the author of this commit has the rights to perform # the commit on the files and directories being modified. #commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1 # All checks passed, so allow the commit. exit 0
テスト
先ずはサンプルのリポジトリを作成
- FSFSでリポジトリ作成
cd /home/svnrepos svnadmin create --fs-type fsfs test chown -R apache:apache test
- モジュール登録
cd /home/test svn import -m 'Import project' test http://localhost/svn/test
ローカルPCでテスト
- ローカルPCに作業コピー
cd ~ svn co http://svnServer/svn/test/trunk test
- Redmineでチケット作成
- ローカルPCでファイルを追加
cd ~/test >test.html svn add test.html
- ローカルPCでコミット
- コミットログなしのパターン
cd ~/test svn commit --- 結果 --- 追加しています test.html ファイルのデータを送信しています .svn: コミットに失敗しました (詳しい理由は以下のとおりです): svn: 'pre-commit' hook failed with error output: No refs ticket number.(refs #)
-
- 参照用チケット番号指定なしのパターン
cd ~/test svn commit -m "ファイル追加 refs" --- 結果 --- 追加しています test.html ファイルのデータを送信しています .svn: コミットに失敗しました (詳しい理由は以下のとおりです): svn: 'pre-commit' hook failed with error output: No refs ticket number.(refs #)
-
- 参照用チケット番号が存在しないのパターン
cd ~/test svn commit -m "ファイル追加 refs 9999" --- 結果 --- 追加しています test.html ファイルのデータを送信しています .svn: コミットに失敗しました (詳しい理由は以下のとおりです): svn: 'pre-commit' hook failed with error output: Ticket #9999 is nothing.
-
- 完了用チケット番号が存在しないのパターン
cd ~/test svn commit -m "ファイル追加 refs 1 fixes 9999" --- 結果 --- 追加しています test.html ファイルのデータを送信しています .svn: コミットに失敗しました (詳しい理由は以下のとおりです): svn: 'pre-commit' hook failed with error output: Ticket #9999 is nothing.
-
- 完了用チケット番号が完了しているパターン
cd ~/test svn commit -m "ファイル追加 refs 1 fixes 12" --- 結果 --- 追加しています test.html ファイルのデータを送信しています .svn: コミットに失敗しました (詳しい理由は以下のとおりです): svn: 'pre-commit' hook failed with error output: Ticket #12 is complite.
-
- OKのパターン
cd ~/test svn commit -m "ファイル追加 refs 1 fixes 1" --- 結果 --- 追加しています test.html ファイルのデータを送信しています . リビジョン ? をコミットしました。
Redmineのテーマを替える
Redmineのテーマを替える
Redmine.JP Blogが日本語環境で読み易くしたテーマを公開してくれたので、これを有難く利用させて頂くことにする。
日本語環境で読みやすいRedmine用テーマ「farend basic」公開 | Redmine.JP Blog
- テーマ入手&展開
cd /var/redmine/public/themes wget http://blog.redmine.jp/assets/2010/03/23/redmine_theme_farend_basic_20100324.tgz tar zxvf redmine_theme_farend_basic_20100324.tgz chown -R nobody:nobody farend_basic
- テーマ変更
[設定]→[表示]のところで"farend_basic"を選択して保存する。
touch /var/redmine/tmp/restart.txt
- 感想
自分の環境はUbuntuでメイリオがないんであんまし意味がないと思ったけど、フォントの大きさが変わっててある程度見やすくなった。
チケット一覧で優先度別に背景色が変わるのも有難い。
ただ、元が0.9.3用のテーマなので、trunk(r3768)の環境には合わない所がある。
チケット一覧をチケットNoでソートするとsubtaskingの親子関係が分かるような構成で表示されるのだが、それが無効になってしまう。
とりあえず自分で修正してみよう。
スタイルシートの一部を修正
- diffして気になった差異(左向きがオリジナル)
75d73 < #sidebar .contextual { margin-right: 1em; } 111d108 < table.list caption { text-align: left; padding: 0.5em 0.5em 0.5em 0; } 113,124c110,111 < tr.project td.name a { white-space:nowrap; } < < tr.project.idnt td.name a {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;} < tr.project.idnt-1 td.name {padding-left: 0.5em;} < tr.project.idnt-2 td.name {padding-left: 2em;} < tr.project.idnt-3 td.name {padding-left: 3.5em;} < tr.project.idnt-4 td.name {padding-left: 5em;} < tr.project.idnt-5 td.name {padding-left: 6.5em;} < tr.project.idnt-6 td.name {padding-left: 8em;} < tr.project.idnt-7 td.name {padding-left: 9.5em;} < tr.project.idnt-8 td.name {padding-left: 11em;} < tr.project.idnt-9 td.name {padding-left: 12.5em;} --- > tr.project td.name a { padding-left: 16px; white-space:nowrap; } > tr.project.parent td.name a { background: url('../../../images/bullet_toggle_minus.png') no-repeat; } 131,141d117 < tr.issue.idnt td.subject a {background: url(../images/bullet_arrow_right.png) no-repeat 0 50%; padding-left: 16px;} < tr.issue.idnt-1 td.subject {padding-left: 0.5em;} < tr.issue.idnt-2 td.subject {padding-left: 2em;} < tr.issue.idnt-3 td.subject {padding-left: 3.5em;} < tr.issue.idnt-4 td.subject {padding-left: 5em;} < tr.issue.idnt-5 td.subject {padding-left: 6.5em;} < tr.issue.idnt-6 td.subject {padding-left: 8em;} < tr.issue.idnt-7 td.subject {padding-left: 9.5em;} < tr.issue.idnt-8 td.subject {padding-left: 11em;} < tr.issue.idnt-9 td.subject {padding-left: 12.5em;} < 163,167c139,141 < tr.message td.subject { padding-left: 20px; } < tr.message td.created_on { white-space: nowrap; } < tr.message td.last_message { font-size: 80%; white-space: nowrap; } < tr.message.locked td.subject { background: url(../images/locked.png) no-repeat 0 1px; } < tr.message.sticky td.subject { background: url(../images/bullet_go.png) no-repeat 0 1px; font-weight: bold; } --- > tr.message td.last_message { font-size: 80%; } > tr.message.locked td.subject a { background-image: url(../images/locked.png); } > tr.message.sticky td.subject a { background-image: url(../images/sticky.png); font-weight: bold; } 220,226d232 < #watchers ul {margin: 0; padding: 0;} < #watchers li {list-style-type:none;margin: 0px 2px 0px 0px; padding: 0px 0px 0px 0px;} < #watchers select {width: 95%; display: block;} < #watchers a.delete {opacity: 0.4;} < #watchers a.delete:hover {opacity: 1;} < #watchers img.gravatar {vertical-align: middle;margin: 0 4px 2px 0;} < 236d241 < color:#505050; 269,276d274 < div.issue div.subject div div { padding-left: 16px; } < div.issue div.subject p {margin: 0; margin-bottom: 0.1em; font-size: 90%; color: #999;} < div.issue div.subject>div>p { margin-top: 0.5em; } < div.issue div.subject h3 {margin: 0; margin-bottom: 0.1em;} < < #issue_tree table.issues { border: 0; } < #issue_tree td.checkbox {display:none;} < 407,412d404 < .tabular label.inline{ < float:none; < margin-left: 5px !important; < width: auto; < } < 448,449d439 < input#principal_search, input#user_search {width:100%} < 530,533d519 < table.cal .starting a, p.cal.legend .starting {background: url(../images/bullet_go.png) no-repeat -1px -2px; padding-left:16px;} < table.cal .ending a, p.cal.legend .ending {background: url(../images/bullet_end.png) no-repeat -1px -2px; padding-left:16px;} < table.cal .starting.ending a, p.cal.legend .starting.ending {background: url(../images/bullet_diamond.png) no-repeat -1px -2px; padding-left:16px;} < p.cal.legend span {display:block;} 663,664d649 < #parent_issue_candidates ul li {width: 500px;} < 791,796d779 < < .task_todo.parent { background: #888; border: 1px solid #888; height: 6px;} < .task_late.parent, .task_done.parent { height: 3px;} < .task_todo.parent .left { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -5px; left: 0px; top: -1px;} < .task_todo.parent .right { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-right: -5px; right: 0px; top: -1px;} <
- 気になった差異をRedmine.JPの"farend_basic"に反映したんで公開
https://dl.dropbox.com/u/8158115/redmine_theme_farend_basic_for_trunk_r3768.tar.gz
とりあえず動いてる。使う方は自己責任でお願いします。
Redmine公式のテーマ'10.6.20追記
いろんなテーマが公開されている。
Theme List - Redmine
*1:再起動なしでも変更したテーマが有効になった
Redmineのトラッカー、ワークフロー、マイルストーン、バージョンについて考える
そもそもトラッカー、ワークフローとは何なのか?
- トラッカー(課題管理システム - Redmineガイド)
トラッカーは、異なる種類のチケットを分類するものです。トラッカーごとに以下のものを定義できます。
どうやらチケットを分類するための言葉らしい。
ワークフロー(英: Workflow)は、リソースを体系的に組織化し、役割と、物質、エネルギー、情報の流れを文書化および学習が可能なかたちで作業プロセスのなかに規定することで実現される、確実な反復可能性を持つ活動パターンである。ワークフローは、物理的な輸送、サービス展開、情報処理など、何らかの具体的意図を持って設計される。
Redmine的にはチケットの始まりから終わりまでの『状態(ステータス)』または『作業(ワーク)』という解釈でいいかな。
仕事に当てはめてみる
トラッカー | ワークフロー(始まりから終わりまで) |
---|---|
改定 | 要件定義→見積り→設計→製作→試験→出荷→納品 |
要件定義→見積り→設計→製作→試験→出荷→マージ→試験→納品 | |
要件定義→見積り→取り消し | |
障害 | 障害発生→再現性確認→改修→試験→出荷→報告書提出 |
障害発生→再現性確認→改修→試験→出荷→マージ→試験→報告書提出 | |
障害発生→再現性確認→取り消し | |
障害発生→瑕疵外の障害 | |
課題 | 課題発生→確認→設計→製作→試験→出荷 |
課題発生→確認→取り消し | |
レビュー | 依頼→レビュー→処置→確認 |
問合せ | 質問→回答→確認 |
ざっとこんなもんか、、、
『レビュー』『問合せ』は、『改定』『障害』『課題』のトラッカーに含むのでサブトラッカーってことになるのな。
RedmineではSubtasking*1という機能があるので、トラッカーとサブトラッカーを親Taskと子Taskという扱いにしてみよう。
まぁ上の表を見せてもプロジェクト内の開発者の理解して貰えないと思うので、流れ図に起こした方が吉。
#'10.6.16追記:この考え方では全然ダメだった・・・考え直そ
マイルストーンとバージョンって何?
マイルストーン(Milestone) とは、鉄道や道路等の起点よりの距離をマイルで表した距離標識の一つ。マイルマーカー(Milemaker )、マイルポスト(Milepost・MP)ともいう。
”距離”を表す言葉ね。
- バージョン(ソフトウェア構成管理 - Wikipedia)
ソフトウェア構成管理(ソフトウェアこうせいかんり、Software Configuration Management、SCM)とはソフトウェア開発プロジェクトをその成果物を通して制御・管理する方法論である。ソースコードや文書などの成果物の変更履歴を管理し、製品のバージョンやリビジョンに個々の成果物のどのバージョンが対応しているかを識別し、任意のバージョンの製品を再現可能とする。
”構成を管理するコード”という解釈にしとこ。
Tracではマイルストーンとバージョンを分けて考えるが、Redmineでは同一の意味として扱う。
故にRedmineはマイルストールという言葉がない。(プラグインで出来るのかも知れないが。)
余程長期のプロジェクトを扱う場合は、マイルストーンとバージョンを分けて管理すべきだろうが、
中期、短期のプロジェクトを扱う場合は、バージョンだけで十分。
もしRedmineで長期プロジェクトを扱う場合は、Redmine独特のサブプロジェクトという考え方が出来るので、
そちらに置き換えて管理すればいいだろう。
最終出荷物 … メインプロジェクト内のバージョンで管理
途中出荷物 … サブプロジェクト内のバージョンで管理
これまた仕事に当てはめる
基本的にワークフローの”出荷”がソースを構成する上での終点になるので、出荷予定日をバージョンとして扱ってみる。
バージョンは『100614-RC』と言う事にしよう。
Subversionのインストール及びRedmineと連携
Subversionのインストール方法とRedmineで認証する方法のメモ
- Subversionのインストール
yum install subversion mod_dav_svn mod_auth_mysql authz_svn_module
- リポジトリの設定
MySQLのusersテーブルで認証することで、Redmineの特定のプロジェクトに参加しているユーザのみがSVNでcommit可能となる。
ただし、誰でもcheckout出来るような設定になっている。
/etc/httpd/conf.d/subversion.conf ---------------------------------------------------------------- <Location /svn> DAV svn SVNParentPath /home1/svnrepos <LimitExcept GET PROPFIND OPTIONS REPORT> AuthMySQLEnable On AuthMySQLSocket /var/lib/mysql/mysql.sock AuthMySQLHost localhost AuthMySQLUser redmine AuthMySQLPassword redmine AuthMySQLDB redmine AuthMySQLUserTable "users,members,projects" AuthMySQLNameField "users.login" AuthMySQLUserCondition "users.id=members.user_id and projects.id=members.project_id and projects.identifier='mine-project'" AuthMySQLPasswordField "users.hashed_password" AuthMySQLPwEncryption sha1 AuthMySQLNoPasswd Off AuthType Basic AuthName "Authorization Realm" Require valid-user </LimitExcept> </Location> ----------------------------------------------------------------
mkdir /home1/svnrepos chown -R apache:apache /home1/svnrepos
- apache再起動
service httpd restart
Redmineを最新版のスイッチ&プラグインのコードレビューをインストール
RedmineのSubtaskingを使ってみたいが、バージョン1.0.0に組み込まれるようで、7月まで待たなくてはならない。
なので、とりあえず最新版(trunk)にスイッチして、使用してみる。
後、プラグインのコードレビューの気になるのでインストールしてみる。
参考サイト
Redmineのsubtaskingを使った画面: プログラマの思索
Haru's blog: Redmineのsubtaskingを試す その2
Feature #443: Subtasking - Redmine
http://www.r-labs.org/projects/r-labs/wiki/Code_Review
Redmineのリポジトリ切り替え
■現状のリポジトリを確認
# cd /var/redmine # svn info ---------------------------------------------------------------------- パス: . URL: http://redmine.rubyforge.org/svn/branches/0.9-stable リポジトリのルート: http://redmine.rubyforge.org/svn リポジトリ UUID: e93f8b46-1217-0410-a6f0-8f06a7374b81 リビジョン: 3735 ノード種別: ディレクトリ 準備中の処理: 特になし 最終変更者: jplang 最終変更リビジョン: 3728 最終変更日時: 2010-05-01 21:38:44 +0900 (土, 01 5月 2010) ----------------------------------------------------------------------
■最新版のリポジトリに切り替え
# cd /var/redmine # svn switch http://redmine.rubyforge.org/svn/trunk
■データベース再作成
# mysql ---------------------------------------------------------------------- drop database redmine; create database redmine; grant create,select,insert,delete,update,index,drop,alter on redmine.* to redmine@localhost identified by 'password'; set password for 'redmine'@'localhost' = password('redmine'); flush privileges; ----------------------------------------------------------------------
■セッション暗号化用鍵の生成
# rake config/initializers/session_store.rb
■データベースの初期化
# rake db:migrate RAILS_ENV=production # rake redmine:load_default_data RAILS_ENV=production ------------------------------------------------------ Select language: bg, bs, ca, cs, da, de, el, en, es, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sv, th, tr, uk, vi, zh, zh-TW [en] ja ------------------------------------------------------
■redmineディレクトリの所有者をnobodyに変更してappache再起動
# cd /var # chown -R nobody:nobody ./redmine # service httpd restart
■使った感じ
親→子→孫といった具合にチケットを作ることができる。
チケット一覧で親チケットでソートすれば題名のところで関連が分かるが、参考サイトの通りまだ改善の余地あり、という所だろうか。
プラグインのコードレビューをインストール
■ダウンロード&展開(念のため)
# cd vendor/plugins # wget http://r-labs.googlecode.com/files/redmine_code_review-0.2.9.3.zip # unzip redmine_code_review-0.2.9.3.zip
■マイグレート&apache再起動
# rake db:migrate_plugins RAILS_ENV=production # service httpd restart
■Redmineの管理設定
後は参考サイト通りに。
http://www.r-labs.org/projects/r-labs/wiki/Code_Review
「ロールと権限」で各ロールにコードレビューの権限設定をします。
プロジェクトの設定で コードレビュー モジュールをチェックします。
プロジェクトの設定でコードレビュータブを開き、コードレビューに割り当てるトラッカーを選択します。
Redmineのインストール
RedmineとはRuby on Railsで作られているプロジェクト管理ツール。
Tracに比べると知名度が低いようだが、Railsが気になるのとデフォルトのテーマがTracよりRedmineの方が見やすいと思ったので、これを使ってみることにする。
CentOS 5.4にRedmine0.9.3をインストールしてみる。
参考サイト
Redmine.JP — Redmine日本語情報サイト
けいの開発記録MySQL/Rubyを用いてMySQLへのデータベースアクセス
http://d.hatena.ne.jp/Mazin/20090809/1249798716 '10.5.31追記
インストール環境
パッケージ | バージョン |
---|---|
Ruby | 1.8.6 |
RubyGems | 1.3.6 |
Ruby on Rails | 2.3.5 |
Redmine | 0.9.3 |
インストール手順
# vi /etc/yum.repos.d/ruby.repo ------------------------------------------------------- [ruby] name=ruby baseurl=http://repo.premiumhelp.eu/ruby/ gpgcheck=0 enabled=0 -------------------------------------------------------
- rubyのインストール
■ruby は1.8.6 が必要なので、1.8.5がインストールされている場合は削除する。(yum listで確認)
# yum remove ruby rdoc ruby-devel ruby-libs.i386
■ruby 1.8.6 をインストール
# yum install ruby rdoc ruby-devel --enablerepo=ruby
- subversion、MySQL、gccのインストール
# yum install subversion # yum install mysql mysql-server mysql-devel # yum install gcc gcc-c++ httpd-devel apr-devel
- rubygemsのインストール
■ディレクトリの作成
# mkdir -p /opt/rubygems # cd /opt/rubygems
■ダウンロード&展開
# wget http://rubyforge.org/frs/download.php/69365/rubygems-1.3.6.tgz # tar xvfz rubygems-1.3.6.tgz # cd rubygems-1.3.6
■インストール
# ruby setup.rb
# gem install -v=2.3.5 rails # gem install mongrel # gem install mysql -- --with-mysql-lib=/usr/lib/mysql
- MYSQLの設定
■サービス起動
# service mysqld start # chkconfig mysqld on
■データベース作成
# mysql ---------------------------------------------------------------------- drop database redmine; create database redmine; grant create,select,insert,delete,update,index,drop,alter on redmine.* to redmine@localhost identified by 'password'; set password for 'redmine'@'localhost' = password('redmine'); flush privileges; ----------------------------------------------------------------------
■文字化け対策
MySQLのデフォルトの文字コードはlatin1らしいので、これをutf8に変更する。
# vi /etc/my.cnf ---------------------------------------------------------------------- [client] default-character-set = utf8 [mysqld] default-character-set = utf8 ----------------------------------------------------------------------
- Redmine0.9.3をインストール
■チェックアウト
# cd /var # svn checkout http://redmine.rubyforge.org/svn/tags/0.9.3/ redmine
- Redmineの設定
■ディレクトリ移動
# cd /var/redmine
■データベース設定
# vi config/database.yml ------------------------------------------------------ production: adapter: mysql database: redmine username: redmine password: redmine host: localhost encoding: utf8 ------------------------------------------------------
■メール発信の設定(Yahoo)
# vi config/email.yml ------------------------------------------------------ production: delivery_method: :async_smtp smtp_settings: address: smtp.mail.yahoo.co.jp port: 587 domain: yahoo.co.jp ------------------------------------------------------
■セッション暗号化用鍵の生成
# rake config/initializers/session_store.rb
■データベースの初期化
# rake db:migrate RAILS_ENV=production # rake redmine:load_default_data RAILS_ENV=production ------------------------------------------------------ Select language: bg, bs, ca, cs, da, de, el, en, es, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sv, th, tr, uk, vi, zh, zh-TW [en] ja ------------------------------------------------------
■動作確認
# script/server -e production
(http://xxx.xxx.xxx.xxx:3000/で確認可能)
Passengerを使ってRedmineをApache上で動かす手順
- passengerのインストール
# gem install passenger
- passengerの設定
# passenger-install-apache2-module
次のようなログが出力されるので控えておく。
-------------------------------------------- The Apache 2 module was successfully installed. Please edit your Apache configuration file, and add these lines: LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.11/ext/apache2/mod_passenger.so PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.11 PassengerRuby /usr/bin/ruby After you restart Apache, you are ready to deploy any number of Ruby on Rails applications on Apache, without any further Ruby on Rails-specific configuration! Press ENTER to continue. -------------------------------------------- Deploying a Ruby on Rails application: an example Suppose you have a Rails application in /somewhere. Add a virtual host to your Apache configuration file and set its DocumentRoot to /somewhere/public: <VirtualHost *:80> ServerName www.yourhost.com DocumentRoot /somewhere/public # <-- be sure to point to 'public'! <Directory /somewhere/public> AllowOverride all # <-- relax Apache security settings Options -MultiViews # <-- MultiViews must be turned off </Directory> </VirtualHost> And that's it! You may also want to check the Users Guide for security and optimization tips, troubleshooting and other useful information: /usr/lib/ruby/gems/1.8/gems/passenger-2.2.11/doc/Users guide Apache.html Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-) http://www.modrails.com/ Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.
- appacheの設定
# vi /etc/httpd/conf/httpd.conf ------------------------------------------------------------------------ LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.11/ext/apache2/mod_passenger.so PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.11 PassengerRuby /usr/bin/ruby <VirtualHost *:80> ServerName redmine.localhost.localdomein DocumentRoot /var/redmine/public <Directory /var/redmine/public> AllowOverride all Options -MultiViews </Directory> </VirtualHost> ------------------------------------------------------------------------
'10.5.31追記(Mazinさんのを参考に)
※ コメント(#)は取り除かないとエラーになる。
このままだとRailsのアプリしか動かないので、次のようにRailsBaseURIでredmineを紐付ける。
# vi /etc/httpd/conf/httpd.conf ------------------------------------------------------------------------ LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.11/ext/apache2/mod_passenger.so PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.11 PassengerRuby /usr/bin/ruby # <VirtualHost *:80> # ServerName redmine.localhost.localdomein # DocumentRoot /var/redmine/public # <Directory /var/redmine/public> # AllowOverride all # Options -MultiViews # </Directory> # </VirtualHost> RailsBaseURI /redmine ------------------------------------------------------------------------
# cd /var/www/html # ln -s /var/redmine/public redmine
# cd /var # chown -R nobody:nobody ./redmine
- appache再起動
# service httpd restart
CentOS5.4のインストール
RedmineのデータベースをSQLiteからMySQLに変更しようと思ったんでSQLiteをyumでremoveしたら、いろんな物が一緒に削除されてしまった(笑)
依存パッケージが大量にあったようで、その中にyumも含まれていた・・・お陰でyumでインストールができなくなってしまった。
yumが依存関係を表示してくれたのに、それを無視したのが原因・・・今後は良く見て実行しよう(^^;
で、
特に大事な物はデータは入っていなかったので、CentOSを新規にインストールすることにした。
CentOS 5.4のインストール
PCのスペック
CPU | Intel Celeron 866MHz |
---|---|
メモリ | 1GB |
ディスク | 120GB×2 |
ディスクパーテーション
マウントポイント | タイプ | 容量 |
---|---|---|
/boot | ext3 | 101MB |
/ | LVM PV | 115GB |
swap | swap | 2GB |
ディスクパーテーション詳細
グループ | デバイス | マウントポイント | タイプ | 容量 |
---|---|---|---|---|
VolGroup00 | LogVol01 | / | ext3 | 115GB |
LogVol02 | swap | 2GB | ||
RAIDデバイス | /dev/md0 | /boot | ext3 | 101MB |
/dev/md1 | VolGroup00 | LVM PV | 117GB | |
ハードドライブ | /dev/hdc1 | /dev/md0 | ソフトウェアRAID | 101MB |
/dev/hdc2 | /dev/md1 | ソフトウェアRAID | 117GB | |
/dev/hdd1 | /dev/md0 | ソフトウェアRAID | 101MB | |
/dev/hdd2 | /dev/md1 | ソフトウェアRAID | 117GB |
ソフトウェアの選択*1
- "Server"だけを選択する。
初期設定
- 参考サイト(ホントお世話になってます)
- パッケージの最新化
# yum update
- パッケージ管理システム設定
■yum-updatesd削除
# yum remove yum-updatesd
■fastestmirrorプラグインインストール
(インストールパッケージダウンロード時の最適ミラーサイトを自動選択するようにする)
# yum install yum-fastestmirror
■yum-cronインストール
# yum install yum-cron # service yum-cron start
■パッケージ自動更新自動起動設定
# chkconfig yum-cron on
- SELinuxの無効化
# vi /etc/sysconfig/selinux <hr width="50%" align="left"/> <font color="green">[]#SELINUX=enforcing[]</font> SELINUX=disabled <hr width="50%" align="left"/>