CentOS5(x86_64) + Resin 2.x なサーバー構築

昔のリソースを割と最新のOSで動かそうとするとコケる。という実例。

前提条件

  • x86_64なCentOS 5.2
  • yumで入れれるApache(というよりApache2.2)はResin的に無理なのでソースでApache 2.0.xを入れる
  • 普通にビルドすると jni_vfs.o: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object とか言うてきやがる
  • JDKは一応Sun Microsystemが出してる奴(JDKが腐ってるのかと思ってIBM製とか手を出してみたりしたけど余計に無理だった(includeの中身が足りないとか)
  • ていうか、Makefileが腐ってた
  • 以下の作業はresinを展開した場所で行なうことになってます。

./configure

特に最初のCFLAGSが重要。

[root@localhost resin]# CFLAGS="-fPIC" ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-openssl=/usr --with-jni-include=/usr/local/java/jdk/include --enable-shared --with-jni-include=/usr/local/java/jdk/include --with-java-home=/usr/local/java/jdk

Makefileを編集

resinのmakefileがいろいろと腐ってるので修正

[root@localhost resin]# vi src/c/plugin/resin/Makefile

INCLUDES =  -I/usr/include $(JNI_INCLUDE) -I../common

てなってるのを

INCLUDES =  -I/usr/include -I$(JNI_INCLUDE) -I$(JNI_INCLUDE)/linux -I../common

に修正。

あとは普通にmakeしてmake installすればOKでした。