設定したことを忘れないように書いてあります。
max_interrupt_work: forcedeth module parameter to fix "too many iterations (6) in nv_nic_irq" errorというログが頻発している。 マルチプロセッサ環境でのforcedethドライバ問題で、大量の割り込みが発生するらしい。 /etc/modprobe.dにoptions.confというファイルを作成し、
options forcedeth max_interrupt_work=15と記述すれば収まる。15は最適かつ最小の値を自分で見つけてね。となっていたので試したが、収まる様子は無かった。
この後、Vine 6.1にあげたら収まった。再起動の必要があったのかも。
Vine 5.1を6.1にアップグレードした。 前回のアップグレード日は忘れたが、2010年5月には5.1になっていた模様。
ここでは推奨されていないapt-getによるインストールを行ったところ色々問題が出た。 現在まで分かっている問題は下記のとおり。
Warning: mysql_connect(): [2002] No such file or directory (trying to connect via unix:///tmp/mysql.sock)これは、mysql.sockの場所が変わった為で、変更されたphp.iniがrpmnewとしてあったため、末尾の3行を追加してあげれば完了。
mysql.default_socket = /var/lib/mysql/mysql.sock mysqli.default_socket = /var/lib/mysql/mysql.sock pdo_mysql.default_socket= /var/lib/mysql/mysql.sock次に、poundがセグメンテーションフォルトで落ちる件だが、Vine 6.1はkernel-3.0系となっているためかと想像。
pound[1645] general protection ip:7f76326d2f50 sp:7fff2c8ac568 error:0 in libunwind.so.7.0.0[7f76326cd000+9000] pound[1749] general protection ip:7fd331ac0f50 sp:7ffff4ff2858 error:0 in libunwind.so.7.0.0[7fd331abb000+9000]となっているので、google-preftoolsが使っているlibunwindで問題があるようだ。 必ずではないのでとりあえず放置したが、プロセス監視などが必要かもしれない。
cyrus imapは長いので、別記事で。
TRACでカスタムフィールドを使用している。 チケットの表示は、大体はカスタムクエリとwikiで用は済んでいたのだが、 カスタムクエリでは、カラムの制御ができない。必要なデータ、フィールドをダウンロードして処理をするためには、 どうしてもカスタムレポートをいじらなければならない。
で、SQLを書くはめになるのだが、たいていのサンプルはprogressのカスタムフィールドを使用した場合のみしか出ていない。 試行錯誤した結果、以下の形で複数のカスタムフィールドを利用することができた。
そもそも、tracのテーブル構造がわからなかったので、まずそれから探す。 ここにまとまってたので、参考にした。 で、以下が、phenomenaとfindingsという二つのフィールドがある場合のサンプルです。
SELECT p.value AS __color__, t.milestone AS __group__, (CASE status WHEN 'closed' THEN 'color: #777; background: #ddd; border-color: #ccc;' ELSE (CASE owner WHEN $USER THEN 'font-weight: bold' END) END) AS __style__, id AS ticket, summary, component, status, resolution,version, t.type AS type, priority, owner, changetime AS modified, tc1.value AS phenomena, tc2.value AS findings, time AS _time,reporter AS _reporter FROM ticket t LEFT OUTER JOIN ticket_custom tc1 ON (t.id = tc1.ticket AND tc1.name = 'phoenomena') LEFT OUTER JOIN ticket_custom tc2 ON (t.id = tc2.ticket AND tc2.name = 'findings') LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority' and tc1.ticket = t.id ORDER BY (milestone IS NULL), milestone DESC, (status = 'closed'), (CASE status WHEN 'closed' THEN modified ELSE (-1)*p.value END) DESC上記を試行錯誤しているうちに、「operationalerror: database is locked trac」などのエラーがでた。 プレビューの段階でエラーがでるので、修正も削除もできない。 ログインしている状態で、 https://{プロジェクトのURL}/report/{レポート番号}?action=edit として編集画面をダイレクトに開いて編集することで対処した。
Pound使用時は、バックエンドのApacheサーバへのアクセスは全てpoundのアドレスからの接続となってしまう。 なので、そのままでは、logファイルなどは全てpoundサーバのアドレスになってしまいいちいちPoundのlogと比較しなければならない。 と書いていたが、PoundはHTTPヘッダーのX-Forwarded-Forに、フォワード元のアドレスを記録するので、ログフォーマットを変更することで、残す事ができるようだ。
具体的には以下の通りに、httpd.confまたはapache2.confのLogFormatの形式設定中の%hを%{X-Forwarded-for}iとすれば良い。 下記はcommon形式のログフォーマットの変更例。
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common
実際にどのような形式で出力するかは、CustomLogディレクティブで既定されているはずなので、そこで既定されている形式(上記ではcommon)のフォーマットを直さないと意味がない。 上記の例ではcommon形式を修正しているが、combinedのフォーマットを利用しているのであればそちらも修正する。
CustomLog logs/access_log common
また、Apacheのアクセス認証を切り換えたい場合 (たとえば、ローカルアドレスからのアクセスは認証しないで、インターネットからのアクセスからは認証する) などの時は、Saisfyディレクティブでホストレベルのアクセス制御とユーザ認証との関係をanyとすれば良いが、 Poundをつかっている場合は、全て同じアドレスとなるので、あまり普通には使わないモジュールを入れる必要があった。
しかし、X-Forwarded-Forう使う事で、標準モジュールだけで設定が可能となった。 以下はその例。 ポイントは、
# ArrowとRequireが利用されている場合に、いずれかの条件を満足すればアクセスを許可する。 Satisfy Any # X-Forwarded-Forに、自分がつかっているローカルアドレスが含まれていた場合はlocalipという環境変数をセットする。 # 下は、192.168.0.0/255 を想定。複数行記述することも可能。 SetEnvIf X-Forwarded-For "192\.168\.0\.[0-9]+" localip # Mod_Accessの条件を既定 Order deny,allow Deny from all # localipという環境変数が設定されていれば、Webアクセスを許可する。 Allow from env=localip # mod_auth_XXXの設定を行う。以下はmod_authn_fileの場合 AuthUserFile /etc/apache2/conf.d/example.pwd AuthGroupFile /dev/null AuthName "Please Enter password" AuthType Basic Require valid-user
まあ、X-Forwarded-Forは詐称可能なので、あまりセキュリティ度は高くは無い。本当に守りたいファイルには使わない事が吉。
pound用のサーバー証明書は、何度か作っているが、コマンドが間違っていたので修正。
誤 openssl req -x509 -newkey rs:1024 -keyout server.pem -out server.pem -days 365 -nodes 正 openssl req -x509 -newkey rsa:1024 -keyout server.pem -out server.pem -days 365 -nodes
当時はあっていたのが、コマンド拡張されたのかは不明。
以前から、バーチャルホスト兼ロードバランサとしてpoundを使っている。 自前でRPM Packageを用意しているのだが、システム更新の際に、2.6.1に以前と同様にPackageを作成したら、それ以降
pound: libgcc_s.so.1 must be installed for pthread_cancel to work pound: MONITOR: worker exited on signal 6, restarting...が出るようになった。調べてみると、異なるバージョンのlibgcc_s.so.1がLD_LIBRARY_PATHにあるということらしいが、findしてみてもlibgcc_s.so.1は一つしかない。 実害は無いようなので放置していたが、今回、パッケージを再作成することで対処した。
まずは、ソースの入手。と思い公式サイトにいってみると、公式のバージョンは2.6から2.5に巻き戻っている。 理由はわからないが、仕方がないので2.5でパッケージを作成する。今回は、公式にあったRedHat用SRPMパッケージを再作成してVine用Pakageを作成することとした。
公式サイトに示されていたサイトからPoundのパッケージをとってきて、rpm -ba pound.specで作成すればよいので楽ちん。 と思ったが、google-perftools-develが無いといわれる。
Vineのパッケージには、無いものなので、こちらも前記の場所からとってくる。 で、google-perftoolsのパッケージを作成しようとすると、今度はlibunwind-develがないと言われる。 こちらは、Vineのパッケージに存在するので、apt-getでインストール。
google-perftoolsは、最大パフォーマンスを発揮するためのアプリケーション開発ツールキットとのことだで、64ビット環境やマルチコアなどさまざまなプラットフォーム環境がある中、チューニングなども大変なため必要なライブラリなんだろうと思う。 まあ、うちの環境くらいでは特に性能差がでるようなことはないとは思うけど。だが一番の問題は、Vine 5.1には既にpoundのパッケージがあることに後で気がついたことだ。Vine使いの人は前記の問題は発生していなかったのかも。