参考:
http://redmine.jp/tech_note/issue_statuses/
http://tetu-blog.blogspot.com/2008/11/blog-post.html
http://usagi-project.org/redmine/wiki/mynets/Ticket
2009年2月アーカイブ
$ mysqldump --all-databases --add-drop-database --lock-all-tables > fulldb.dump
$ sudo /etc/init.d/mysqld stop
$ sudo mv /etc/init.d/mysqld /etc/init.d/mysqld-5.0.45$ sudo mv /etc/my.cnf /etc/my.cnf-5.0.45
$ sudo cp -ai /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
$ cat >> ~/.bashrcPATH=/usr/local/mysql/bin/:$PATH
$ which mysql/usr/local/mysql/bin/mysql
$ mysql --version
$ find /usr/local/mysql/ | grep -P 'my-\S*.cnf'/usr/local/mysql/share/mysql/my-innodb-heavy-4G.cnf/usr/local/mysql/share/mysql/my-small.cnf/usr/local/mysql/share/mysql/my-medium.cnf/usr/local/mysql/share/mysql/my-large.cnf/usr/local/mysql/share/mysql/my-huge.cnf
$ sudo cp -ai /usr/local/mysql/share/mysql/my-huge.cnf /etc/my.cnf
$ sudo cp -ai /usr/local/mysql/share/mysql/my-small.cnf /etc/my.cnf
$ sudo chown -R mysql:mysql /usr/local/mysql/
sudo -u mysql mysql_install_db
$ sudo -u mysql mysql_install_dbPassword:Installing MySQL system tables...090220 16:38:34 [Warning] Forcing shutdown of 2 pluginsOKFilling help tables...090220 16:38:35 [Warning] Forcing shutdown of 2 pluginsOKTo start mysqld at boot time you have to copysupport-files/mysql.server to the right place for your systemPLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !To do so, start the server, then issue the following commands:/usr/local/mysql/bin/mysqladmin -u root password 'new-password'/usr/local/mysql/bin/mysqladmin -u root -h mebus password 'new-password'Alternatively you can run:/usr/local/mysql/bin/mysql_secure_installationwhich will also give you the option of removing the testdatabases and anonymous user created by default. This isstrongly recommended for production servers.See the manual for more instructions.You can start the MySQL daemon with:cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &You can test the MySQL daemon with mysql-test-run.plcd /usr/local/mysql/mysql-test ; perl mysql-test-run.plPlease report any problems with the /usr/local/mysql/bin/mysqlbug script!The latest information about MySQL is available at http://www.mysql.com/Support MySQL by buying support/licenses from http://shop.mysql.com/
$ sudo /etc/init.d/mysqld start
#既存のDBのdumpファイルを入れないなら、(新規にDB使うなら)
#匿名ユーザーを削除しとく。$ mysql -u rootmysql> DELETE FROM mysql.user WHERE User = '';mysql> FLUSH PRIVILEGES;もし、mysql> FLUSH PRIVILEGES;ERROR 1146 (42S02): Table 'mysql.servers' doesn't existとなったら、http://forums.mysql.com/read.php?11,142598,160503#msg-160503を参照;
$ mysql -u root < fulldb.dump
$ mysql -u rootmysql> FLUSH PRIVILEGES;
mysql> SELECT Host, User, Password FROM mysql.user ;
mysqldump --all-databases --add-drop-database --master-data > fulldb.dumpmysqldump --all-databases --add-drop-database --delete-master-logs > fulldb.dump--delete-master-logs
ダンプを実行後バイナリログを消去する。
このオプションは自動的に--master-dataを有効となる。
☆スレーブ側
予め、マスターからダンプしたファイルを持ってくる。
--skip-slave
スレーブを、レプリケーションスタートさせずに起動する。shell> mysql < fulldb.dump
次のSQLを実行する。
mysql> SHOW slave STATUS \GSTART SLAVE;
$ sudo yum install gcc-c++
ダウンロード
$ wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.31.tar.gz/from/ftp://ftp.iij.ad.jp/pub/db/mysql/
$ ./configure \--prefix=/usr/local/mysql \--enable-assembler \--enable-local-infile \--without-readline \
--with-client-ldflags=-all-static \--with-mysqld-ldflags=-all-static \--with-innodb \--with-federated-storage-engine \--with-archive-storage-engine \--with-csv-storage-engine \--with-blackhole-storage-engine \--with-fast-mutexes \--with-example-storage-engine \--with-mysqld-ldflags=-rdynamic
make test にすると、unittest で エラーで終わるので、test-ns と test-pr のテストする。
テストOKなら次のように表示される。:-------------------------------------------------------Stopping All ServersAll 1016 tests were successful.The servers were restarted 312 timesSpent 878.841 of 2096 seconds executing testcases-------------------------------------------------------:
Stopping All Servers
All 1003 tests were successful.
The servers were restarted 337 times
Spent 1060.397 of 2373 seconds executing testcases
$ sudo make install
もし、「--with-charset=utf8」を追加すると、「main.mysql_client_test」で failする$ ./configure \> --prefix=/usr/local/mysql \> --enable-assembler \> --with-client-ldflags=-all-static \> --with-mysqld-ldflags=-all-static \> --enable-local-infile \> --without-readline \> --with-charset=utf8 \> --with-innodb \> --with-federated-storage-engine \> --with-archive-storage-engine \> --with-csv-storage-engine \> --with-blackhole-storage-engine \> --with-fast-mutexes \> --with-example-storage-engine \> --with-mysqld-ldflags=-rdynamicmain.mysql_client_test [ fail ]mysqltest: At line 12: command "$MYSQL_CLIENT_TEST --getopt-ll-test=25600M >> $MYSQLTEST_VARDIR/log/mysql_client_test.out.log 2>&1" failedThe result from queries just before the failure was:exec of '/home/y.suzuki/src/dir-mysql/mysql-5.1.31/tests/mysql_client_test --no-defaults --testcase --user=root --port=9306 --socket=/home/y.suzuki/src/dir-mysql/mysql-5.1.31/mysql-test/var/tmp/master.sock --vardir=/home/y.suzuki/src/dir-mysql/mysql-5.1.31/mysql-test/var --getopt-ll-test=25600M >> /home/y.suzuki/src/dir-mysql/mysql-5.1.31/mysql-test/var/log/mysql_client_test.out.log 2>&1' failed, error: 256, status: 1, errno: 0More results from queries before failure can be found in /home/y.suzuki/src/dir-mysql/mysql-5.1.31/mysql-test/var/log/mysql_client_test.logAborting: main.mysql_client_test failed in default mode.To continue, re-run with '--force'.Stopping All Serversmake: *** [test-ns] エラー 1
◇最新バージョンを テスト用DBで動作確認してみる。
※テスト用DBがなければ、前もって作っとく。
mysql>
mysql> create database redmine_test character set utf8;
mysql> show databases;
mysql> \q
そして、今まで動かしていたので、
$ rake db:migrate RAILS_ENV=test
を実行しとく。
※以前のバージョンからのUPDATEなので、以前のテーブルの構成でからUPDATEするため。
svn up して
$ svn up ~/svn_work/Redmine/tags
svn export する
$ svn export ~/svn_work/Redmine/tags/0.8.1/ ~/work/redmine0.8.1
DBのconfigファイルであるYAMLファイルをコピーする。
$ cp /home/httpd/vhost/Redmine/config/database.yml ~/work/redmine0.8.1/config/database.yml
作業場所に移動して
$ cd ~/work/redmine0.8.1/
DBのマイグレーションを行う。
$ rake db:migrate RAILS_ENV=test
テストサーバー起動して動作確認してみる。
$ ./script/server -e test
テストDBで動作確認できたら、本番の前に、
◇まず、動いてるのを止める
mysqlのスレーブ止める。
mysqlのマスター止める。
Redmineの動いているApache止める。
◇次にバックアップする
以下、マスターで作業
mysql のデータバックアップしとく
/usr/local/mysql/var を コピーしとく
Redmineのバックアップしとく
/home/httpd/vhost/Redmine を コピーしとく
svn export する。
$ svn export ~/svn_work/Redmine/tags/0.8.1/ /home/httpd/vhost/Redmine/ --force
移動して
$ cd /home/httpd/vhost/Redmine/
キャッシュおよびセッションを消去
$ rake tmp:cache:clear
$ rake tmp:sessions:clear
DBのマイグレーションを行う。
$ rake db:migrate RAILS_ENV=test
サーバにアクセスできたらOK
$ ./script/server -e test
500エラーが出る場合、 Redmine/log/ 以下のログを確認する。
「sessions 系のエラーの場合」/home/httpd/vhost/Redmine/tmp/sessions に残ってるので
$ rake tmp:sessions:clear を行うか、セッションファイルを削除する。
本番のDBのマイグレーションを行う。
$ rake db:migrate RAILS_ENV=production
本番のDBで、確認するために、テスト用サーバー起動
$ ./script/server -e production
ブラウザでアクセスして確認
最後にApache起動
$ sudo /usr/local/apache2/bin/apachectl start
adminでログインし、管理⇒情報 から、バージョンを確認しとく。
"管理 → ロールと権限"を開き、新しく追加された機能に対する権限の確認・設定を行う。
問題なければ、スレーブのMySQLを起動
----
その他・カスタマイズしたところを修正する。
使いやすい様にソースなど修正したものは、svn export で全て上書きされてしまうので、
カスタマイズしたファイルを直す。
例:
① ヘルプの日本語化対応も上書きされるので、忘れずに!
http://redmine.jp/faq/general/change-help-url-to-gude-ja/
Redmineのlib/redmine/info.rbを開き、 def help_url; に続くURLをhttp://redmine.jp/guide/に変更し、Redmineを再起動
② lang/ja.yml
general_csv_encoding: SJIS
general_pdf_encoding: UTF-8
label_age: 年齢 ・・・年齢という表現が気になるなら・・私は気にならないが。
↓
general_csv_encoding: UTF-8
general_pdf_encoding: SJIS
label_age: age
③リポジトリで、テキストファイルの内容が日本語が多い場合ダウンロードされる件
http://groups.google.com/group/redmine-users-ja/browse_thread/thread/6d0eddad5a79d815
$ diff -u app/controllers/repositories_controller.rb ../Redmine-backup/app/controllers/repositories_controller.rb
--- app/controllers/repositories_controller.rb 2008-12-31 20:31:02.000000000 +0900
+++ ../Redmine-backup/app/controllers/repositories_controller.rb 2009-02-05 11:09:54.000000000 +0900
@@ -117,7 +117,7 @@
@content = @repository.cat(@path, @rev)
show_error_not_found and return unless @content
- if 'raw' == params[:format] || @content.is_binary_data?
+ if 'raw' == params[:format] || @content.include?("\x00")
# Force the download if it's a binary file
send_data @content, :filename => @path.split('/').last
else
④Wikiのヘルプ日本語化
$ cd public/help/
$ tar xzvf wiki_syntax_ja.tar.gz
$ diff /home/httpd/vhost/Redmine/app/views/documents/_document.rhtml ~/svn_work/Redmine/tags/0.8.1/app/views/documents/_document.rhtml1,4c1,3< <div title="<%unless document.description.blank? %><%=h(truncate(document.description, 250)) %><% end %>">< <font size=+0><%= link_to h(document.title), :controller => 'documents', :action => 'show', :id => document %></font>< - - -< <em><%= format_time(document.created_on) %></em></div>---> <p><%= link_to h(document.title), :controller => 'documents', :action => 'show', :id => document %><br />> <% unless document.description.blank? %><%=h(truncate(document.description, 250)) %><br /><% end %>> <em><%= format_time(document.created_on) %></em></p>
$ diff -u ~/svn_work/Redmine/tags/0.8.1/app/views/issues/gantt.rhtml /home/httpd/vhost/Redmine/app/views/issues/gantt.rhtml--- /home/y.suzuki/svn_work/Redmine/tags/0.8.1/app/views/issues/gantt.rhtml 2009-02-17 14:46:33.000000000 +0900+++ /home/httpd/vhost/Redmine/app/views/issues/gantt.rhtml 2009-02-23 16:06:57.000000000 +0900@@ -86,7 +86,7 @@<div style="position: absolute;line-height:1.2em;height:16px;top:<%= top %>px;left:4px;overflow:hidden;"><small><% if i.is_a? Issue %><%= h("#{i.project} -") unless @project && @project == i.project %>- <%= link_to_issue i %>: <%=h i.subject %>+ <%= link_to_issue i %>: (<%= i.assigned_to %>) <%=h i.subject %><% else %><span class="icon icon-package"><%= h("#{i.project} -") unless @project && @project == i.project %>
直したら再起動する。
再起動は
$RAILS_ROOT/tmp/restart.txtというファイルを作成
$ sudo -u apache touch /home/httpd/vhost/Redmine/tmp/restart.txt
せっかちなら
$ watch -n 1 ls -l /home/httpd/vhost/Redmine/tmp/restart.txt
で無くなるのを確認
参考URL
http://redmine.jp/guide/RedmineUpgrade
下記のサンプルをUPしときます:SampleTestClassLibrary1.zip
※このファイルのテストする側のプロジェクトの参照設定を自分の環境にあわせて設定してください。
テストツールは
Gallio
http://www.gallio.org/
を使用する。
Gallio v3.0.5 build 546 - x86 installer
http://mb-unit.googlecode.com/files/GallioBundle-3.0.5.546-Setup-x86.msi
ユニットテストのライブラリは、
xUnit.net
http://www.codeplex.com/xunit
を使用する。
http://www.codeplex.com/xunit/Release/ProjectReleases.aspx?ReleaseId=16811#ReleaseFiles
xunit-1.1.zip
サンプルがあるので、使い方を確認できる。
xunit-1.1-samples.zip
テストされる側のプロジェクトを用意する。
namespace SampleTestClassLibrary1
{
public class SampleClass1
{
public bool returnBooleanNot(bool foo)
{
return foo;
//return ! foo;
}
public string returnStringReverse(string s)
{
return s;
//char[] arr = s.ToCharArray();
//Array.Reverse(arr);
//return new string(arr);
}
}
}
テストされる側と同じソリューションに、テストするプロジェクトを追加する。
テストする側プロジェクトに、Unitテストを行うのに使用するライブラリを参照追加する。
ソリューションエクスプローラー ==> テストする側プロジェクトの参照設定を右クリックメニュー ==> 参照の追加
ダウンロードした、xunit.dll を指定する。
そして、テストされる側のライブラリも参照に加える。
それから、テストする側のプロジェクトに、テストコードを書く
using Xunit;
using SampleTestClassLibrary1;
namespace UnitTestClassLibrary1
{
public class UnitTestClass1
{
[Fact]
public void isTrue()
{
SampleClass1 obj = new SampleClass1();
Assert.True(obj.returnBooleanNot(false));
}
[Fact]
public void isEqual()
{
SampleClass1 obj = new SampleClass1();
Assert.Equal("CBA", obj.returnStringReverse("ABC"));
}
}
}
Gallioを起動する。
Windowsにインストールした 「Gallio Icarus」を起動する。
Gallio Icarus のメニュー Project から、Add Assemblies... を選び、
テストする側のプロジェクト で出来た DLLファイル (UnitTestClass.dll)を選ぶ。
読み込まれた後、Startボタンを押すとテストが動き出す。
テスト結果
想定通り失敗した結果が表示された。
今度は、テストが通る様に、次のように書きなおした。
修正が済んだら、忘れずにソリューションをビルドしなおす。
using Xunit;
using SampleTestClassLibrary1;
namespace UnitTestClassLibrary1
{
public class UnitTestClass1
{
[Fact]
public void isTrue()
{
SampleClass1 obj = new SampleClass1();
Assert.True(obj.returnBooleanNot(false));
}
[Fact]
public void isEqual()
{
SampleClass1 obj = new SampleClass1();
Assert.Equal("CBA", obj.returnStringReverse("ABC"));
}
}
}
そして、Gallio Icarus でもリロードするため、Reloadボタンを押す。
それから、スタートボタン。
Redmine の チケットとリビジョンを関連付けるには、次の様にする。
$ svn commit -m 'こめんと~ refs #28 refs #29'
#nnn →#から始まるチケット番号をコメントに入れる事でレポジトリからチケットを辿る事が可能となる。
(レポジトリからチケットにリンクが張られる)
refs → チケット番号の前に、これをつけると、チケットからリビジョンを辿る事が可能となる。
(チケットからリビジョンにリンクが張られる)
なので、チケットの「関係しているリビジョン」に表示させたくない場合は、
$ svn commit -m 'こめんと~ #28 #29'
とする。
$ svn commit -m 'こめんと~ refs 28 refs 29'とする。
どちらか、一つのリビジョンに2つのチケットを入れた場合、どちらか一方だけというのも可能
$ svn commit -m 'こめんと~ refs 28 #29'
$ svn commit -m 'こめんと~ #28 refs 29'
fixes や、closes などは、チケットの「関係しているリビジョン」に表示される。
要するに refsと同じ様に、チケットからリビジョンにリンクが張られる。
$ svn commit -m 'こめんと~ fixes 28 closes 29' $ svn commit -m 'こめんと~ fixes #28 closes #29'参考:http://redmine.jp/tech_note/subversion/