From 28326173066466bb20f54bad702b2885b64f925c Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Tue, 29 Nov 2022 20:28:32 +0000 Subject: [PATCH] Convert mediawiki to use systemd timers --- cookbooks/mediawiki/metadata.rb | 1 + cookbooks/mediawiki/recipes/default.rb | 92 ++++++++++++++++++++++++++ cookbooks/mediawiki/resources/site.rb | 46 +++---------- 3 files changed, 101 insertions(+), 38 deletions(-) diff --git a/cookbooks/mediawiki/metadata.rb b/cookbooks/mediawiki/metadata.rb index 6bc4c0ee6..e3a159c80 100644 --- a/cookbooks/mediawiki/metadata.rb +++ b/cookbooks/mediawiki/metadata.rb @@ -14,3 +14,4 @@ depends "git" depends "memcached" depends "mysql" depends "php" +depends "systemd" diff --git a/cookbooks/mediawiki/recipes/default.rb b/cookbooks/mediawiki/recipes/default.rb index 77aa6f696..1857ff0bd 100644 --- a/cookbooks/mediawiki/recipes/default.rb +++ b/cookbooks/mediawiki/recipes/default.rb @@ -79,3 +79,95 @@ end apache_module "proxy" apache_module "proxy_fcgi" apache_module "rewrite" + +systemd_service "mediawiki-sitemap@" do + description "Generate sitemap.xml for %i" + exec_start "/usr/bin/nice /usr/bin/php -d memory_limit=2048M -d error_reporting=22517 /srv/%i/w/maintenance/generateSitemap.php --server=https://%i --urlpath=https://%i/ --fspath=/srv/%i --quiet --skip-redirects" + user node[:mediawiki][:user] + sandbox true + memory_deny_write_execute false + restrict_address_families "AF_UNIX" + read_write_paths "/srv/%i" +end + +systemd_timer "mediawiki-sitemap@" do + description "Generate sitemap.xml for %i" + on_calendar "00:30" +end + +systemd_service "mediawiki-jobs@" do + description "Run mediawiki jobs for %i" + exec_start "/usr/bin/nice /usr/bin/php -d memory_limit=2048M -d error_reporting=22517 /srv/%i/w/maintenance/runJobs.php --server=https://%i --maxtime=175 --memory-limit=2048M --procs=8 --nothrottle --quiet" + user node[:mediawiki][:user] + sandbox true + memory_deny_write_execute false + restrict_address_families "AF_UNIX" + read_write_paths "/srv/%i" +end + +systemd_timer "mediawiki-jobs@" do + description "Run mediawiki jobs for %i" + on_boot_sec "3m" + on_unit_inactive_sec "3m" +end + +systemd_service "mediawiki-email-jobs@" do + description "Run mediawiki email jobs for %i" + exec_start "/usr/bin/nice /usr/bin/php -d memory_limit=2048M -d error_reporting=22517 /srv/%i/w/maintenance/runJobs.php --server=https://%i --maxtime=55 --type=enotifNotify --memory-limit=2048M --procs=4 --nothrottle --quiet" + user node[:mediawiki][:user] + sandbox :enable_network => true + memory_deny_write_execute false + restrict_address_families "AF_UNIX" +end + +systemd_timer "mediawiki-email-jobs@" do + description "Run mediawiki email jobs for %i" + on_boot_sec "1m" + on_unit_inactive_sec "1m" +end + +systemd_service "mediawiki-refresh-links@" do + description "Refresh mediawiki links for %i" + exec_start "/usr/bin/nice /usr/bin/php -d memory_limit=2048M -d error_reporting=22517 /srv/%i/w/maintenance/refreshLinks.php --server=https://%i --memory-limit=2048M --quiet" + user node[:mediawiki][:user] + sandbox true + memory_deny_write_execute false + restrict_address_families "AF_UNIX" +end + +systemd_timer "mediawiki-refresh-links@" do + description "Refresh mediawiki links for %i" + on_calendar "Sat 00:05" +end + +systemd_service "mediawiki-cleanup-gs" do + description "Clean up imagemagick gs_* files" + exec_start "/usr/bin/find /tmp -maxdepth 1 -type f -user www-data -mmin +90 -name 'gs_*' -delete" + user node[:mediawiki][:user] + sandbox true +end + +systemd_timer "mediawiki-cleanup-gs" do + description "Clean up imagemagick gs_* files" + on_calendar "02:10" +end + +service "mediawiki-cleanup-gs.timer" do + action [:enable, :start] +end + +systemd_service "mediawiki-cleanup-magick" do + description "Clean up imagemagick magick-* files" + exec_start "/usr/bin/find /tmp -maxdepth 1 -type f -user www-data -mmin +90 -name 'magick-*' -delete" + user node[:mediawiki][:user] + sandbox true +end + +systemd_timer "mediawiki-cleanup-magick" do + description "Clean up imagemagick magick-* files" + on_calendar "02:20" +end + +service "mediawiki-cleanup-magick.timer" do + action [:enable, :start] +end diff --git a/cookbooks/mediawiki/resources/site.rb b/cookbooks/mediawiki/resources/site.rb index a3a84a376..e26b7250e 100644 --- a/cookbooks/mediawiki/resources/site.rb +++ b/cookbooks/mediawiki/resources/site.rb @@ -183,50 +183,20 @@ action :create do notifies :run, "execute[#{mediawiki_directory}/maintenance/update.php]" end - cron_d "mediawiki-#{cron_name}-sitemap" do - comment "Generate sitemap.xml daily" - minute "30" - hour "0" - user node[:mediawiki][:user] - command "/usr/bin/nice /usr/bin/php -d memory_limit=2048M -d error_reporting=22517 #{site_directory}/w/maintenance/generateSitemap.php --server=https://#{new_resource.site} --urlpath=https://#{new_resource.site}/ --fspath=#{site_directory} --quiet --skip-redirects" - end - - cron_d "mediawiki-#{cron_name}-jobs" do - comment "Run mediawiki jobs" - minute "*/3" - user node[:mediawiki][:user] - command "/usr/bin/nice /usr/bin/php -d memory_limit=2048M -d error_reporting=22517 #{site_directory}/w/maintenance/runJobs.php --server=https://#{new_resource.site} --maxtime=175 --memory-limit=2048M --procs=8 --nothrottle --quiet" - end - - cron_d "mediawiki-#{cron_name}-email-jobs" do - comment "Run mediawiki email jobs" - user node[:mediawiki][:user] - command "/usr/bin/nice /usr/bin/php -d memory_limit=2048M -d error_reporting=22517 #{site_directory}/w/maintenance/runJobs.php --server=https://#{new_resource.site} --maxtime=55 --type=enotifNotify --memory-limit=2048M --procs=4 --nothrottle --quiet" + service "mediawiki-sitemap@#{new_resource.site}.timer" do + action [:enable, :start] end - cron_d "mediawiki-#{cron_name}-refresh-links" do - comment "Run mediawiki refresh links table weekly" - minute "5" - hour "0" - weekday "6" - user node[:mediawiki][:user] - command "/usr/bin/nice /usr/bin/php -d memory_limit=2048M -d error_reporting=22517 #{site_directory}/w/maintenance/refreshLinks.php --server=https://#{new_resource.site} --memory-limit=2048M --quiet" + service "mediawiki-jobs@#{new_resource.site}.timer" do + action [:enable, :start] end - cron_d "mediawiki-#{cron_name}-cleanup-gs" do - comment "Clean up imagemagick garbage" - minute "10" - hour "2" - user node[:mediawiki][:user] - command "/usr/bin/find /tmp/ -maxdepth 1 -type f -user www-data -mmin +90 -name 'gs_*' -delete" + service "mediawiki-email-jobs@#{new_resource.site}.timer" do + action [:enable, :start] end - cron_d "mediawiki-#{cron_name}-cleanup-magick" do - comment "Clean up imagemagick garbage" - minute "20" - hour "2" - user node[:mediawiki][:user] - command "/usr/bin/find /tmp/ -maxdepth 1 -type f -user www-data -mmin +90 -name 'magick-*' -delete" + service "mediawiki-refresh-links@#{new_resource.site}.timer" do + action [:enable, :start] end template "/etc/cron.daily/mediawiki-#{cron_name}-backup" do -- 2.39.5