MODXを動かしたい on FreeBSD その2
fastcgiのインストール
phpの実行を早くしてくれるfastcgi2.4.0をインストール。
% tar zxvf fcgi-2.4.0.tar.gz
% cd fcgi-2.4.0
% ./configure --prefix=/home/hoge/root
% make
% make install
% rehash
インストール完了。
phpで使うモジュールのインストール
ここからはPHPに使うモジュール達のインストールが続く。
まずはzlib 1.2.3。
% tar zxvf zlib-1.2.3.tar.gz
% cd zlib-1.2.3
% ./configure --shared --prefix=/home/hoge/root
% make
% make install
% rehash
freetype 2.3.0。
% tar zxvf ./freetype-2.3.0.tar.gz
% cd freetype-2.3.0
% ./configure --prefix=/home/hoge/root
% make
% make install
% rehash
libjpeg 6b。
% tar zxvf jpegsrc.v6b.tar.gz
% cd jpeg-6b/
% ./configure --enable-shared --prefix=/home/hoge/root
% make
% make install
% rehash
libpng 1.2.15。
% tar zxvf libpng-1.2.15.tar.gz
% cd libpng-1.2.15
% ./configure --prefix=/home/hoge/root
% make
% make install
% rehash
gd 2.0.33。
% tar zxvf gd-2.0.33.tar.gz
% cd gd-2.0.33
% ./configure --with-jpeg --with-freetype --with-png --prefix=/home/hoge/root
% make
gcc -DHAVE_CONFIG_H -I. -I. -I. -I/home/hoge/root/include/freetype2 -I/home/hoge/root/include -I/usr/X11R6/include -g -O2 -MT gdkanji.lo -MD -MP -MF .deps/gdkanji.Tpo -c gdkanji.c -fPIC -DPIC -o .libs/gdkanji.lo
gdkanji.c:30: error: conflicting types for 'libiconv'
/usr/local/include/iconv.h:82: error: previous declaration of 'libiconv' was here
gdkanji.c:30: error: conflicting types for 'libiconv'
/usr/local/include/iconv.h:82: error: previous declaration of 'libiconv' was here
make[2]: *** [gdkanji.lo] Error 1
make[2]: Leaving directory `/usr/home/hoge/src/gd/gd-2.0.33'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/home/hoge/src/gd/gd-2.0.33'
make: *** [all] Error 2
libiconvが古いっぽい?
なので新しいlibiconv 1.11入れる。
% tar zxvf libiconv-1.11.tar.gz
% cd libiconv-1.11
% ./configure --prefix=/home/hoge/root
% make
% make install
% rehash
再度gdにリベンジ。
% ./configure --with-jpeg --with-freetype --with-png --prefix=/home/hoge/root
% make
% make install
% rehash
というわけで一通りインストール完了。
mysqlのインストール
MODxが利用するDBのmysql 5.0.33をインストール。
% tar zxvf mysql-5.0.33.tar.gz
% cd mysql-5.0.33
% ./configure --prefix=/home/hoge/root/mysql-5.0.33 --with-mysqld-user=hoge --with-charset=utf8 --with-extra-charsets=all
% gmake
…略…
ha_innodb.o: In function `check_trx_exists(THD *)':
ha_innodb.o(.text+0x502): undefined reference to `ut_dbg_zero'
ha_innodb.o: In function `innobase_query_caching_of_table_permitted(THD *, char *, unsigned int, unsigned long long *)':
ha_innodb.o(.text+0x5cf): undefined reference to `ut_dbg_zero'
ha_innodb.o(.text+0x5da): undefined reference to `ut_dbg_zero'
ha_innodb.o: In function `innobase_init(void)':
ha_innodb.o(.text+0x91b): undefined reference to `ut_dbg_zero'
ha_innodb.o(.text+0x9e6): undefined reference to `ut_dbg_zero'
ha_innodb.o(.text+0xc50): more undefined references to `ut_dbg_zero' follow
gmake[4]: *** [mysqld] Error 1
gmake[4]: Leaving directory `/usr/home/hoge/src/mysql/mysql-5.0.33/sql'
gmake[3]: *** [all-recursive] Error 1
gmake[3]: Leaving directory `/usr/home/hoge/src/mysql/mysql-5.0.33/sql'
gmake[2]: *** [all] Error 2
gmake[2]: Leaving directory `/usr/home/hoge/src/mysql/mysql-5.0.33/sql'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/usr/home/hoge/src/mysql/mysql-5.0.33'
gmake: *** [all] Error 2
エラーでまくり。しかも原因がわからない。
そういやlighttpd入れるときにgccのバージョンが低すぎたので、新しいgcc3.4.6を入れた時にc++を外してコンパイルしたのがダメなのかも(MySQLはc++使ってる)。
なので既存のgccを使うように新しく入れたgccのパスを外す。
% setenv PATH /bin:/usr/bin:/usr/local/bin
リベンジ。
% make clean
% ./configure --prefix=/home/hoge/root/mysql-5.0.33 --with-mysqld-user=hoge --with-charset=utf8 --with-extra-charsets=all
% gmake
% gmake install
% rehash
インストール後の作業。
自働起動の設定は借りてる共用サーバの仕様に合わせている。
% cd ~/root
% ln -s mysql-5.0.33 mysql
% ./mysql/bin/mysql_install_db
% cp ~/src/mysql/mysql-5.0.33/support-files/mysql.server ~/etc/rc.d/mysql5.server.sh
% chmod 755 ~/etc/rc.d/mysql5.server.sh
% cd ~/root/mysql/var
% cp /home/hoge/src/mysql/mysql-5.0.33/support-files/my-medium.cnf my.cnf
% cp my.cnf my.conf.org
% vi my.cnf
my.cnfにbind-addressを追加。外から繋げないように127.0.0.1のみbindさせる。
追加するところはここあたり。
[mysqld]
port = 3306
bind-address = 127.0.0.1 ←ここ
socket = /tmp/mysql.sock
起動してmysql用のrootパスワードの変更。
(OSのrootユーザとは別)
% ~/etc/rc.d/mysql5.server.sh start
% /home/hoge/root/mysql/bin/mysqladmin -u root password 'new-passwd'
インストール完了。
phpのインストール
ここでやっとphp 5.2.1のインストール。
mysqlの時に環境変数をいじってるので、phpの作業前に再度ログインしなおす。
% tar zxvf php-5.2.1.tar.gz
% cd php-5.2.1
% ./configure --prefix=/home/hoge/root/php-cgi --with-config-file-path=/home/hoge/root/php-cgi/etc --with-mysqli=/home/hoge/root/mysql/bin/mysql_config --with-mysql=/home/hoge/root/mysql --enable-mbstring --enable-mbregex --with-zlib --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-fastcgi --enable-force-cgi-redirect --with-jpeg-dir --disable-ipv6 --without-sqlite --disable-pdo
% make
% make install
相変わらずコンフィグが超なげぇ。
でも、インストール完了。
APCのインストールその1
phpを実行を早くしてくれるソフト。
本来phpを実行するときは毎回ソースコードを読み込んで実行するんだけど、一度読み込んだソースをコンパイルしてキャッシュしてくれるらしい。
% tar zxvf APC-3.0.12p2.tgz
% cd APC-3.0.12p2
% /home/hoge/root/php-cgi/bin/phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF
environment variable is set correctly and then rerun this script.
%
autoconfが無いと怒られました。
autoconfのインストール
autoconf 2.61のインストール。
% tar zxvf autoconf-2.61.tar.gz
% cd autoconf-2.61
% ./configure --prefix=/home/hoge/root
% make
% make install
% rehash
インストール完了。
APCのインストールその2
もう一回APCのインストール。
% /home/hoge/root/php-cgi/bin/phpize
% ./configure --prefix=/home/hoge/root/php-cgi --enable-apc-mmap --enable -apc -with-php-config=/home/hoge/root/php-cgi/bin/php-config
% make
% make install
インストール完了。
これで終了
一応この環境を用意したFreeBSD 4.10上でMODxを動かしています。
(APCとか絶対必要なわけじゃないけど、個人的にはお勧め)
細かい設定とかは省きまくりで、インストールの部分だけ記載してるので実は余り役に立たないかもしれない。
にしても結構面倒…レンタルサーバでphpとmysql使えますよーって所を借りるほうがどれだけ楽か。
ここまでして自力の環境構築にこだわるなんてマゾだな。自分なんだけど。