VineLinuxパフォーマンスアッププロジェクト:0197
■リンク切れを総チェックするには■
Webサイトを運用していると必ずといっていいほどリンクを貼る場合があります。最初のうちは正しくリンクされているのですが、半年・1年と経過して、いざリンクを確認すると、いつの間にか「リンク切れ」なんてことも・・・。
今回はWebサイトのリンク状態や、更新状況をチェックして、レポート出力してくれるすごいソフトをご紹介します。
Webサイトのリンク状態を調べてくれるソフトはいろいろありますが、Linux上で動作するソフトは当方で確認したところ、数種類程度しかありません(自作は別ですが)。その中でも興味をもったのが、インストールが簡単で結果がわかりやすいwebcheckというソフトでした。
ただし、このwebcheckは英語版しかリリースされていないため、英語が苦手な方はちょっと抵抗があるかもしれません。
▼事前準備
ApacheなどのWebサーバが稼働しており、リンクが設定されているページが1つ以上あることが大前提となります。
また、webcheckはPythonという言語で作成されているため、Webサーバ上にPythonがインストールされている必要があります。VineLinuxをフルインストールした場合、デフォルトでインストールされているはずですが、インストールされていなけれがapt-getコマンドやSynaptic等でインストールしておいてください。
▼webcheckのダウンロードとインストール
※以下、Apacheのドキュメントルートディレクトリは/home/httpd/html以下とします。
こちらのページからwebcheckを適当なディレクトリ下にダウンロードします。
webcheck-X.XX.X.tar.gz(←XXXはバージョン番号)というファイルがダウンロードされますので、これをダウンロードしたディレクトリ内で展開します。
tar zxvf webcheck-X.XX.X.tar.gz
展開すると、webcheck-X.XX.Xというディレクトリができあがりますので、これをwebcheckに変更して、Apacheのドキュメントルートディレクトリ下に移動させます。
mv -i webcheck-X.XX.X/ webcheck/
mv webcheck/ /home/httpd/html/
そしてコマンド実行できるように、シンボリックリンクを設定します。webcheckディレクトリ下にある"webcheck.py"がwebcheckの実行ファイルとなりますので、これを/usr/bin以下にリンク設定します。
ln -s /home/httpd/html/webcheck/webcheck.py /usr/bin/webcheck
manコマンドを利用して、ターミナル上からwebcheckのマニュアルを参照するように設定できるようですが、当方では未確認です。詳細はwebcheckディレクトリ下にある"README"ファイルを参照してください。
▼webcheckの実行
上記の編集が完了したら、以下のコマンドで実行してみます。
webcheck -f -o /home/httpd/html/webcheck/ http://[ご自分のアドレス]
【引数の説明】
-f: 検索レポート(htmlファイル)を上書きする
-o [ディレクトリパス]: 検索レポート(htmlファイル)を出力するディレクトリパス
-q: チェック進捗ログを出力しない
--help: 使い方を表示する
コマンドの実行が終了すると、/home/httpd/html/webcheck/以下に画像1のようなレポートが出力されますので、確認してみてください。
画像1: webcheckのレポートトップページ
当方で確認したところ、サイトのトップページを指定すると、そのフォルダ内しか検索してくれないようです。
しかし、サブディレクトリ以下を指定すると、ちゃんと末端まで検索してくれるみたいです。
このレポートにはメニューがあり、それぞれの項目に対するレポートを確認することができます。各項目の説明は以下の画像2の通りです。
画像2: 各レポートの説明
リンク切れのページ以外にも、"problems by author"ではhtmlの文法的な観点をチェックしてくれるなど、いろいろ役立ちそうな情報が出力されています。
▼定例ジョブ化
ここまで実行できたら、cron等で定例ジョブにすることも可能です。ちなみに、ごく簡単ですが、当方で利用しているシェルスクリプトは以下にのせておきます。当方では週1回このジョブを流して、リンク状態をチェックするように設定しました。
#!/bin/sh
LOGFILE="/home/httpd/html/XXXXX/webcheck.log"
echo '**********************Webcheck 週次リンクレポート出力開始**********************' > $LOGFILE
date >> $LOGFILE
webcheck -f -q -o /home/httpd/html/webcheck/ http://mkserver.dip.jp/vinelinux/perform >> $LOGFILE
echo '**********************Webcheck 週次リンクレポート出力完了**********************' >> $LOGFILE
date >> $LOGFILE
echo 'レポートファイルは http://mkserver.dip.jp/webcheck/index.html に出力されました。' >> $LOGFILE
このシェルを実行するように/etc/crontabに記載しておけば、日次・週次・月次でリンク状態を確認することができ、とても便利です。