扶桑ゴム産業の最新情報とうぇぶますたあ「TKYK」の個人的日記。 ゴムペディアゴム通扶桑ゴム産業 株式会社扶桑ゴム産業

calendar

S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< August 2017 >>

categories

archives

広告

死ぬほど手こずった、Redmine0.8.7→1.0.1アップグレード

なんか、Redmineの最新版だと子チケットができるらしいね、便利だね、この際アップグレードしとこうか?と気軽に受けたのが悪夢の始まりだった(笑)

以下は意外に手こずり、エラーメッセージが出まくり、心がおれるようなRedmineアップグレードの顛末(涙)

そもそもの原因は、redmine0.9系へのアップグレード失敗談にあるとおり、直接コピーしてしまったことと、きちんと痕跡を残さずruby関連を消去していなかったことにあるようだ。
(参考:CentOS5.4へのRuby1.8.7+Rails2.3.5のインストールメモ

 # rpm -qa |grep ruby
 # rpm -e (でてきた関連パッケージを記述)
 # rm -Rf /usr/bin/ruby
 # rm -Rf /usr/lib/ruby
rpmコマンドでruby関連を探して消去するだけでなく、ディレクトリも消去。その上で、きちんと
 make clean

などしてmakeももう一回やるつもりで作成するとうまくいった…。

特にrubyの最新バージョンは1.9.2だが、これだとうまく動かない可能性があるので1.8.7の最終バージョンを用い、railsなどもバージョンに気をつける

Rubyのアップグレード
 # wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p302.tar.gz
 # tar zxvf ruby-1.8.7-p302.tar.gz
 # cd ruby-1.8.7-p302
 # ./configure --prefix=/usr
 # make
 # checkinstall --fstrans=no
 # rpm -i /usr/src/redhat/RPMS/i386/ruby-1.8.7-p302-1.i386.rpm

rubygemのインストール
# wget http://rubyforge.org/frs/download.php/70696/rubygems-1.3.7.tgz
# tar zxvf rubygems-1.3.7.tgz
# cd rubygems-1.3.7
# checkinstall -R "ruby setup.rb"
# rpm -i /usr/src/redhat/RPMS/i386/rubygems-1.3.7-1.i386.rpm
gemにてRailsをアップデート。必要とされるバージョンは2.2.2。
# gem install rails -v=2.2.2
mysqlも。
# gem install mysql

Passenger(mod_rails for Apache)をアップグレードインストール。
 
# gem install passenger
# passenger-install-apache2-module
この後の画面が色がついていて(?)ターミナルからだととにかく見にくい。
以下のような表示がされているので、「1(enter)」「(enter)」と押す。
 Welcome to the Phusion Passenger Apache 2 module installer, v2.2.15.
 
 This installer will guide you through the entire installation process. It
 shouldn't take more than 3 minutes in total.
 
 Here's what you can expect from the installation process:
 
  1. The Apache 2 module will be installed for you.
  2. You'll learn how to configure Apache.
  3. You'll learn how to deploy a Ruby on Rails application.
 
 Don't worry if anything goes wrong. This installer will advise you on how to
 solve any problems.
 
 Press Enter to continue, or Ctrl-C to abort.
 1
 
 --------------------------------------------
 Compiling and installing Apache 2 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.15/ext/apache2/mod_passenger.so
    PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.15
    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.
viで、Apacheのredmine.conf設定ファイルを編集。
 # vi /etc/httpd/conf.d/redmine.conf
LoadModule passenger_module
   /usr/lib/ruby/gems/1.8/gems/passenger-2.2.15/ext/apache2/mod_passenger.so
 PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.15
 PassengerRuby /usr/bin/ruby
そして、Apacheを再起動。
 # service httpd restart

ここまでが下準備なのです(涙)
さあ、いよいよRedmineのアップグレード!
 # cd /webroot/local/www/redmine
 # rake db:migrate RAILS_ENV="production"
 (in /var/www/redmine)
 rake aborted!
 RubyGem version error: rack(1.2.1 not ~> 1.0.1)
 
 (See full trace by running task with --trace)
エラーが出てしまう。rackが新しすぎるらしい。一旦rackをアンインストールし、1.0.1をインストールするようにする。
 # gem uninstall rack
 Remove executables:
         rackup
 
 in addition to the gem? [Yn]  Y
 Removing rackup
 
 You have requested to uninstall the gem:
         rack-1.2.1
 passenger-2.2.15 depends on [rack (>= 0)]
 If you remove this gems, one or more dependencies will not be met.
 Continue with Uninstall? [Yn]  Y
 Successfully uninstalled rack-1.2.1
# gem install rack -v 1.0.1
 Successfully installed rack-1.0.1
 1 gem installed
 Installing ri documentation for rack-1.0.1...
 Installing RDoc documentation for rack-1.0.1...
再度挑戦!
 # rake db:migrate RAILS_ENV="production"
 (in /var/www/redmine)
 ==  AddCustomFieldsEditable: migrating ========================================
 -- add_column(:custom_fields, :editable, :boolean, {:default=>true})
    -> 0.7291s
 ==  AddCustomFieldsEditable: migrated (0.7299s) ===============================
 
 ==  SetCustomFieldsEditable: migrating ========================================
 ==  SetCustomFieldsEditable: migrated (0.1005s) ===============================
 
 ==  AddProjectsLftAndRgt: migrating ===========================================
 (略)
 ==  ChangeChangesPathLengthLimit: migrating ===================================
 -- change_column(:changes, :path, :text, {:null=>true, :default=>nil})
    -> 0.0292s
 -- change_column(:changes, :path, :text, {:null=>false})
    -> 0.0160s
 -- change_column(:changes, :from_path, :text)
    -> 0.0376s
 ==  ChangeChangesPathLengthLimit: migrated (0.0837s) ==========================
 
 ==  EnableCalendarAndGanttModulesWhereAppropriate: migrating ==================
 ==  EnableCalendarAndGanttModulesWhereAppropriate: migrated (0.0470s) =========
インストール完了!!
こうして、ようやくRedmineの最新版へとアップグレードできたのでありました…


Redmineでユーザーアイコンを設定できるようにする(not Gravater)

 社内システムなどに本運用となったRedmineであるが、せっかくなので色々便利にしていきたい…という一環で、ユーザーアイコン(アバター)機能を設定してみた。投稿者の名前だけでなく、自分だけのアイコンで分かり易くなる機能です。


Redmine0.8位から、Gravaterを設定できるようだが、これだとメルアドなどを外部サイトに登録しなければならないので、ローカルにて設置できるLocal avatars Pluginを設置してみた。

しかし、v0.0.1/0.0.2共に、Redmine1.0.1では動かない。スレッドを追っていくと修正されたもの(redmine_local_avatars.rar  (5 KB))があるのでこれを設置する。

vendor/plugins/にできたフォルダ(redmine_local_avatars)を入れて、
 # rake db:migrate_plugins RAILS_ENV="production"
 # service httpd restart
だけでOK。(もちろん成功すれば、だが…。実際にはエラーが出て手間取った)

あとは、メッセージを日本語化しておく。
vendor/plugins/redmine_local_avatars/config/localesにて、ja.ymlを作成する。
 # Japanese translations
 ja:
    label_avatar: アバター
   message_avatar_uploaded: "アバターをアップロードしました。"
以上で、日本語表示も対応したユーザーアイコン(アバター)機能を設置できた。

IBM OmniFind Yahoo! EditionをFedoraCore起動時に自動起動する方法

2008/04/18追記:
以下の例は古いものです。バージョン8.4.2にて純正のサービス起動シェルスクリプトが新たに付け加えられているので、そちらを利用すると良い。インストール時に「起動時に立ち上げる」オプションをチェックするだけで実現できる。クロール時間の設定は以下の例を用いることが出来る。



会社の内部サイトも沢山増えてきて、縦断的に検索できたら便利なのになーと思っていたら、いいものを見つけた。

IBM OmniFind Yahoo! Edition

お金があったら、Google Miniとかの検索アプライアンスを導入するところでしょうし、そっちの方がいいと思うのだけど、如何せん高っ!!(最低40万かよ…)

でも、これ(IBM OmniFind Yahoo! Edition)は何と無料。おおっ。

このエンタープライズ向け検索ソリューションの利点はインストールが非常に簡単だと言うこと。Windows版だけでなく、Linux版もあること。何はともあれ無料が一番大きい利点だけど。

折角なので、Windowsじゃ面白くない(?)、FedoraCore5に入れるしか。と試してみた。色々ネット情報を見ると大変そうな体験談もあったが、意外にも非常にすんなりインストールできてしまった。ダウンロードして、-consoleオプション付けてコマンドシェルでキーをたたいたぐらいか。あっけなかった。(とはいえ、足りないパッケージが1つあったのでそれは別途yumでインストールした)

GNOME上で起動したり、コマンドラインでも起動終了できるのだが、折角Linuxなんだから、chkconfigで起動時の自動起動したいよね?ということで、

/etc/rc.d/init.dにshシェルプログラムを加える。例えば、
vim /etc/rc.d/init.d/omnifind

とかして、そこに
#!/bin/sh
# chkconfig: - 97 3
# processname: omnifind
# description: Purpose is to autostart IBM Omnifind Server.

PATH="$PATH:/opt/ibm/OmniFindYahooEdition/bin"
STARTUP="/opt/ibm/OmniFindYahooEdition/bin/startup.sh"
SHUTDOWN="/opt/ibm/OmniFindYahooEdition/bin/shutdown.sh"

case "$1" in
  start)
     echo -n "Starting OmniFind: "
     $STARTUP
     ;;
  stop)
     echo -n "Shutting down OmniFind: "
     $SHUTDOWN
     ;;
  restart)
     $0 stop
     $0 start
     ;;
esac

if [ $# -gt 1 ]; then
  shift
  $0 $*
fi

exit 0

としておく。
上のうち、chkconfigで動くようにするためには
# chkconfig: - 97 3
# processname: omnifind
# description: Purpose is to autostart IBM Omnifind Server.

の部分が必須となる。例の場合は起動時優先度97、終了時3である(若い方を先にstartあるいはstopする)。また、shスクリプトは実行可能なようパーミッションを755などに変更する。

それから、chkconfig --add <名前>を行う。これにより、chkconfigによる制御が可能となる。
chkconfig --add omnifind


これでserviceコマンドで起動したり、終了したりできる。
service omnifind start


さらに、クロールする時間を夜間にするように設定する。omnifind_crawler.shファイルを作って、

#!/bin/sh
PASSWORD='*******'

/opt/ibm/OmniFindYahooEdition/bin/manageCrawler.sh ¥
    -h http://host:10000 ¥
    -a $1 -i Default -t web -p "$PASSWORD"

/opt/ibm/OmniFindYahooEdition/bin/manageCrawler.sh ¥
    -h http://host:10000 ¥
    -a $1 -i Default -t file -p "$PASSWORD"

それから、crontabにて設定
crontab -e

3 7 * * * /root/cronshells/omnifind_crawler.sh stop
3 20 * * * /root/cronshells/omnifind_crawler.sh start


ただ今試用中ですが、なかなか面白いです。ファイル類もクローリング出来るので、見つからないファイルを探したいときに助かる。でもちょっと、ファイルかウェブページかデフォルトは見にくいので、改善を待つか、或いはWebAPIも用意されているので自前で作ってしまうか。<多分こっちの方がよさそう…

ファイル拡張子が違っていても表示される怪。

ウェブページに記述しているファイル名が欠落しているのに表示される現象が発生。
gomusporexxx.jpg

と本来なっているべきデータが、
gomusporexxx

となっていた。拡張子を書き忘れていたのだ。

しかし、ローカルテスト環境では問題なく表示されていて、本番環境では表示されない。あれれ??しかも、この現象はお節介なことに結構高機能(?)で.gif .jpeg .tif .bmpとかに実際のファイルの名前を変えてもアクセスできてしまう。なぜ?と色々探していたら、ログに吐いてあった
Negotiation: discovered file(s) matching request:

このメッセージが解決の糸口となった。

結局原因は、ApacheのMultiViewsオプションだった。

引用すれば、
MultiViews の効果は以下のようになります: サーバが /some/dir/foo へのリクエストを受け取り、/some/dir で MultiViews が有効であって、 /some/dir/foo が存在しない場合、 サーバはディレクトリを読んで foo.* にあてはまる全てのファイルを探し、 事実上それらのファイルをマップするタイプマップを作ります。 そのとき、メディアタイプとコンテントエンコーディングは、そのファイル名を 直接指定したときと同じものが割り当てられます。 それからクライアントの要求に一番合うものを選びます。

とあり、つまり拡張子のない不完全なファイル名でも画像を探して表示するように努めてくれるわけだ。ありがた迷惑なことこの上ない(今回はね)。

早速、テスト環境のwebroot.confを書き換えて、
Options MultiViews FollowSymLinks IncludesNoExec ExecCGI

だったのを
Options FollowSymLinks IncludesNoExec ExecCGI

のように書き換えておいた。

これにて一件落着。

Fedora Coreのフォントをメイリオ(Meiryo)に変更する

FedoraCore5フォント変更画像

ちまたではVistaのメイリオが綺麗だとか何とかという話をきくので、それならうちのPCにも…と思ったけど、Windows2000じゃあのなめらかな表示は出来そうにない(そーいうソフトもあるのかもしれないけど)ので、入れるなら変わったところに…と、FedoraCore5にインストールしてみた。

TrueTypeフォント(ttcかttf)はLinuxでも使うことが出来る。
/usr/share/fonts/japanese/TrueType/

にフォントファイルを入れる。
同じディレクトリにある、fonts.dirに、適当に
31
sazanami-gothic.ttf -misc-sazanami gothic-medium-r-normal--0-0-0-0-c-0-ascii-0
・・・・(最初からある部分なので省略)
sazanami-mincho.ttf -misc-sazanami mincho-medium-r-normal--0-0-0-0-c-0-koi8-r
fn=1:meiryo.ttc -ms-pgothic-medium-r-normal--0-0-0-0-p-0-iso8859-1
ab=y:fn=1:meiryo.ttc -ms-pgothic-bold-r-normal--0-0-0-0-p-0-iso8859-1
fn=1:ai=0.4:meiryo.ttc -ms-pgothic-medium-i-normal--0-0-0-0-p-0-iso8859-1
ab=y:fn=1:ai=0.4:meiryo.ttc -ms-pgothic-bold-i-normal--0-0-0-0-p-0-iso8859-1
fn=1:meiryo.ttc -ms-pgothic-medium-r-normal--0-0-0-0-p-0-jisx0201.1976-0
ab=y:fn=1:meiryo.ttc -ms-pgothic-bold-r-normal--0-0-0-0-p-0-jisx0201.1976-0
fn=1:ai=0.4:meiryo.ttc -ms-pgothic-medium-i-normal--0-0-0-0-p-0-jisx0201.1976-0
ab=y:fn=1:ai=0.4:meiryo.ttc -ms-pgothic-bold-i-normal--0-0-0-0-p-0-jisx0201.1976-0
fn=1:meiryo.ttc -ms-pgothic-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
ab=y:fn=1:meiryo.ttc -ms-pgothic-bold-r-normal--0-0-0-0-p-0-jisx0208.1983-0
fn=1:ai=0.4:meiryo.ttc -ms-pgothic-medium-i-normal--0-0-0-0-p-0-jisx0208.1983-0
ab=y:fn=1:ai=0.4:meiryo.ttc -ms-pgothic-bold-i-normal--0-0-0-0-p-0-jisx0208.1983-0

みたいな感じで付け加える

さらに、/etc/fonts/fonts.confを、
<family>Sazanami Gothic</family>

とある部分に、
<family>Meiryo</family>
<family>Sazanami Gothic</family>

のように付け加える。

同じく、/etc/fonts/conf.d/50-no-hint-fonts.confも、
<match target="font">
<test name="family" compare="eq">
<string>Meiryo</string>
</test>
<edit name="hinting" mode="assign">
<bool>false</bool>
</edit>
<edit name="embeddedbitmap" mode="assign">
<bool>false</bool>
</edit>
</match>

Sazanami Gothicより先に記述する。

それからXを再起動すると、ほーれこの通り…。初期状態のさざなみゴシックはちょっといまいち感があったけど、これならいいかも!

文字コードに悩む

どこまで行っても、文字コードとやらはプログラミングやシステムの設定において本当にクセモノで、悩みの種。

最近だと、PerlMySQLデータベースを呼び出すときに、ある時は文字化けがおき、別の時は文字化けしないという問題が起きた。PerlでのUTFフラグとMySQLの文字コードの扱い方やオプションを理解しないといけない(MySQL4.1からはクライアント側とサーバ側の文字コードを指定できるようになって、で、しかも自動で行なってくれるという便利な機能が災いする。よって、この動作を無効にするオプションがある。)。

そもそもUnicodeとは何か?UTF-8とは?という基本的なところも知っていないと、はっきり言って頭の中は大混乱。この際だからUnicodeを整理がてらまとめておこうっと…

そもそものUnicodeUCS-2(256x256=65,536文字)

これでは結局すべての文字を統一コードで収めることはできなかった。ので、UCS-4が考案される。

UCS-4(256x256x256x256=4,294,967,296文字)

でも流石にこんだけの広さはいらないだろう?4バイトで1文字というのは勿体ないし、UCS-2でも2バイトで英文字でも1文字というのは英語圏の人には不便。ということで、可変長のUTF-8が考案された。UTF-8の8は基本8ビットで表現できるから。UCSを表現するための符号化仕様。

UTF-8(ASCII文字は1バイト、その他は2〜6バイト)

あとUTF-16やUTF-32もあるようだけど、どんどん混乱するのでやめます…悲しい(多分に漏れず、上記は間違っている可能性がありますので、ご注意)

参考
UCS-2とUTF-8
小形克宏の「文字の海、ビットの舟」

さらに、今悩み中なのがLinuxからSQL Serverをつつく方策。
unixODBC+FreeTDS+DBD::ODBCという方法で接続自体はうまくいったが、ここでも文字コードの問題発生。Perlで収めた住所データの中で全角「−」だけが「?」になってしまう。こっちが「?」と言いたい。色々あさっているとやはり、SQL ServerはShift-JISらしく(Unicode格納型もあるみたいだし…)、多分指定が悪いに違いない。

まだ試していないけど、 Linux で SQLServer + PHPで書かれているように

tds version = 8.0 <-SQLServer2000を指す
charset = sjis   <-SQLServer2000のDBの文字コード
client charset = UTF-8 <-(株)などの機種依存文字を化けないようにするため

変更して試してみようと思う。freeTDS自体は設定ファイルを見る限り、文字コードはうまくいきそうな様子だったので、ちょっと期待。うまくいったら拍手喝采…

ルーティングの謎

ローカルサーバを新しいマシンに移行したのだけど、どうもPukiWikiのAmazonプラグインとWordpressのログイン後の遷移が異常に遅くてタイムアウト的な動作になってしまっていた。あれこれ調べてようやく原因がルーティングにあることが分かったんだけど、なぜかGUIで再起動するときと、コマンドラインでservice network restartする時とで動作が違う。

Destination Gateway   Genmask    Flags Use Iface
192.168.1.0 *      255.255.255.0 U    0  eth0
default   192.168.x.x 0.0.0.0    UG   0  lo

本来はloではなくeth0であるはずが、コマンドラインで再起動すると上のような感じになってしまう。でも、GUIだと正常な形で再起動できる。なぜ?どこかの設定ファイルに変な記述をしてないかと探すも不明。うー。

SpamAssassin、学習をさぼっていた…

前回、「Maia Mailguardをインストール!」で書いたスパム管理なんですが、しばらく見ていて、どー見てもSpamAssassinが学習していないような気がして、ちょっと調べてみたら…案の定(?)密かにエラーを起こして学習をさぼっていました(いや、正確には設定していない自分が悪い…悲しい)。

spamassassinのlocal.cfに、
bayes_path /var/spool/amavisd/.spamassassin/bayes
bayes_file_mode 0666
auto_whitelist_path /var/spool/amavisd/.spamassassin/auto-whitelist
auto_whitelist_file_mode 0666

とやることでbayesデータベースのパスを明示してやることで解決(多分)。
(でも、これで良かったかどうかは…?)

どんどん偉い子になる!と思っていたら、勉強もしないで成績表を隠してたのがバレた!といった感じです(?)

Maia Mailguardをインストール!

Maia Mailguardの統計画面

結局、スパム管理にSpamAssassinを入れつつ、学習をどのように“楽”にできるか…と考え、行き着いたのがこれ。Maia Mailguardという、SpamAssassinやAmavisd-newと連携して効率よくメールの管理ができるソリューション。今までだと、Mozilla Thunderbirdのようなメールソフトでやっていたようなスパム管理をこのシステムで一手にサーバ側に任せることができる。サーバ管理ができない環境だったらPOPfileとかをかませる所だろうけれども。

それにしても、とにかくこのシステム導入は非常に面倒で疲れました…。“苦”に尽きる。その労苦あってか、本当にメール環境がスッキリになりました。スパムかどうかを「確定」するだけでどんどん学習して偉い子になるんだから(幾分希望的観測)。

「学習」ははやりのベイズ推定を使っているようです。これって色々使えそう。

WebDAVというものを知る

WebDAVシステム構築ガイド ――Apache/IIS/Subversion/Jakarta Slide
WebDAVシステム構築ガイド ――Apache/IIS/Subversion/Jakarta Slide

ウェブサーバとのファイルのやりとりは、大抵FTPというケースがほとんどだと思う。でも、FTPはパスワードなどが暗号化されていないままネットワークを通っていくので情報が盗まれる危険性がある。セキュアなFTPもあるけれど、フリーでこれといった対応しているソフトもないみたい(あったら教えて欲しい)。

そこで、今回新たにFTP以外の方法でやりとりできるように色々試してみた。その一つがWebDAV。HTTPを拡張して読み取りだけでなく書き込みも可能にしたこの新しい仕組みは、発展途上(らしい)ながらかなり便利。Windows上からは普通のフォルダのように(Webフォルダ)扱えるのだから。OSに依存せず、しかもセキュリティも確保しやすい…。といいことばかりのようだが、設定は結構手こずった。

Apacheの設定をすべて理解しているわけではないので、見よう見まねだし、意外なところで躓いてなかなか接続できなかった。でも、何とかなったのでよしとしよう。これからまだ実験予定。このWebDAVなら、離れたところ同士でファイル共有ができる。ローカルネットワークがsambaなら、インターネット上はWebDAVかな…楽しい

| 1/2PAGES | >>