CentOS 5.4以降では、IPv6無効化の方法が変わっていたので、忘れないように
書いておく。
# echo 'options ipv6 disable=1' > /etc/modprobe.d/disable-ipv6.conf
上記の設定を行った後、再起動すると適用される。
/etc/modprobe.conf や /etc/sysconfig/network で頑張っても無視されるので、
要注意!
CentOS 5.4以降では、IPv6無効化の方法が変わっていたので、忘れないように
書いておく。
# echo 'options ipv6 disable=1' > /etc/modprobe.d/disable-ipv6.conf
上記の設定を行った後、再起動すると適用される。
/etc/modprobe.conf や /etc/sysconfig/network で頑張っても無視されるので、
要注意!
perlでDBIを使った処理でforkさせた際に、ちょっとはまったので、忘れないように書いておく。
親プロセスで、DB接続後にforkする場合、子プロセスにデーターベースハンドルが引き継がれて
しまい、困った事象(親のDB接続が切れる)が発生する。
これを回避するには、親プロセスのDB接続時に「AutoInactiveDestroy => 1」を設定すると、
幸せになれる。
○ソース例
|
ただし、"AutoInactiveDestroy"が使えるのは、DBIのバージョンが1.6.14以降の場合のみ。
それ以前の場合は、子プロセススタート時に、「$conn->{InactiveDestroy} = 1」とするとよい。
ちなみに、perlモジュールのバージョン確認は、Module::Infoをインストールしておくと、
簡単に確認できる。
|
#サンプル出力のバージョンが残念なバージョンでした...
php 5.3には色々な変更点があるが、Smartyも3系で大きな変更が行われており、
既存システムやサイトを動かそうとすると、はまりどころが多いようです。
現時点で、はまった点を忘れないように書いておきます。
・phpのエラーレポートレベルが変更されている
E_DEPRECATED が追加されていて、将来使えなくなるコードがエラーとして表示される。(標準状態)
ソースを変更しないといけないことには、変わりがないが、取り急ぎ稼働させたい場合は、
レポートレベルを変更して、エラーが出ないようにすることは可能。
error_reporting = E_ALL & ~E_NOTICE
↓
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
・Smarty 3.0.7からpopup系のプラグインが削除されている
吹き出しみたいな感じで使えたpopupプラグインが削除されている。
継続して使いたい場合は、テンプレートに自分で記載するか、自前プラグインを作る必要有り。
(まあ、新しいサイトの場合は、使わないと思うので、大した問題ではないと思う)
・Smartyの"html_options"等のソースが変
html_options等を利用しているテンプレートで、2回目以降の表示の際に、
Call to undefined function smarty_function_escape_special_chars() in /usr/lib64/Smarty/plugins/function.html_options.php
などのエラーが表示されて、異常終了するケースが発生した。
該当のfunctionは、function.html_options.phpの33行目あたりで、require_onceでロードされているが、
キャッシュされた2回目以降の実行でうまくロード出来ない模様。
この問題は根が深そうな感じだが、取り急ぎ動作させるには、require_once → requireにすれば、
動作可能になる。
根本的な原因調査は、継続中。(Smarty本体の可能性が高いと感じている)
phpのincludeとinclude_once及びrequireとrequire_onceは、使いどころをよく考える必要有り。
mod_nssがインストールされた環境で、CentOSを5.6にアップデートして、httpdを再起動すると、
サイトにアクセス出来ない問題が発生したため、忘れないように記載しておく。
○エラー内容
error.logに下記のようなエラーが出力され、Apacheがまともに起動しない。
[error] NSS_Initialize failed. Certificate database: /etc/httpd/alias.
○原因
CentOS 5.6でアップデートされた「mod_nss-1.0.8-3.el5」が原因。
/etc/httpd/alias/ 配下のdbファイルのパーミッションが変更され、rootのみ読み書き可に
なってしまっており、Apacheの実行アカウントでアクセスできないため、エラーとなる。
アップデート後の/etc/httpd/alias/
| drwxr-xr-x 2 root root 4096 4月 11 10:46 . drwxr-xr-x 5 root root 4096 4月 11 10:43 .. -rw-r----- 1 root apache 65536 7月 10 2008 cert8.db -rw------- 1 root root 4395 7月 10 2008 install.log -rw-r----- 1 root apache 16384 7月 10 2008 key3.db lrwxrwxrwx 1 root root 31 4月 11 10:46 libnssckbi.so -> ../../..//usr/lib/libnssckbi.so -rw-r----- 1 root apache 16384 7月 10 2008 secmod.db |
○対策
/etc/httpd/alias配下のdbファイルのパーミッションを変更し、Apacheの実行アカウントで
アクセス出来る状態にして、httpdを再起動する。
(dbファイルのグループをapacheにして、グループへ読込権限を与える)
対策後の/etc/httpd/alias/
| drwxr-xr-x 2 root root 4096 4月 11 10:46 . drwxr-xr-x 5 root root 4096 4月 11 10:43 .. -rw-r----- 1 root apache 65536 7月 10 2008 cert8.db -rw------- 1 root root 4395 7月 10 2008 install.log -rw-r----- 1 root apache 16384 7月 10 2008 key3.db lrwxrwxrwx 1 root root 31 4月 11 10:46 libnssckbi.so -> ../../..//usr/lib/libnssckbi.so -rw-r----- 1 root apache 16384 7月 10 2008 secmod.db |
ちなみに、mod_nssをインストールしていない環境は、もちろん影響なし。
こんなアップデートパッケージのエラーは勘弁して欲しい...
どうやら、根本的な原因は、perl-IO-Compressのリポジトリが変更されたことらしい。
rpmforge → rpmforge-extras
ということで、対策には、rpmforgeの設定見直しと個別アップデートが必要になった。
| # yum update rpmforge-release |
リポジトリのアップデートと、設定ファイル(/etc/yum.repos.d/rpmforge.repo)の変更。
上記のアップデートで、rpmforge.repo.rpmnewが作成されているはずなので、その内容に沿って、
"rpmforge-extras"と"rpmforge-testing"リポジトリを追加。
| # yum update --enablerepo=rpmforge-extras perl-IO-Compress |
あとは、普通に"yum update"でアップデート可能になります。
PHPとPostgreSQLがアップデートしていたので、メインサーバーをアップデートした。
PHP: 5.3.5
PostgreSQL: 9.0.2
両方ともマイナーアップデートなので、特に問題は発生せず、動作も問題なしだった。
ただ、PECLのAPCがいつの間にかアップデートしており、3.1.6(stable)が
2010/11/30にUPされており、これで、PHP 5.3系もAPCをstableで
利用できるようになったのではないかと思われます。
(今までは、betaしか使用できなかった...)
特段、上記の組み合わせで自社サーバーで問題が発生していないので、そろそろ
各種システムでの実装テストを行う必要が出てきたなぁ~
PostgreSQL 9の継続的アーカイブ処理とストリーミングレプリケーションを
試したいが、テストするにも環境構築が大変だなぁ... (-_-;)
なかなか魅力的な機能がてんこ盛りのPostgreSQLを試しに自社サーバーでアップグレードしてみました。
早速、メジャーアップグレードにありがちな、引っかかった部分があったので、
忘れないように、書き留めておきます。
○引っかかった部分
Movable Type OpenSource
○問題
管理ページにログインできない。
"Can't use string ~ as an ARRAY ref while 'strict refs' in use"といった
エラーメッセージが出力される。
○原因
bytea型の出力がデフォルトで 16進形式となったことが原因。
"author_meta_vblob"テーブルにbytea型が使われている。
○回避策
postgresql.confで、bytea型の出力形式を変更可能なので、とりあえず他に
影響ないようだったら、以前の出力形式に戻す。
|
#bytea_output = 'hex' |
もちろん、postgresql.confの変更の後は、PostgreSQLの再起動が必要です。
9.0のリリースノートは読んではいたが、自分が設計していないものになると、
何を使っているかは分からないので、使ってみないとやはり分からないものです。
○PostgreSQL 9.0リリースノート
http://www.postgresql.jp/document/9.0/html/release-9-0.html
Twitter公式のツイートボタンが公開されたので、設置してみた。
設置方法は、簡単で、Twitterにログインした状態で、下記のサイトにアクセスして、
設置したいボタンタイプを選んで、表示されたソースコードを、ページの任意の
位置に貼り付けるだけです。
このボタンのメリットは、
といった感じです。
このページにも、ツイートボタンを付けているので、ツイートしてみてください。
サービスとして提供しているものもあるので、忘れないようにMeCabのインストール
方法を書いておく。
○MeCabのインストール
ソースファイルを公式サイトからダウンロードして、インストールする。
文字コード指定を忘れないこと。
prefixのデフォルトは、/usr/local/
| $ tar zxfv mecab-X.X.tar.gz $ cd mecab-X.X $ ./configure --with-charset=utf8 $ make $ make check $ su - # make install |
○MeCab辞書をインストール
辞書ファイルを公式サイトからダウンロードして、インストールする。
文字コード指定を忘れないこと。
| $ tar zxfv mecab-ipadic-2.7.0-XXXX.tar.gz $ mecab-ipadic-2.7.0-XXXX $ ./configure --with-charset=utf8 $ make $ su - # make install |
上記2つをインストールすることで、/usr/local/binにパスが通っていれば、
mecabが利用可能になります。
PHP上から、MeCabを使うには、php_mecabをインストールする方法が、
スマートと思われます。
ただし、php 5.3環境でそのままコンパイルするとエラーになるので、ソース修正が
必要です。
上記のような環境ができあがると、例えば、郵便番号データーを辞書ファイル化して
住所を分ち書きしたりできます。
○PHPで都道府県、市区町村、町域名以降の住所分割を高速に行う方法
これを応用して、住所から郵便番号を取得できるようになります。
Spamassassinの定義ファイルは、TLECのファイルをベースに利用していたのですが、
ここのところ、TLECのサイト自体に接続出来なくなっていました。
どうしてかなと、思って調べてみたところ、どうやらTLECのサイトは終了してしまった
ようです。
「user_prefs」は、TLECで公開されていたファイルを作成されていた方が、
個人サイトにて公開&更新を続けておられるようですので、そちらをベースに
使っていきたいと思います。
user_prefsは、下記URLでダウンロード出来ます。