PHP7.0でPiwik

PiwikはGoogleアナリティクスみたいなリアルタイム反映のウェブサイトのアクセス解析ツール。高機能なアクセス解析ツールを使いたいけどアクセス情報をGoogleなど外部に取られるのは嫌で自前でやりたいというならとても良い。でも、処理が重いので公開しているウェブサイト数が多かったりアクセス多めなら別サーバでやった方が良いかも。
今回は久しぶりにPiwikを入れてみたのでその備忘録。

解析したいウェブサイトに一つでもHTTPSサイトがあるならPiwik側もHTTPS対応にしておいた方が良い。
NginxでやるならvHostの最低限の設定ファイルはこんな感じ。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
server {
  listen                       80;
  server_name                  piwik.example.com;
  access_log                   /var/log/piwik_access.log;
  error_log                    /var/log/piwik_error.log;

  location / {
    root                       /usr/local/www/piwik;
    index                      index.php;

    location ~ ^/(.*\.php).*$ {
      fastcgi_split_path_info  ^(.*\.php)(.*)$;
      include                  fastcgi_params;
      fastcgi_pass             unix:/var/run/php-fpm.sock;
      fastcgi_index            index.php;
      fastcgi_read_timeout     1200;
      fastcgi_param            SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    }
  } 
}

server {
  listen                       443 ssl;
  server_name                  piwik.example.com;
  access_log                   /var/log/piwik_access.log;
  error_log                    /var/log/piwik_error.log;

  ssl_certificate              /usr/local/etc/nginx/ssl/piwik/server.crt;
  ssl_certificate_key          /usr/local/etc/nginx/ssl/piwik/server.key;
  ssl_dhparam                  /usr/local/etc/nginx/ssl/piwik/dhparams.pem;
  ssl_trusted_certificate      /usr/local/etc/nginx/ssl/piwik/trusted.crt;
  ssl_protocols                TLSv1.2 TLSv1.1 TLSv1;
  ssl_ciphers                  EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
  ssl_prefer_server_ciphers    on;
  ssl_session_cache            shared:SSL:10m;
  ssl_session_timeout          10m;
  ssl_stapling                 on;
  ssl_stapling_verify          on;
  resolver                     8.8.8.8 8.8.4.4 valid=300s;
  resolver_timeout             5s;

  gzip                         off;

  location / {
    root                       /usr/local/www/piwik;
    index                      index.php;

    location ~ ^/(.*\.php).*$ {
      fastcgi_split_path_info  ^(.*\.php)(.*)$;
      include                  fastcgi_params;
      fastcgi_pass             unix:/var/run/php-fpm.sock;
      fastcgi_index            index.php;
      fastcgi_param            HTTPS on;
      fastcgi_read_timeout     1200;
      fastcgi_param            SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    }
  }
}

2016年5月上旬現在のStable版のPiwikはPHP7.0では動かないのでGitHubから開発版を落として解凍。
FreeBSDの場合はportsにPiwikがある(www/piwik)が、それはStable版なのでphp7.0では動作しない。
PHPのキャッシュ系は停めておいた方が無難。
MySQLはPiwik用ユーザーとPiwik用の空のテーブルを作成してPiwik用ユーザーにそのテーブルの全権を与えておけば良い。

PIWIK 1
画面1:
インストールしたPiwikをブラウザで開く。URLは当然設定によるわけだがhttps://piwik.example.com/またはhttps://example.com/piwik/みたいな感じで良い筈。
いきなりエラー画面だが慌てずにメッセージを読む。上の画像の中央の赤枠部分(実際には赤枠は無い)のメッセージに従ってPiwikをインストールしたディレクトリでコマンドを実行。ここはFreeBSDでもLinuxでも書いてあるままのコマンドでいける筈だが、既にgitを使える状態でないと途中でエラーになるのでコマンド実行前にgitをインストールしておくこと。

FreeBSDのgitインストール
おそらく依存関係解決のために大量に欲しくもないports(パッケージ)をインストールされる筈なので覚悟が要る。

cd /usr/ports/devel/git
make install

PIWIK 2
画面2:
コマンド実行が正常に終了したら再度ブラウザでPiwikを表示。今度は「ようこそ」画面が表示される筈。「次へ」ボタンを押す。

PIWIK 3
画面3:
システムの確認画面で必要条件を満たしているか確認する。基本的には全ての項目で緑のチェックマークが付けば良いが、いくつかの項目は緑チェックにならなくても構わないと書いてあるのでその項目は条件に合致すれば無視。「次へ」ボタンを押す。

PIWIK 4
画面4:
セットアップ済みのMySQLのアクセス設定を入力。最近はパスワードをランダムで長く複雑なものにするのはもちろんユーザー名やテーブル名なども推測できないものにした方が良い。PHP7.0の場合はアダプタはmysqliが良い。もちろんPHP7.0側もmysqliモジュールが有効になっていること。「次へ」ボタンを押す。

PIWIK 5
画面5:
データベースへの接続が正常に行えればこの画面。「次へ」ボタンを押す。

PIWIK 6
画面6:
管理者登録画面。最近はパスワードをランダムで長く複雑なものにするのはもちろんユーザー名も同じく推測できないものにした方が安全。「次へ」ボタンを押す。

PIWIK 7
画面7:
ウェブサイトのセットアップ画面。ここでいうウェブサイトとはアクセス解析対象のウェブサイト(の1つめ)のこと。サイト名とURLを登録する。タイムゾーンは普通はTokyoを選べば良い。「次へ」ボタンを押す。

PIWIK 8
画面8:
上の画面7で登録した1つ目のアクセス解析対象サイト用のタグが表示される。Googleアナリティクスと同様にこのタグをアクセス対象サイトのHTMLヘッダの最後に入れる。後で管理画面からこのタグを表示させることができるのでここでタグのコピーや保存が必須というわけではない。「次へ」ボタンを押す。

PIWIK 9
画面9:
「おめでとうございます」の表示が出る。この画面の下の方にチェックが2つある。下側のチェックは日本では外して良い筈。「Piwikを続ける」ボタンを押す。
インストールは終わり。

PIWIK 10
画面10:
ログイン画面が出るので画面6で登録した管理者アカウントでログインする。

PIWIK 11
画面11:
ダッシュボードが表示される。アクセス解析対象サイトの一覧が出る場所だが、まだ画面7で登録した1つのウェブサイトしか存在しない。
アクセス解析対象サイトのページをいくつか見ても「ビジット」や「ページビュー」の数字がゼロのままの場合は表示対象期間に本日が含まれていない可能性があるので上の画像の赤枠部分(実際には赤枠はない)で本日が含まれる期間を選択する。
一応、個人設定に「デフォルトで読み込むリポートの日付」という項目があって今日を含むように設定できるがときどきおかしくなるので。

PIWIK 12
画面12:
上の画面11の青字のアクセス解析対象サイト名をクリックするとそのサイトのアクセス状況がいろいろ出てくる。ここで「ビジット」や「ページビュー」の数字がゼロのままの場合は画面11と同じく表示対象期間に本日が含まれていない可能性があるので左上の上の画像の赤枠(実際には赤枠はない)で本日が含まれる期間を選択する。
他のレポートページも表示期間には注意する。

PIWIK 13
画面13:
左メニューから「ビジット」→「リアルタイムマップ」を選択してからアクセス解析対象サイトをブラウザで表示する。このとき、黄土色の丸が表示されなければ何か問題がある。画面右上のを選択し、左メニューから「ジオロケーション」を選択してGeoIP関係の設定を確認する。

標準で有効になっているプラグインのいくつかは不要なので無効にする。有用そうなプラグインがあればインストールする。現在はプラグインがまだ全て無料なので早めに。(でもそんなに有用だと思えるのが見つからない・・)
こんな感じ。