設定したことを忘れないように書いてあります。
Vine Linuxを長年使ってきたが、近年更新が行われず、自分でrpmを作ってメンテナンスするのも面倒になってきたので、ディストリビューションをCent OS 8に変更してサーバを構築し直すことにした。
当初は、サーバのハードを更新せずに、ディストリビューションだけ入れ換えようと考えたが、移行が非常に面倒なのと、現行サーバのファンが異音を発生するようになったため、ハードを更新することとしした。
サーバの選定としては、RAID構成としたいので、HDDが2本入ることを条件とした。しかし小型筐体でHDDが2本はいるものはほとんど無い。
何とか見つけたのが、shutle Direct 専売品のXH310R。スペックは以下の通り。注意点はオンボードグラフィックが一切ないのでGPU内蔵のCPUでないとBIOSセットアップもできない事。
| 製品名 | XH310R | |
| 形状 | スリム型 | |
| 素材 | スチール | |
| 色 | 黒 | |
| 外形寸法 | 幅200×奥行き238×高さ73.2㎜ | |
| 重量 | 2.2kg/3.5kg(化粧箱を含む) | |
| プロセッサー | LGA1151 ※第8/9世代CPU対応 | |
| チップセット | インテル? H310 | |
| 対応メモリー | DDR4-2400/2666 So-DIMM×2(最大32GB) デュアルチャンネル対応 |
|
| 拡張スロット | 非搭載 | |
| ドライブベイ | 3.5インチ | 非搭載 |
| 2.5インチ | 2(9.5mm厚までのHDD/SSD対応) | |
| スリム光学 | 1 | |
| オーディオ | Realtek? ALC662、5.1チャンネル、HD Audio | |
| ネットワーク | デュアルギガビットLAN(インテル I211) >Wake-On-Lan(WOL) |
|
| オンボードコネクター | Serial ATA 6Gbps | 3 |
| M.2 Type M Key | 1 (type 2242, 2260, 2280対応) | |
| M.2 Type A,E Key | 1 (type 2230対応) | |
| 電源 | 90W ACアダプター | |
| Mini−ITX互換 | 対応 | |
| ファンレス | 非対応 | |
| 映像端子 | HDMI×1(HDMI2.0a) DisplayPort ×1 D-Sub/VGA ×1 |
|
| 外部接続端子(前面) | USB | USB3.1Gen1×2 USB2.0×2 |
| COMポート | 非搭載 | |
| カードリーダー | 非搭載 | |
| オーディオ | ヘッドホン出力×1 マイク入力×1 |
|
| eSATA | 非搭載 | |
| リセットボタン | 非搭載 | |
| 外部接続端子(背面) | USB | USB3.1Gen1×2 USB2.0×2 |
| eSATA | 非搭載 | |
| eSATAパワーコネクター | 非搭載 | |
| LAN | 2 | |
| オーディオ | ライン入力×1 ライン出力×1 マイク入力×1 |
|
| S/PDIF | 非搭載 | |
| COMポート | 2(RS232+RS232/RS422/RS485) | |
| PS/2 | 非搭載 | |
| 外部電源コネクター | 非搭載 | |
| CMOSクリアボタン | 1 | |
| 無線LANアンテナコネクター | 2 | |
| ケンジントンロック | 対応 | |
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は詐称可能なので、あまりセキュリティ度は高くは無い。本当に守りたいファイルには使わない事が吉。