X-Git-Url: https://git.openstreetmap.org/chef.git/blobdiff_plain/93c098cdc4f22b1fe69ecd88b3ac2d2b211780ff..bf96ed36324669a5c261a34fd7903663ff11c2aa:/cookbooks/piwik/recipes/default.rb diff --git a/cookbooks/piwik/recipes/default.rb b/cookbooks/piwik/recipes/default.rb index 9064522bf..483a348cb 100644 --- a/cookbooks/piwik/recipes/default.rb +++ b/cookbooks/piwik/recipes/default.rb @@ -1,8 +1,8 @@ # -# Cookbook Name:: piwik +# Cookbook:: piwik # Recipe:: default # -# Copyright 2011, OpenStreetMap Foundation +# Copyright:: 2011, OpenStreetMap Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -18,25 +18,29 @@ # include_recipe "apache" +include_recipe "geoipupdate" include_recipe "mysql" +include_recipe "php::fpm" passwords = data_bag_item("piwik", "passwords") -package "php" -package "php-cli" -package "php-curl" -package "php-mbstring" -package "php-mysql" -package "php-gd" -package "php-xml" -package "php-apcu" +package %w[ + php-cli + php-curl + php-mbstring + php-mysql + php-gd + php-xml + php-apcu +] -package "geoipupdate" - -apache_module "php7.2" +apache_module "expires" +apache_module "rewrite" version = node[:piwik][:version] +geoip_directory = node[:geoipupdate][:directory] + directory "/opt/piwik-#{version}" do owner "root" group "root" @@ -45,15 +49,40 @@ end remote_file "#{Chef::Config[:file_cache_path]}/piwik-#{version}.zip" do source "https://builds.matomo.org/piwik-#{version}.zip" - not_if { File.exist?("/opt/piwik-#{version}/piwik") } + not_if { ::File.exist?("/opt/piwik-#{version}/piwik") } +end + +archive_file "#{Chef::Config[:file_cache_path]}/piwik-#{version}.zip" do + destination "/opt/piwik-#{version}" + overwrite true + owner "root" + group "root" + not_if { ::File.exist?("/opt/piwik-#{version}/piwik") } +end + +node[:piwik][:plugins].each do |plugin_name, plugin_version| + next if plugin_version.nil? + + remote_file "#{Chef::Config[:file_cache_path]}/piwik-#{plugin_name}-#{plugin_version}.zip" do + source "https://plugins.matomo.org/api/2.0/plugins/#{plugin_name}/download/#{plugin_version}" + end + + archive_file "#{Chef::Config[:file_cache_path]}/piwik-#{plugin_name}-#{plugin_version}.zip" do + action :nothing + destination "/opt/piwik-#{version}/piwik/plugins" + overwrite true + owner "root" + group "root" + subscribes :extract, "remote_file[#{Chef::Config[:file_cache_path]}/piwik-#{plugin_name}-#{plugin_version}.zip]", :immediately + end end -execute "unzip-piwik-#{version}" do - command "unzip -q #{Chef::Config[:file_cache_path]}/piwik-#{version}.zip" +execute "/opt/piwik-#{version}/piwik/piwik.js" do + command "gzip -k -9 /opt/piwik-#{version}/piwik/piwik.js" cwd "/opt/piwik-#{version}" user "root" group "root" - not_if { File.exist?("/opt/piwik-#{version}/piwik") } + not_if { ::File.exist?("/opt/piwik-#{version}/piwik/piwik.js.gz") } end directory "/opt/piwik-#{version}/piwik/config" do @@ -69,7 +98,7 @@ template "/opt/piwik-#{version}/piwik/config/config.ini.php" do mode "0644" variables :passwords => passwords, :directory => "/opt/piwik-#{version}/piwik", - :plugins => node[:piwik][:plugins] + :plugins => node[:piwik][:plugins].keys.sort end directory "/opt/piwik-#{version}/piwik/tmp" do @@ -78,21 +107,27 @@ directory "/opt/piwik-#{version}/piwik/tmp" do mode "0755" end +directory "/opt/piwik-#{version}/piwik/tmp/assets" do + owner "www-data" + group "mysql" + mode "0750" +end + link "/opt/piwik-#{version}/piwik/misc/GeoLite2-ASN.mmdb" do - to "/var/lib/GeoIP/GeoLite2-ASN.mmdb" + to "#{geoip_directory}/GeoLite2-ASN.mmdb" end link "/opt/piwik-#{version}/piwik/misc/GeoLite2-City.mmdb" do - to "/var/lib/GeoIP/GeoLite2-City.mmdb" + to "#{geoip_directory}/GeoLite2-City.mmdb" end link "/opt/piwik-#{version}/piwik/misc/GeoLite2-Country.mmdb" do - to "/var/lib/GeoIP/GeoLite2-Country.mmdb" + to "#{geoip_directory}/GeoLite2-Country.mmdb" end link "/srv/piwik.openstreetmap.org" do to "/opt/piwik-#{version}/piwik" - notifies :restart, "service[apache2]" + notifies :restart, "service[php#{node[:php][:version]}-fpm]" end mysql_user "piwik@localhost" do @@ -108,13 +143,16 @@ ssl_certificate "piwik.openstreetmap.org" do notifies :reload, "service[apache2]" end +php_fpm "piwik.openstreetmap.org" do + prometheus_port 9253 +end + apache_site "piwik.openstreetmap.org" do template "apache.erb" end -template "/etc/cron.d/piwiki" do - source "cron.erb" - owner "root" - group "root" - mode "0644" +cron_d "piwik" do + minute "5" + user "www-data" + command "/usr/bin/php /srv/piwik.openstreetmap.org/console core:archive --quiet --url=https://piwik.openstreetmap.org/" end