UbuntuサーバーでPhilesight CGIスクリプトを使ってハードディスク使用量を可視化する方法
TL;DR
UbuntuのLAMP環境でPhilesightを導入すると、ローカルネットワーク経由でディスク使用量を視覚的に確認できます。この記事はインストール手順、Apache設定、データベース作成、cronによる自動更新、トラブルシュート、代替手段やセキュリティ注意点までカバーします。
概要
Philesightは、ディレクトリごとの容量をグラフィカルに示すCGIスクリプト群です。ここでは、/var/www を Web ルートに持つ Ubuntu の LAMP(Linux、Apache、MySQL、PHP)サーバーを前提に、実際のコマンドと設定を示します。短い定義:Philesight — Rubyで書かれたディスク使用量視覚化ツール。
重要: 古いパッケージ(ruby 1.8、libdb4.2、libcairo-ruby1.8、libapache2-mod-php5 等)を要求するため、最新のUbuntuではパッケージ名や互換性に注意してください。代替パッケージやソースビルドが必要になることがあります。
前提条件
- Ubuntuサーバーにrootまたはsudo権限があること。
- Webルートが /var/www であること(別の場所ならパスを読み替えてください)。
- ネットワーク内からサーバーにブラウザでアクセスできること。
1. 依存関係のインストール
端末で次を実行します。
sudo apt-get install libdb4.2-ruby1.8 libcairo-ruby1.8 libapache2-mod-perl2 libapache2-mod-php5 ruby
注記: これらのパッケージは古い名前の場合があります。aptで見つからない場合は、同等の新しいパッケージやrubyの最新環境(rbenv, rvm)を検討してください。
2. CGI を有効にする
CGI用ディレクトリを作り、実行権限を設定します。
sudo mkdir /usr/lib/cgi-bin
sudo chmod 755 /usr/lib/cgi-bin
3. Apache のサイト設定を編集
sudo nano /etc/apache2/sites-available/default
サイト設定ファイル内に次のセクションがあることを確認します。
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
編集後に保存して閉じます(Ctrl+X、次に Y)。
4. Philesight を入手して展開する
mkdir ~/downloads
cd ~/downloads
sudo wget http://zevv.nl/play/code/philesight/philesight-20120427.tgz
展開してディレクトリ名を整理します。
tar -xvf philesight-20120427.tgz
sudo mv philesight-20120427 philesight
cd philesight
5. Ruby スクリプトを配置して実行可能にする
sudo mv philesight /usr/bin/philesight
sudo mv philesight.rb /usr/bin/philesight.rb
sudo chmod a+x /usr/bin/philesight
sudo chmod a+x /usr/bin/philesight.rb
6. cron からの呼び出しに備えパスを修正
sudo nano /usr/bin/philesight
ファイル内の次の行を検索して変更します。
require 'philesight'
を次のように書き換えます。
require '/usr/bin/philesight'
保存して閉じます。
7. ディレクトリデータベースを作成する
初回インデックス作成には時間がかかります。実行例:
cd /usr/bin/
sudo /usr/bin/philesight --db /usr/lib/philesightdb --index /
ルート(/)全体を走査するため、データ量に応じて数分~数時間かかることがあります。
8. Web 用ファイルを準備する
cd ~/downloads/philesight
sudo nano philesight.cgi
スクリプト内の次のパラメータを編集します。
$path_db = "/usr/lib/philesightdb"
保存して閉じます。
CGI スクリプトを配置して実行権限を付与します。
sudo mv philesight.cgi /usr/lib/cgi-bin/philesight.cgi
sudo chmod a+x /usr/lib/cgi-bin/philesight.cgi
Ruby スクリプトへのシンボリックリンクを作成します。
sudo ln -s /usr/bin/philesight.rb /usr/lib/cgi-bin/philesight.rb
sudo chmod a+x /usr/bin/philesight.rb
9. Webサーバーを再起動
sudo apache2ctl restart
sudo service apache2 restart
sudo /etc/init.d/apache2 force-reload
ブラウザで次のURLにアクセスします(your_server_name を実際のホスト名かIPに置き換えてください)。
http://your_server_name/cgi-bin/philesight.cgi
初回表示で「proc が100%」のような表示が出ることがあります。これは proc ファイルシステムが占めて見える表示上の仕様で、多くの場合無視してページ下部のフォルダ一覧へスクロールしてください。各フォルダをクリックすると中身の視覚表示が見られます。
10. 画像を自動更新する cron を追加
日次でインデックスを更新する例を示します。
sudo nano /etc/cron.daily/philesight
以下を貼り付けて保存します。
#!/bin/sh
sudo rm /usr/lib/philesightdb
sudo /usr/bin/philesight --db /usr/lib/philesightdb --index /
実行権限を付与します。
sudo chmod a+x /etc/cron.daily/philesight
注: 大きなファイルシステムでは毎日フルインデックスは負荷が高いです。必要に応じて週次や差分戦略を検討してください。
トラブルシューティング(よくある問題)
- CGI が実行されない: /usr/lib/cgi-bin/philesight.cgi の実行権限と Apache の ScriptAlias 設定を再確認。エラーログは /var/log/apache2/error.log を確認。
- パッケージが見つからない: 現代の Ubuntu ではパッケージ名が異なるか古い依存関係が使えません。ruby を rbenv/rvm で入れて philesight の Ruby スクリプトを動かす方法を検討。
- proc が100%表示される: 表示上の仕様なので、フォルダ一覧に進んで内容を確認してください。
セキュリティとプライバシーの注意
- CGI を公開ネットワークに露出させないこと。認証のない状態でアクセス可能にするとディレクトリ構造が第三者に見える可能性があります。
- 必要に応じて Apache のアクセス制限(Require ip や Basic 認証)を設定してください。
- 検索インデックスに機密ファイルが含まれないように除外ルールを設けるか、インデックス対象のパスを限定してください。
代替アプローチ
- ncdu: CLI でインタラクティブにディスク使用量を調査できる。軽量でその場で調べたいときに有用。
- baobab (ディスク使用量アナライザー): GUI 環境がある場合に便利。
- Prometheus + Grafana: 長期的なメトリクス収集と可視化が必要な場合に適する。
- du + ツールチェーン: スクリプトで定期レポートを作る簡易的な方法。
管理者向けチェックリスト(導入・運用)
- Apache の ScriptAlias と CGI 設定を有効にする
- 必要な Ruby とライブラリをインストールする(互換性を確認)
- /usr/lib/philesightdb にインデックスを作成する
- philesight.cgi を /usr/lib/cgi-bin に配置して実行権限を与える
- Cron の更新頻度を決め、負荷を監視する
- アクセス制限とログ監査を設定する
受け入れ基準(簡潔)
- ブラウザで http://your_server_name/cgi-bin/philesight.cgi にアクセスし、各ルートフォルダの視覚表示が正しく表示される
- cron ジョブ実行後に /usr/lib/philesightdb が更新される
- Apache エラーログに致命的なエラーが出ていない
まとめ
Philesight はローカルネットワーク内で視覚的にディスク使用量を把握する簡便な手段です。ただし、古い依存関係やセキュリティの観点から注意が必要です。モダンな環境では ncdu や Prometheus/Grafana といった代替ツールも検討してください。
重要: パッケージ互換性や公開範囲には十分注意して運用してください。