2014/02/15(土)FreeBSD 10 上で Apache 2.4.7 やPHP は動作しない?

2017/10/12 17:06 サーバ運営・管理
clang 検証作業で最も嵌ったのはこれでした。orz
20140215_2.png

具体的には Apache 2.4.7 + mod_perl 2.0.8(スタティックリンク) + PHP 5.5.9
という組み合わせ。
Apache 2.4 において、mod_perl は公式には使えないですが、Apache 2.4 用にパッチを充てているため、使用可能にしております。

FreeBSD 10.0R の openssl バージョンは 1.0.1e が組み込まれています。
蛇足ですが、openssl のこのバージョンではブラウザ側さえ対応すれば、ネームベースのバーチャルセキュアSSLサーバが提供できるようになります。(普及の足を引っ張っているのは IE なわけだが・・)

まず、clang 環境で構築すると、mod_perl ライブラリをリンクするところで、原因不明の「シンボルが未定義っす。。」みたいなメッセージをかなり大量に吐いてコケます。つまり、「使えそうに無い」のです。
Apache 2.4.7 単体、あるいは動的リンクだと clang 環境でも構築可能かもしれませんが、こちらでは未検証です。

ならば、gcc 環境を強制すればいいのですが、環境変数 CC を gcc に設定するだけでは駄目で、mod_perl 側の Makefile をコンパイル前に書き換える必要があります。

mod_perl のトップディレクトリにて、
 perl -pi -e 's/CC = cc/CC = gcc/' Makefile
 perl -pi -e 's/CC = cc/CC = gcc/' */Makefile
 perl -pi -e 's/CC = cc/CC = gcc/' */*/Makefile
 perl -pi -e 's/CC = cc/CC = gcc/' */*/*/Makefile
 perl -pi -e 's/LD = cc/LD = gcc/' */Makefile
 perl -pi -e 's/LD = cc/LD = gcc/' */*/Makefile
 perl -pi -e 's/LD = cc/LD = gcc/' */*/*/Makefile
 perl -pi -e 's/\tcc \-E/\tgcc \-E/' Makefile
 perl -pi -e 's/\tcc \-E/\tgcc \-E/' */Makefile
 perl -pi -e 's/\tcc \-E/\tgcc \-E/' */*/Makefile
 perl -pi -e 's/\tcc \-E/\tgcc \-E/' */*/*/Makefile
のようにして、コンパイラ gcc 使用を強制させる必要があります。
(このままでは、デフォルトコンパイラ clang 使用が強制されるため)

ところがこのようにして構築しても、Apache 2.4.7 + mod_perl を起動させても、
表示はハングしてしまい、まともに使えません。
Apache 2.4.6 まで使えていた mod_perl の Apache 2.4 パッチが利用できない状況になったのかもしれません。

Apache 2.4.6 であれば、上記の手法にて FreeBSD 10 上で運用できます。

もうひとつの問題は、PHP 5.5.9。
どういうわけか libphp5.so が作成されません。
configure でも shered Library Support は no とされてしまいます。。

原因は判らないが、構築環境の問題であることは確か。
下記ページを参考に、手動で .so ファイルを作成しました。
Permanent Link to How to compile PHP5 on 64bit Linux (CentOS) [hiro345]

ところで、提起ページでいう「かなり長いコマンド」は、実に20000文字近い長さがあり、通常環境では、上手くいきません。こんなときは、バイナリエディトするのです。
unix 環境では、hexedit とかあるのですが、インストールが面倒なので以下で示すようにして、「かなり長いコマンド」をファイルにして、編集しました。こんな感じです:
vimでバイナリを表示し、値を変更したい [rdera ブログ]

これで、こんな感じで構築できました。
20140215_3.png

2014/02/15(土)FreeBSD10 でアプリケーションを構築してみる

2017/10/12 17:04 サーバ運営・管理
freebsd-update だと、named.conf 設定ファイルが消えるとかの報告が入っているので、subversion によるソースコード取得をして、自力構築でやってみました。
この方法だと、構築に要する時間はかかりますが、旧環境は温存できます。

それはさておき、FreeBSD 10 はどんなものか、を把握するために、ちょっとやってみたところが・・・
20140215_1.png

正直、嵌ったので・・・orz
情報で得る内容と、実際に実務作業して得る内容は概して異なることが多いので、こうして経験することが重要なのです。

まず、ports の内部管理方法が変わり、portupgrade コマンドでアプリケーションの更新をしようとすると、「pkgng をインストールしろ」みたいなメッセージが出て怒られてしまい、以下のような手順が表示される :
- switch to pkgng:
    1) Add WITHOUT_PKGNG to /etc/make.conf
    2) Install ports-mgmt/pkg
    3) Convert your package database by running pkg2ng
    4) Remove WITHOUT_PKGNG from /etc/make.conf
提示されたとおりにして、再び portupgrade コマンドでアプリケーションの更新を行うことができました。
portsnap コマンド、portversion コマンドなどは、画面表示が若干変更されていますが、従来どおり使用できます。

気になる(ここからが本題)のが、デフォルトのコンパイラが clang に変わったことによる影響です。
当方では、痒いところに手が届くよう、一部の主要ソフトウェアをソースコードから構築しています。それらソフトウェアに対する影響です。
結果、これに嵌りました・・・ 以下、こちらで判明した内容です。
ただ、十分な確認はしていません。
筆者の通常環境である、環境変数 CC を未定義にしておいたときの状態です。

・Postfix  : clang 環境でも問題無さそう
・dovecot  : clang 環境でも問題無さそう
・PostgreSQL : configure が gcc を強制する。
・OpenLDAP  : clang 環境でも問題無さそう
・Courier-Authlib: configure が gcc を強制する。
・Maildrop  : configure が gcc を強制する。
・ClamAV   : configure が gcc を強制する。
・Apache 2.4 : clang 環境では構築不可。 環境変数 CC で gcc を強制要。
・PHP 5.5  : clang 環境では構築不可。 環境変数 CC で gcc を強制要。
・mod_perl  : clang 環境では構築不可。 環境変数 CC で gcc を強制要。
・rsyncd   : configure が gcc を強制する。
・proftpd  : configure が gcc を強制する。

筆者の環境では、Web サーバにて Apache 2.4 + mod_perl + PHP 5.5 という組み合わせと、 Apache 2.2 + mod_perl + PHP 5.4 という組み合わせで運用しています。

実は、この組み合わせでも嵌ったのですが、別記事にします。

2014/01/28(火)FreeBSD 10.0R リリース

2017/10/12 5:56 サーバ運営・管理
今月20日にリリースされていました。
思っていたよりも早く、また忘れていたというのが実情でしょうか。。orz

今回のバージョンは、既存ユーザ目線で見ても結構変わっています。
従来バージョンからのアップデートは可能ですが、freebsd-update(8) を使ってアップデートする場合、以下のバージョン相当以上である必要があります:
FreeBSD 8.3R-p13
FreeBSD 8.4R-p6
FreeBSD 9.1R-p9
FreeBSD 9.2R-p2  (以上 FreeBSD-EN-13:04,FreeBSD-EN-13:05 より)

大きな変更点としては、

・ デフォルトで使用する(C言語)コンパイラを GCC から clang(1) に変更した。
・ ベースシステムのDNSリゾルバを Unbound に変更した。 BIND はベースシステムから外した。
・ make(1) を NetBSD Projectで運用実績のある bmake(1) に置き換えた。
・ 新たに pkg(7) をデフォルトで使用するインストールソフトウェア管理ユーティリティとして提供した。
  pkg_add(1), pkg_delete(1) は上記で対応できるので削除した。
・ 仮想環境の改良。 bhyve(8), virtio(4), Microsoft Hyper-V を guest 環境で使用できるようにした(?) #ちょっと意味不明・・
・ ZFS ファイルシステム TRIM サポートにSSDドライブを追加対応した.
・ ZFS ファイルシステムに high-performance LZ4 圧縮アルゴリズムを追加。
とアナウンスされているようです。

今般でサポート期限は以下のようになっています:


FreeBSD 8.3 は、今年(2014年)4月末でサポート終了になります。