2012年3月22日木曜日

PHP 5.4.0 + APC 3.1.9でapacheが再起動できないらしい



PHP5.4.0の動作検証など行っていますが、
一見問題ないように見えます。
とはいえ、まだリリースしたばかりなのでいろいろあるものですね。

かゆいところで、Apacheが再起動(restart or graceful)できないという現象がありました。
ちなみに、停止(stop)、起動(start)は問題なくできます。
そんな環境はこちら


  • Cent OS 6.2

  • Apache HTTP Server 2.2.22

  • PHP 5.4.0 + APC 3.1.9



再起動すると次のログが出力されhttpdが起動しません。


[Thu Mar 22 10:32:38 2012] [notice] seg fault or similar nasty error detected in the parent process


stop、startでは問題なくhttpdの起動と停止ができます。
また、apcを外すとこちらも問題なかったためやはりapcが原因のようです。
念のため、pecl apcのリポジトリから最新版をインストールしてみました。

pecl apcをリポジトリからインストール




svn co http://svn.php.net/repository/pecl/apc/trunk/ apc-trunk
cd apc-trunk
phpize
./configure --enable-apc --with-php-config=/usr/local/php/bin/php-config
make
make install


すんなり再起動できました。
インストールしたapcの情報をphpinfo()で確認すると、













APC Supportenabled
Version3.1.9
APC DebuggingDisabled
MMAP SupportEnabled
MMAP File Maskno value
Locking typepthread mutex Locks
Serialization Supportphp
Revision$Revision: 324326 $
Build DateMar 22 2012 11:34:52

バージョンに変更はないですが、開発版なのでいろいろ違うのかと。

なんらかの事情?で、力技で乗り切るには、
apachectlに次の内容を追記します。

restart)
echo 'apache httpd stop'
$HTTPD -k stop
echo 'sleep 3'
sleep 3
echo 'apache httpd start'
$HTTPD -k start
ERROR=$?
;;


まあ、使わないと思いますが。




2012年3月21日水曜日

Redmine 1.3.2 インストールのちょっとした罠 at さくらのVPS



Redmineには、日頃からよくお世話になっていますが、
インストールをすることってほとんどありませんよね。
でも、たまにインストールすると軽い罠が待っていますw

今回はちょっとした罠をメモしておきます。
次のバージョンの時にも別の罠があるとは思いますが、その時はその時で。

ちなみに、こちらのドキュメントを見てインストールしていますが、
きめ細やかな手順ですよね。すごく助かりますね。


Redmine 1.3をCentOS 6にインストールする手順
http://blog.redmine.jp/articles/redmine-1_3-installation_centos/


次の内容は、「さくらのVPS 512」のCentOS 6.2環境でインストールしました。


  • Apache HTTP Serverが見つからない

  • 初期設定とデータベースのテーブル作成の警告メッセージ

  • メールが送信されない at さくらVPS


Apache HTTP Serverが見つからない


Apache httpdをyumからインストールしている場合は、この問題おこりませんが、
ソースコードからビルドしている場合は、たぶんこの問題に遭遇します。

次のコマンドを実行してもapahceが見つからないので中断するのですが、
passenger-install-apache2-module

この場合は、次の2つの環境変数で場所を教えてあげればいいようです。


export APXS2=/usr/local/apache2/bin/apxs
export PATH=/usr/local/apache2/bin:$PATH
passenger-install-apache2-module
※Apache httpdのインストール先に合わせ変更してください。



初期設定とデータベースのテーブル作成の警告メッセージ


Redmineの初期設定とデータベースのテーブル作成の作業で、次のコマンドを実行します。
rake generate_session_store

下記のメッセージが出力され最後に「Please install RDoc 2.4.2+ to generate documentation.」と言われますが、
Redmineインストールの際は、このメッセージの対応はNGのようです。


/usr/local/ruby-enterprise-1.8.7-2012.02/bin/rake generate_session_store
(in /[インストールディレクトリ]/redmine-1.3.2)
NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01.
Gem.source_index called from /[インストールディレクトリ]/redmine-1.3.2/config/../vendor/rails/railties/lib/rails/gem_dependency.rb:21.
NOTE: Gem::SourceIndex#initialize is deprecated with no replacement. It will be removed on or after 2011-11-01.
Gem::SourceIndex#initialize called from /[インストールディレクトリ]/redmine-1.3.2/config/../vendor/rails/railties/lib/rails/vendor_gem_source_index.rb:100.
NOTE: Gem::SourceIndex#add_spec is deprecated, use Specification.add_spec. It will be removed on or after 2011-11-01.
Gem::SourceIndex#add_spec called from /usr/local/ruby-enterprise-1.8.7-2012.02/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:91.
NOTE: Gem::SourceIndex#add_spec is deprecated, use Specification.add_spec. It will be removed on or after 2011-11-01.
Gem::SourceIndex#add_spec called from /usr/local/ruby-enterprise-1.8.7-2012.02/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:91.
NOTE: Gem::SourceIndex#add_spec is deprecated, use Specification.add_spec. It will be removed on or after 2011-11-01.
Gem::SourceIndex#add_spec called from /usr/local/ruby-enterprise-1.8.7-2012.02/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:91.
NOTE: Gem::SourceIndex#add_spec is deprecated, use Specification.add_spec. It will be removed on or after 2011-11-01.
Gem::SourceIndex#add_spec called from /usr/local/ruby-enterprise-1.8.7-2012.02/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:91.
NOTE: Gem::SourceIndex#add_spec is deprecated, use Specification.add_spec. It will be removed on or after 2011-11-01.
Gem::SourceIndex#add_spec called from /usr/local/ruby-enterprise-1.8.7-2012.02/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:91.
NOTE: Gem::SourceIndex#add_spec is deprecated, use Specification.add_spec. It will be removed on or after 2011-11-01.
Gem::SourceIndex#add_spec called from /usr/local/ruby-enterprise-1.8.7-2012.02/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:91.
NOTE: Gem::SourceIndex#add_spec is deprecated, use Specification.add_spec. It will be removed on or after 2011-11-01.
Gem::SourceIndex#add_spec called from /usr/local/ruby-enterprise-1.8.7-2012.02/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:91.
NOTE: Gem::SourceIndex#add_spec is deprecated, use Specification.add_spec. It will be removed on or after 2011-11-01.
Gem::SourceIndex#add_spec called from /usr/local/ruby-enterprise-1.8.7-2012.02/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:91.
Please install RDoc 2.4.2+ to generate documentation.


対応した方法ですが、gemをダウングレードしました。


gem update --system 1.6.2


これでコマンドが無事通りました。

メールが送信されない at さくらのVPS(2週間おためし無料期間中)


Redmineからメールが送信されないのですが、
「さくらのVPS」の2週間おためし無料期間中は、25番ポートが閉じられているようです。
まあ、お試しなので別の方法にしてみます。
http://sakura.cb-faq.com/faq/public/app/servlet/qadoc?QID=001401

ちなみに「さくらのVPS 512」思ってたよりいいですね。
クラウドもすごく良くなることを願います。




2012年3月18日日曜日

OSX(Lion 10.7)のJAVA_HOME



OSXのJAVA_HOMEってどこなの?
というわけで調べてみた。

内容のわりに長いので、まずは結論から。
java_homeコマンドを利用しました。


vi ~/.bashrc
export JAVA_HOME=`/usr/libexec/java_home`


自力で調べると、
locate java
いろいろ出すぎ・・・

locate javac
少し減った。

たぶんこれ。


ls -la /usr/bin/javac
/usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac
ls -la /usr/bin/java
/usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

ls -la /System/Library/Frameworks/JavaVM.framework
Classes -> Versions/CurrentJDK/Classes
Commands -> Versions/CurrentJDK/Commands
Frameworks -> Versions/Current/Frameworks
Headers -> Versions/Current/Headers
Home -> Versions/CurrentJDK/Home
JavaVM -> Versions/Current/JavaVM
Libraries -> Versions/CurrentJDK/Libraries
Resources -> Versions/Current/Resources
Versions


「HOMEっぽい」ものがあるではないですか。


ls -la /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
bin
bundle -> ../
lib
man


このあたりなのかなと思いますが、シンボリックリンク多くて不安なのでもう少し調べてみました。
AppleのDeveloperサイトで検索してみると、

関係ありそうなのがこちら。
https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/java_home.1.html
https://developer.apple.com/library/mac/#qa/qa1170/_index.html

developerサイトでは、java_homeコマンドがオススメのようなのでこれを使ってみます。
あと、旧バージョンとの互換性のため、/Library/Java/Homeも使えるようです。
ちなみに/Library/java/Homeのリンク先は、上記の「HOMEっぽい」パスでした。
/Library/Java/Home -> /System/Library/Frameworks/JavaVM.framework/Home

次のいずれかがよいかと思います。


export JAVA_HOME=`/usr/libexec/java_home`
または、
export JAVA_HOME=/Library/Java/Home


とにかくバージョン毎のシンボリックリンクが多いので、
パスの管理してくれてるコマンドはありがたいですね。




2012年3月14日水曜日

Scala IDE for EclipseのインストールとHello world



Scalaのエディターは、何がいいんだろう?
ということで、調べてみたところいくつかあるようですが、
IDE and Editor pluginsにあるScala IDEのインストールと
せっかくなのでHello worldまで試してみます。

Scala IDEのサイト上では、インストール方法とHello worldが動画で閲覧できます。
http://scala-ide.org/download/current.html

以下Eclipse、Scala IDEのインストールとHello Worldまでの手順です。
Eclipseのインストール以外は動画とほぼ同じ内容です。

Eclipse 3.6とScala IDE 2.0.0のインストール


▼Eclipse3.6インストール


2012/3/13現在Scala IDEインストール要件
・JDK 5 or JDK 6 (JDK 7 is not supported).
・Scala IDE is officially supporting Eclipse 3.6 (Helios).

Eclipse IDE for Java Developers
http://www.eclipse.org/downloads/packages/release/helios/sr2


ここでは、Mac Cocoa 64-bit版を選択しました。
ダウンロードが終了したら解凍して「アプリケーション」に移動しました。

▼Eclipseアップデート
Eclipseを起動します。


1. メニュー[Help]→[Check Updates]
しばらく待ちます。
2. [Next>]ボタンをクリック
3. [Next>]ボタンをクリック
4. ライセンスの同意を求められるので、
「I accept the terms of the license agreements」にチェックをつけて[Finish]ボタンをクリック
5. アップデートが完了したら[Restart Now]ボタンをクリックしてEclipseを再起動します。


▼Scala IDE for Eclipseのインストール


1. メニュー[Help]→[install New Software]をクリック
2. [add]ボタンクリック
3. 次の項目を入力して[OK]ボタンをクリック


Name: Scala IDE for Scala 2.9
Location: http://download.scala-ide.org/releases-29/stable/site


4. 「Scala IDE for Eclipse」にチェックをつけて[next>]ボタンをクリック
5. [next>]ボタンをクリック
6. ライセンスの同意を求められるので、
「I accept the terms of the license agreements」にチェックをつけて[Finish]ボタンをクリック
しばらく待ちます。
7. [Restart Now]ボタンをクリックしてeclipseを再起動します。


▼Scala IDE for Eclipseの初期設定


1. メニュー[Windows]→[Open Perspective]→[Other...]をクリック
2. [Scala]を選択して[OK]ボタンをクリック
3.「Upgrade of Scala plugin detected.」ダイアログが表示された場合


3-1. [Yes]ボタンをクリックする。
3-2. 「Use recommended default settings」を選択して[OK]ボタンをクリック



▼Hello world


1. メニュー[File]→[New]→[Scala Project]をクリック
2. Project Nameに「HelloWorld」を入力して[Finish]ボタンをクリック
3. メニュー[File]→[New]→[Scala Object]をクリック
4. Name欄に「HelloWorld」と入力する
5. 「Public static void main(String[] args)」にチェックをつける
6. [Finish]ボタンをクリック
7. println("Hello World!")の一行を追加する

object HelloWorld {

  def main(args: Array[String]): Unit = {}
println("Hello world")
}


8. メニュー[File]→[Save]をクリックして保存する
9. メニュー[Run]→[Run as]→[Scala Application]をクリックする
画面下のConsolにHello worldが表示されます。


これで、Scalaプログラミングの準備ができましたね。




2012年3月12日月曜日

Scalaはじめました(Early 2012)



暖かい日もあれば寒かったりとか花粉が飛びまくってたり、もうすっかり春ですね。
春は、新しいことを始めるには最適の季節と勝手に思っています。
ここ3ヶ月バタバタしたのもいったん落ち着いたのと、春なので何かしようとソワソワしていたところ、
前から気になっていたScalaに手を出してみることにしました。

Scala
http://www.scala-lang.org/

ところで、Scalaって何?
wikipediaを引用すると


Scala (スカラ、スカーラ、スケイラ、Scalable Language) はオブジェクト指向言語と関数型言語の特徴を統合したマルチパラダイムのプログラミング言語である。


だそうです。
有名どころでは、Twitterの分散フレームワーク「Gizzard」がScalaで書かれていたり、
FoursquareがScala+Lift(フレームワーク)を使っているらしい。

なぜ興味を持ったかという点ですが、
・関数型言語に興味がある
・型推論がうまく動いているらしい
・Javaのライブラリがそのまま動くらしい
・Java並みのパフォーマンスでしかも、LL言語並みに短いコードで書けるらしい
・他のLL言語よりパフォーマンスが1桁良いとか言われると・・・試したくなる。
・でもJavaは・・・。
Scalaスケーラブルプログラミング第2版という本が気になっていた・・・。

まあ、軽い気持ちで始めますが、多くの人が書いている「なぜScalaか」を読んでいると
自分のやりたいことと同じにおいがするので、Scalaが必要になる日も近いのかも。
前置きが長くなりましたが、はじめの一歩はインストールから。


参考
http://www.scala-lang.org/node/166



Scalaインストール for OSX 10.7


▼Java環境の確認およびインストール
Scalaは、JavaVM上で動作します。そのためインストールにはjavaが必要です。
まずは、手元のMac OS X 10.7環境にインストールされているか確認してみる。


javac -version
javac 1.6.0_29


すでにありますね。いつ入れたのか覚えていませんが・・・。
インストールされていない場合は、こちらからダウンロードしてインストールします。


Java for Mac OS X 10.7 アップデート 1
http://support.apple.com/kb/HT4883?viewlocale=ja_JP


▼rootで作業します。


sudo su -


▼インストール用のディレクトリ作成


mkdir -p /usr/local/bin
mkdir -p /usr/local/share
mkdir -p /usr/local/src


▼ソースコードのダウンロードと解凍


cd /usr/local/src
curl -o scala-2.9.1-1.tgz http://www.scala-lang.org/downloads/distrib/files/scala-2.9.1-1.tgz
tar zxfv scala-2.9.1-1.tgz

※最新版はこちらから
http://www.scala-lang.org/downloads


▼scalaの設置とシンボリックリンク作成


mv scala-2.9.1-1 /usr/local/share/
ln -s /usr/local/share/scala-2.9.1-1 /usr/local/share/scala


▼rootでの作業完了


exit


▼パスを設定(OSX標準の場合、.bash_profileを作成)
vi ~/.bash_profile


if [ -f ~/.bashrc ] ; then
. ~/.bashrc
fi


vi ~/.bashrc


SCALA_HOME=/usr/local/share/scala
PATH=$PATH:$SCALA_HOME/bin
export SCALA_HOME PATH


source ~/.bashrc
▼scala REPL起動


$ scala
Welcome to Scala version 2.9.1-1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_29).
Type in expressions to have them evaluated.
Type :help for more information.


試しに、


scala> 1+ 1
res0: Int = 2


動いてる。
しかし、REPL環境って遅いですね・・・。
リターンキーたたいて戻り値が1、2秒かかりますね。
もちろんJavaVM上で動いているからなんですが・・・便利な反面テンション下がります。まあ、そこはなんとか新しい言語に取り組むモチベーションでなんとかなるでしょう。

次は、エディターあたりを調べてみようと思います。
eclipseなのかな。