困ったときはログファイル

Cubieboard2 (Arm7 Cortex Dual core 1GHz, 1GByte Ram, 4GByte Flash, OS=armhf debian 7) という、約60ドルで中国から購入したデベロッパーボードを使って運営しているホームサーバーの管理にISPConfig3という管理ソフトを導入して使用している。 Mailサーバー、Webサーバー、DNSそしてnginxプロキシなどをWEBブラウザから一括管理できるので重宝している。
このツール、HowtoForgeというサイトでサポートされていて、”Perfect Server” というシリーズで多様な組み合わせのサーバー設定のチュートリアルが掲載されている。 たとえばこの記事はOSはDebian,サーバープロキシにnginx, mailにはDoveCot、DNSにはBindを使ったサーバー構築の手順が述べられており、実は自分のサーバーはこれを参考にして立ち上げた。(DNSとNGINX、PHP、MySQLの部分はともかく、メールサーバーとメールフィルターの設定は自分ひとりの能力では手も足も出なかった。きちんと設定できたのは上の記事のおかげである)
 最近バージョンのアップデートをしようと思い立ち、コントロールパネルに指示されているiSPsonfig-update.shというコマンドを実行してみた。  アップデート自体はまったく問題なく行えたのだが、 コントロールパネルにログインしようとしてみたところいつもログイン画面が出るはずのurlが空っぽのページになっている。 
他のサービス(メール、Webサイト、DNS、SSHなど)は普通に動いているので、IPSConfigのダッシュボードへのログインが表示できないという限定された不具合だ。 幸いなことにISPConfigのUpdateツールがまず実行するのは旧バージョンのバックアップなので最悪の場合はリストアを行えばよいが、ページのヘッダー情報を見てみると、エラー番号が500、Internal Server Errorとなっているので、これはPHPの実行時、ページレンダリングの途中でおかしくなっている、とあたりをつけた。 NginxのErrorLogを眺めてみると大当たり、Fatal Errorが記録されていた。

11:54:25 [error] 3452#0: *528 FastCGI sent in stderr: "PHP message: PHP Warning:  require_once(/usr/local/ispconfig/interface/lib/config.inc.php): failed to open stream: Permission denied in /usr/local/ispconfig/interface/web/index.php on line 31
PHP message: PHP Fatal error:  require_once(): Failed opening required '../lib/config.inc.php' (include_path='.:/usr/share/php:/usr/share/pear') in /usr/local/ispconfig/interface/web/index.php on line 31" while reading response header from upstream,云々

上のエラーメッセージはindex.phpの31行目config.inc.phpを読み込もうとしたところ、拒否されました。と言っている。 ../libr/config.inc.phpのアクセスレベルがきつすぎるようだ、。
そこでこのファイルを調べてみるとOwner,GroupともISPCONFIGとなっているのは良いとして、Ownerのみに読み書き権限があたえられており、Groupレベルで読み書き禁止となっている。  それではと、Groupレベルでの読み出しも許可に書き換えてみたところ、あっさりと復活した。

#  chmod g+r config.inc.php

これが普通とは思わない。何らかの理由でサーバーのワーカープロセスとファイルのオーナー情報が背反しているためにファイルアクセスできなくなっていると考える。 少し思い当たることがあって、同じサーバー内部でModxを使ったサイトを運営しているのだが、アップデートするたびにSetupフォルダーをマニュアルで削除しなくてはならない、という作業が発生している。 Setupフォルダーの削除はインストール画面でチェックをいれてやれば自動的に行ってくれるはずなのだが、このサーバーではそれができてない。

というわけで、本日わかったこと。
1. Linuxのアクセスレベル管理がいまいち理解できてないなあ。
2. Linux 不具合解析はまずError Logを読む事。

CubieBoard っていうのもある。

Raspberry Pi でポピュラーになったHobbyist development board. BeagleBone Blackについては以前にも書いたけれど、他にも色々ある。 先月CubieBoard2というのを入手した。 値段は59ドルだが、corteck A7 デュアルコア 1Ghz、1GB RAM, 4GBNand, 2USB, SATA I/F, HDMI などなど、現時点でこのプライスレンジのボードではダントツのスペック性能をほこる。 これはCubieTechという中国の会社の製品。 SOCはやはり中国のAllwinner製A20。  RaspberryPiがBoradcomm, BeagleBoneがTIとそれぞれの国のSOCを使っているわけで、日本で同じものをつくろうという有志はいないものか?そもそも日本の国産のSOCってあるのかしらん。 閑話休題

この値段で中国から購入したのだが、送ってくるのが船便みたいで、到着するのに約3週間かかった。(当方米国の中西部在住)
また、このボードが売り出されたのが今年の4月ころということもあってfirmware が固まっておらず、 内臓のMali400 Gpu などの性能を十分にひきだせるようなドライバーがまだまだ開発途中。 ユーザーベースも他のボードにくらべて小さい、ということもあり、初心者入門としてはきちんと動くようにするには少しハードルが高い。またADAFRUIT, ELEMENT 14などのリテイラーのパトロンもついていないので米国で周辺部品を入手するにも苦労しそうだ。

というわけでせっかくGPIOが96ピンもでているわけだが、結局、Debian のディストロを導入してHome Server にした(Name Server, Mail server, Web server, reverse proxy)。 導入の仕方はRaspberry Pi, BeagleBone Black でおこなったのとほとんど同じ。 同じLINUXのディストロを使う強みである。 性能的にはBBBでも十分だったが、 このCubie2、専用のケースに入れてみると、Home Server としての貫録十分であるしさすがに1Ghzのデュアルコア。きびきび動いている印象大。 これでBBBとRasPiはPhysical computing のお遊びにつかえるようにしようと我が家のホームネットワークのクリティカルタスクデューティからは外れたわけである。