設定したことを忘れないように書いてあります。
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は詐称可能なので、あまりセキュリティ度は高くは無い。本当に守りたいファイルには使わない事が吉。