hogehoge foobar Blog Style Beta

Web,Mac,Linux,JavaScript,Perl,PHP,RegExp,Git,Vim,Redmineなど技術的なことのメモや、ちょっと便利そうなものの紹介をしています。

mod_google_analyticsを使ってみた

サイトでGoogleAnalyticsを使うことになって、全てのページにタグを埋めこまなきゃいけないことになった。
grep一発で全置換」は、あまりやりたくないなーと思っていたら、「mod_google_analytics」なるものを発見w。

早速試してみました。
インストール環境は、Ubuntu10.4、Apache2.2。

mod_google_analyticsってなに?

GoogleAnalyticsのタグを自動的にHTMLに挿入するApacheフィルタモジュールです。
と書いてありました。

mod_google_analyticsのダウンロード

下記のgithubページからソースをダウンロードします。
mod_google_analytics
http://github.com/dragon3/mod_google_analytics

mod_google_analyticsのmake

mod_google_analyticsのMakefileを環境によっては書き換え。

basedir=/usr/share/apache2

いざMake

$ make
Makefile:16: /usr/share/apache2/build/special.mk: No such file or directory
make: *** ターゲット `/usr/share/apache2/build/special.mk' を make するルールがありません.  中止.

おーしっぱい。

$ cd /usr/share/apache2/build
$ ls -l
-rw-r--r-- 1 root root  895 2010-04-14 04:27 envvars-std

確かに「special.mk」が無い

apache2-prefork-devをインストール

「special.mk」のためにapache2-prefork-devをインストール。

$ sudo apt-get install apache2-prefork-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  libaprutil1-dev libmysqlclient-dev libmysqlclient16 mysql-common
以下のパッケージが新たにインストールされます:
  apache2-prefork-dev libaprutil1-dev libmysqlclient-dev libmysqlclient16 mysql-common
アップグレード: 0 個、新規インストール: 5 個、削除: 0 個、保留: 229 個。
5,819kB 中 5,149kB のアーカイブを取得する必要があります。
この操作後に追加で 18.1MB のディスク容量が消費されます。
続行しますか [Y/n]? Y
取得:1 http://jp.archive.ubuntu.com/ubuntu/ lucid-updates/main mysql-common 5.1.41-3ubuntu12.3 [97.5kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ lucid-updates/main libmysqlclient16 5.1.41-3ubuntu12.3 [1,932kB]       
取得:3 http://jp.archive.ubuntu.com/ubuntu/ lucid-updates/main libmysqlclient-dev 5.1.41-3ubuntu12.3 [3,120kB]     
5,149kB を 12s で取得しました (402kB/s)                                                                            
未選択パッケージ mysql-common を選択しています。
(データベースを読み込んでいます ... 現在 128224 個のファイルとディレクトリがインストールされています。)
(.../mysql-common_5.1.41-3ubuntu12.3_all.deb から) mysql-common を展開しています...
未選択パッケージ libmysqlclient16 を選択しています。
(.../libmysqlclient16_5.1.41-3ubuntu12.3_i386.deb から) libmysqlclient16 を展開しています...
未選択パッケージ libmysqlclient-dev を選択しています。
(.../libmysqlclient-dev_5.1.41-3ubuntu12.3_i386.deb から) libmysqlclient-dev を展開しています...
未選択パッケージ libaprutil1-dev を選択しています。
(.../libaprutil1-dev_1.3.9+dfsg-3build1_i386.deb から) libaprutil1-dev を展開しています...
未選択パッケージ apache2-prefork-dev を選択しています。
(.../apache2-prefork-dev_2.2.14-5ubuntu8_i386.deb から) apache2-prefork-dev を展開しています...
man-db のトリガを処理しています ...
mysql-common (5.1.41-3ubuntu12.3) を設定しています ...
libmysqlclient16 (5.1.41-3ubuntu12.3) を設定しています ...

libmysqlclient-dev (5.1.41-3ubuntu12.3) を設定しています ...

libaprutil1-dev (1.3.9+dfsg-3build1) を設定しています ...
apache2-prefork-dev (2.2.14-5ubuntu8) を設定しています ...

libc-bin のトリガを処理しています ...
ldconfig deferred processing now taking place

apache2-prefork-devのインストールが成功

$ ls -l
合計 44
-rwxr-xr-x 1 root root 1190 2010-04-14 04:31 config.nice
-rw-r--r-- 1 root root 2886 2010-04-14 04:31 config_vars.mk
-rw-r--r-- 1 root root  895 2010-04-14 04:27 envvars-std
-rwxr-xr-x 1 root root 2860 2010-04-14 04:31 instdso.sh
-rw-r--r-- 1 root root 1060 2010-04-14 04:31 library.mk
-rw-r--r-- 1 root root  951 2010-04-14 04:31 ltlib.mk
-rwxr-xr-x 1 root root 1660 2010-04-14 04:31 mkdir.sh
-rw-r--r-- 1 root root 1032 2010-04-14 04:31 program.mk
-rw-r--r-- 1 root root 6984 2010-04-14 04:31 rules.mk
-rw-r--r-- 1 root root 1258 2010-04-14 04:31 special.mk

「special.mk」が出来た!

再度mod_google_analyticsのmakeに挑戦

$ make
/usr/share/apr-1.0/build/libtool --silent --mode=compile i486-linux-gnu-gcc   -DLINUX=2 -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -D_REENTRANT -I/usr/include/apr-1.0 -I/usr/include/openssl -I/usr/include/xmltok -pthread     -DLINUX=2 -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -D_REENTRANT -I/usr/include/apache2 -I. -I/usr/include/apr-1.0   -I/usr/include/apache2 -I. -I/usr/include/apr-1.0 -prefer-pic -c mod_google_analytics.c && touch mod_google_analytics.slo
/usr/share/apr-1.0/build/libtool --silent --mode=link i486-linux-gnu-gcc   -DLINUX=2 -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -D_REENTRANT -I/usr/include/apr-1.0 -I/usr/include/openssl -I/usr/include/xmltok -pthread     -Wl,--as-needed -Wl,-z,relro    -o mod_google_analytics.la -rpath /usr/lib/apache2/modules -module -avoid-version  mod_google_analytics.lo

今度は成功!

mod_google_analyticsのmake test

$ sudo make test
make[1]: ディレクトリ `/home/Users/dragon3-mod_google_analytics-bb0b231' に入ります
/usr/share/apr-1.0/build/libtool --silent --mode=install cp mod_google_analytics.la /usr/lib/apache2/modules/
make[1]: ディレクトリ `/home/Users/dragon3-mod_google_analytics-bb0b231' から出ます
/usr/share/apr-1.0/build/libtool --silent --mode=install cp mod_google_analytics.la /usr/lib/apache2/modules/
apachectl restart
/bin/bash: apachectl: コマンドが見つかりません
make: *** [restart] エラー 127

失敗
「apachectlが見つからない」らしい。
「apachectl」について、apache2からは「apache2ctl」になっているのでエラーは無視しました。

mod_google_analyticsのインストール-設定

mod_google_analyticsのインストール
$ sudo make install
make[1]: ディレクトリ `/home/Users/dragon3-mod_google_analytics-bb0b231' に入ります
/usr/share/apr-1.0/build/libtool --silent --mode=install cp mod_google_analytics.la /usr/lib/apache2/modules/
make[1]: ディレクトリ `/home/Users/dragon3-mod_google_analytics-bb0b231' から出ます
/usr/share/apr-1.0/build/libtool --silent --mode=install cp mod_google_analytics.la /usr/lib/apache2/modules/

インストール成功

httpd.confの設定

httpd.conf(apache2.conf)に下記を追記
※"GoogleAnalyticsAccountNumber"は、GoogleAnalyticsのアカウント番号

LoadModule google_analytics_module modules/mod_google_analytics.so

AddOutputFilterByType GOOGLE_ANALYTICS text/html
GoogleAnalyticsAccountNumber UA-1234567-8

実際にWEBページにアクセスして試してみる

まずは静的ページで試す

ページを表示して、ソース表示させると、タグの前に下記のようなGoogleAnalyticsタグが追記されている。

<script type="text/javascript"><!-- 
 var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
//--></script><script type="text/javascript"><!-- 
 try {var pageTracker = _gat._getTracker("UA-1234567-8");pageTracker._trackPageview();} catch(err) {}; 
//--></script>

※の前に追加される仕様のようです。
※の記述が無いhtmlファイル場合は、GoogleAnalyticsタグが追加されませんでした。

念のため動的ページでも試してみる

PHPをインストール

$ sudo apt-get install php5 libapache2-mod-php5

ドキュメントルート配下に、index.phpとかを作成して試してみる。
index.phpの中身

<?php phpinfo(); ?>

ページを表示して、ソース表示で、タグの前に下記のようなGoogleAnalyticsタグが追記されている。

当然ですが、動的ファイル(*.php)もタグ追加されました。

使ってみての感想

めっちゃ便利です。インストールの手間こそありますが、そんなに難しくないし、dragon3さんには本当に感謝です!
万が一、GoogleAnalyticsのアカウント番号が変更になったときも、httpd.confの設定を書き換えればOKなのもグッドです。