MODxを動かしたい on FreeBSD


はじめに。
作成日:2007/1/27
作成日:2007/5/20
最近、ちょっとしたツテでFreeBSDで動いている共有サーバを個人的に借りることがうできました。で、今のうちのサイト(ayd.jp)をこのFreeBSDに移そうと考えてます。そのため環境つくりの記録です。
簡単なメモからの掘り起こしなので微妙に間違ってたり順番が変かも…。
現状把握と作業内容
まず使えるFreeBSDサーバの仕様。

  • FreeBSD 4.10。ちと古い。
  • 権限は一般ユーザのみrootにはなれない。
  • rootになれないので1024以下のポートをバインドできない。
  • ログインシェルはtcsh。
  • すでにサーバでapache1.3x系が動いていて、バーチャルホスト設定済。使える状態。
  • PHPは4.x系が使える。
  • MySQLは4.x系が使える。
  • メールも使える。
  • ドメインは勝手に決まってる。ayd.jpを追加するにはお金が別途かかりそう。

この環境だけ見ると普通にサイトの移設は動きそう。ただ、PHPとMySQLのバージョンが低いのが気に入らない。安定してるのもいいけど、なんとなく新しいバージョン使いたいよね。それにapacheの設定が変更できないので、バーチャルサーバも作れない。
というわけでこんな感じの環境を作成。

  • Webサーバはやっぱlighttpdを使いたい。しかもバーチャルホストもやりたい。
  • 既存のapacheからはmod_rewriteとmod_proxyを使ってlighttpdへリクエストを投げるようにする。
  • ドメインは追加させずにayd.jpをバーチャルホストとして設定。
  • メールは諦める(root権限がないと厳しい)。いや、金払って普通にドメイン追加すればいいんだけども。
  • PHPは4.x系じゃなくて5.x系を使いたい。
  • MySQLも4.x系じゃなくて5.x系を使いたい。
  • root権限がないので、ソフトは全部$HOME/root(/home/hoge/root)にインストール。

インストールするソフト一覧は以下の通り(現在構築中なので、もっと増えるかも)。


事前準備
ソフトは全部$HOME/rootにインストールするので、その準備。
ちなみに%が一般ユーザ、#がルート作業です(Linuxの時はだいたい$が一般ユーザだよね…まぁどっちでもいいんだけど)。
…でもroot作業ってないんだった。
% cd ~/ % mkdir ~/root % mkdir ~/root/bin % mkdir ~/root/sbin % mkdir ~/root/lib % vi ~/.cshrc
~/.cshrcに次の行を追加。 ただ、bashの場合は~/.bash_profileでexportコマンドになる(が、今回はtcshなので説明は割愛)。
setenv PATH /home/hoge/root/bin:/home/hoge/root/sbin:${PATH} setenv LD_LIBRARY_PATH /home/hoge/root/lib
最期に設定の再読み込み(別に再度ログインするだけでもOK)。
% source ~/.cshrc % rehash
lighttpdのインストールその1
Webサーバのlighttpd-1.4.13をインストール。
必要なさそうな機能は削りまくる…が、webdavなんかはどうしても無効にならない…何故だろう…。
% tar zxvf lighttpd-1.4.13.tar.gz % cd lighttpd-1.4.13 % ./configure --without-webdav-props --without-webdav-locks --without-ldap --without-bzip2 --without-gzip --without-gdbm --without-lua --without-memcache --disable-ipv6 --prefix=/home/hoge/root % make 〜略〜 unknown C standard `gnu99' *** Error code 1 %
エラーで止まる。どうやら付属のgccのバージョンが古すぎるっぽい。 なのでgcc3系の最新版を入れてみる。
gccのインストールその1
コンパイラgcc-3.4.6をインストール。
% tar zxvf gcc-3.4.6.tar.gz % mkdir build-gcc-3.4.6 % cd build-gcc-3.4.6/ % ../gcc-3.4.6/configure --prefix=/home/hoge/root --enable-shared --with-gnu-ld --enable-threads --enable-languages=c,c++ --enable-threads=posix --enable-__cxa_atexit --build=i386-unknown-freebsd4.10 --host=i386-unknown-freebsd4.10 --enable-clocale=gnu % make 〜略〜 byacc --name-prefix=__gettext --output plural.c ../../gcc-3.4.6/intl/plural.y usage: yacc [-dlrtv] [-b file_prefix] [-o output_filename] [-p symbol_prefix] filename *** Error code 1 %
エラーで止まる。FreeBSD付属のbyaccじゃダメみたい。GNUのyaccが入ってるbisonを入れてみる。
bisonのインストールその1
gccがGNUのyaccを使いたがるので、yaccが入ってるbison-2.1をインストール。
% tar zxvf bison-2.1.tar.gz % cd bison-2.1 % ./configure --prefix=/home/hoge/root 〜略〜 checking whether m4 supports frozen files... no configure: error: GNU M4 1.4 is required %
GNU M4がないぞと怒られる。GNU M4を入れよう。
m4のインストールその1
bisonのコンパイルの為にm4-1.4.8をインストール。
% tar zxvf m4-1.4.8.tar.gz % cd m4-1.4.8 % ./configure --prefix=/home/hoge/root % make 〜略〜 ./m4.texinfo:451: Unknown command `'. ./m4.texinfo:1999: Unknown command `'. ./m4.texinfo:2001: Unknown command `'. %
今度はtexinfoがエラー吐いている。取りあえず新しいtexinfoを入れてみる。
texinfoのインストール
lighttpdを入れたいだけなのにそれに必要なソフトが増殖。いやがらせだ。
今度はtexinfo-4.8aをインストール。
% tar zxvf texinfo-4.8.tar.gz % cd texinfo-4.8 % ./configure --prefix=/home/hoge/root % make % make install % rehash
インストールできた。次はm4インストールに再チャレンジ。
m4のインストールその2
m4-1.4.8に再チャレンジ。
% tar zxvf m4-1.4.8.tar.gz % cd m4-1.4.8 % ./configure --prefix=/home/hoge/root % make % make install % rehash
インストールできた。次はbisonに再チャレンジ。
bisonのインストールその2
bison-2.1に再チャレンジ。
% tar zxvf bison-2.1.tar.gz % cd bison-2.1 % ./configure --prefix=/home/hoge/root % make % make install % rehash
インストールできた。次はgccに再チャレンジ。
gccのインストールその2
gcc-3.4.6に再チャレンジ。
% tar zxvf gcc-3.4.6.tar.gz % mkdir build-gcc-3.4.6 % cd build-gcc-3.4.6/ % ../gcc-3.4.6/configure --prefix=/home/hoge/root --enable-shared --with-gnu-ld --enable-threads --enable-languages=c,c++ --enable-threads=posix --enable-__cxa_atexit --build=i386-unknown-freebsd4.10 --host=i386-unknown-freebsd4.10 --enable-clocale=gnu % make 〜略〜 "Makefile", line 777: Need an operator "Makefile", line 778: Need an operator "Makefile", line 779: Need an operator "Makefile", line 780: Need an operator "Makefile", line 781: Need an operator "Makefile", line 782: Need an operator "Makefile", line 783: Need an operator "Makefile", line 784: Need an operator "Makefile", line 785: Need an operator "Makefile", line 786: Need an operator "Makefile", line 787: Need an operator "Makefile", line 788: Need an operator "Makefile", line 789: Need an operator "Makefile", line 790: Need an operator "Makefile", line 791: Need an operator "Makefile", line 792: Need an operator "Makefile", line 793: Need an operator "Makefile", line 794: Need an operator "Makefile", line 978: Need an operator "Makefile", line 981: Missing dependency operator "Makefile", line 983: Need an operator "Makefile", line 989: Missing dependency operator "Makefile", line 990: Could not find ../../gcc-3.4.6/gcc/config/t-slibgcc-elf-ver ../../gcc-3.4.6/gcc/config/t-freebsd ../../gcc-3.4.6/gcc/config/t-freebsd-thread ../../gcc-3.4.6/gcc/config/t-slibgcc-nolc-override "Makefile", line 991: Need an operator "Makefile", line 994: Missing dependency operator "Makefile", line 995: Could not find "Makefile", line 996: Need an operator make: fatal errors encountered -- cannot continue *** Error code 1 %
エラーが変わっただけでまだエラー。 FreeBSD付属のmakeじゃダメと…GNU make(gmake)を入れよう。
gmakeのインストールその1
FreeBSDのmakeだとgccがいやがるのでGNU make(gmake)-3.81をインストール。
% tar zxvf make-3.81.tar.gz % cd make-3.81 % ./configure --prefix=/home/hoge/root % make % make install % rehash
またまたgccに再チャレンジ。
gccのインストールその3
gcc-3.4.6に再々チャレンジ。
% tar zxvf gcc-3.4.6.tar.gz % mkdir build-gcc-3.4.6 % cd build-gcc-3.4.6/ % ../gcc-3.4.6/configure --prefix=/home/hoge/root --enable-shared --with-gnu-ld --enable-threads --enable-languages=c,c++ --enable-threads=posix --enable-__cxa_atexit --build=i386-unknown-freebsd4.10 --host=i386-unknown-freebsd4.10 --enable-clocale=gnu % gmake 〜中略〜 /usr/home/hoge/src/gcc/3.4.6-make/i386-unknown-freebsd4.10/libstdc++-v3/include/i386-unknown-freebsd4.10/bits/c++locale.h:61: error: `__locale_t' does not name a type /usr/home/hoge/src/gcc/3.4.6-make/i386-unknown-freebsd4.10/libstdc++-v3/include/i386-unknown-freebsd4.10/bits/c++locale.h:75: error: expected `,' or `...' bef\ ore '&' token /usr/home/hoge/src/gcc/3.4.6-make/i386-unknown-freebsd4.10/libstdc++-v3/include/i386-unknown-freebsd4.10/bits/c++locale.h: In function `int std::__convert_from_v(char*, int, const char*, _Tv, int)': /usr/home/hoge/src/gcc/3.4.6-make/i386-unknown-freebsd4.10/libstdc++-v3/include/i386-unknown-freebsd4.10/bits/c++locale.h:86: error: `__prec' was not declared in this scope gmake[3]: *** [allocator.lo] Error 1 gmake[3]: Leaving directory `/usr/home/hoge/src/gcc/3.4.6-make/i386-unknown-freebsd4.10/libstdc++-v3/src' gmake[2]: *** [all-recursive] Error 1 gmake[2]: Leaving directory `/usr/home/hoge/src/gcc/3.4.6-make/i386-unknown-freebsd4.10/libstdc++-v3' gmake[1]: *** [all] Error 2 gmake[1]: Leaving directory `/usr/home/hoge/src/gcc/3.4.6-make/i386-unknown-freebsd4.10/libstdc++-v3' gmake: *** [all-target-libstdc++-v3] Error 2 %
またエラー…。
調べたところglibcが足りない事っぽい所まで判明。 ただ、glibcはFreeBSDにいれることはできない(正確には素人や素人に毛が生えた程度じゃ無理=俺も無理)。 ここで手詰りと思ったんだけどこのエラーはc++で起きてるようだし、思い切ってc++のコンパイラは切り捨ててコンパイル(これが後の災いとなる)。
% tar zxvf gcc-3.4.6.tar.gz % mkdir build-gcc-3.4.6 % cd build-gcc-3.4.6/ % ../gcc-3.4.6/configure --prefix=/home/hoge/root --enable-shared --with-gnu-ld --enable-threads --enable-languages=c --enable-threads=posix --enable-__cxa_atexit --build=i386-unknown-freebsd4.10 --host=i386-unknown-freebsd4.10 --enable-clocale=gnu % gmake % gmake install % rehash
取りあえず入った。やっとlighttpdに再チャレンジ。
pcreのインストール
lighttpdに再チャレンジする前にpcreのインストール。
これはPerl互換の正規表現ライブラリで、lighttpdでmod_rewrite等使いたいときに必須。
% tar zxvf pcre-7.0.tar.gz % cd pcre-7.0 % ./configure --prefix=/home/hoge/root % make % make install % rehash
インストール完了。 今度こそlighttpdに再チャレンジ。
lighttpdのインストールその2
lighttpdに再チャレンジ。
% tar zxvf lighttpd-1.4.13.tar.gz % cd lighttpd-1.4.13 % ./configure --without-webdav-props --without-webdav-locks --without-ldap --without-bzip2 --without-gzip --without-gdbm --without-lua --without-memcache --disable-ipv6 --prefix=/home/hoge/root % make % make install % rehash
インストール完了。 ちゃんと動く稼働かは不明。 細かい設定は後まわし。
次の予定
mysqlのインストール。
phpが必要な各種ライブラリ(zlib,gd,libpng等)のインストール。
phpのインストール。
スピードアップ作戦でfastcgi,APCインストール。

…まだまだ先は長い。
続きはその2へ。