tips:maintenance
Rozdíly
Zde se zobrazují rozdíly mezi dvěma verzemi stránky.
| tips:maintenance [2025-09-08 08:15] – vytvořeno MartinR | tips:maintenance [Neznámé datum] (aktuální) – upraveno správcem (MartinR) mimo DokuWiki (Neznámé datum) 127.0.0.1 | ||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| + | ====== Údržba ====== | ||
| + | |||
| + | https:// | ||
| + | |||
| + | Zde je několik tipů, jak automatizovat každodenní údržbu, která je pro DokuWiki potřebná nebo doporučená. | ||
| + | |||
| + | Viz také pluginy: [[doku> | ||
| + | |||
| + | ===== Udržujte blacklist aktuální ===== | ||
| + | |||
| + | Viz [[: | ||
| + | |||
| + | ===== Automatický skript pro úklid ===== | ||
| + | |||
| + | Pro vytížené DokuWiki instalace se doporučuje nastavit proces pravidelného úklidu. Následující skript shellu [[wp> | ||
| + | |||
| + | <file bash cleanup.sh> | ||
| + | #!/bin/bash | ||
| + | |||
| + | cleanup() | ||
| + | { | ||
| + | local data_path=" | ||
| + | local retention_days=" | ||
| + | |||
| + | # purge files older than ${retention_days} days from attic and media_attic (old revisions) | ||
| + | find " | ||
| + | |||
| + | # remove stale lock files (files which are 1-2 days old) | ||
| + | find " | ||
| + | |||
| + | # remove empty directories | ||
| + | find " | ||
| + | -mindepth 1 -type d -empty -delete | ||
| + | |||
| + | # remove files older than ${retention_days} days from the cache | ||
| + | if test -n " | ||
| + | then | ||
| + | find " | ||
| + | fi | ||
| + | } | ||
| + | |||
| + | |||
| + | # cleanup DokuWiki installations (path to datadir, number of days) | ||
| + | # some examples: | ||
| + | |||
| + | cleanup / | ||
| + | cleanup / | ||
| + | cleanup / | ||
| + | </ | ||
| + | |||
| + | Pro automatické spuštění nastavte [[man> | ||
| + | |||
| + | 7 0 * * * | ||
| + | |||
| + | Ujistěte se, že je vše správně nastaveno – nechcete přece omylem smazat nesprávné soubory, že? | ||
| + | |||
| + | ==== Windows – waRmZip ==== | ||
| + | |||
| + | Skript pro čištění starých souborů na systémech Windows je [[http:// | ||
| + | |||
| + | Použil jsem výše uvedený návrh s '' | ||
| + | |||
| + | Můj oblíbený způsob spouštění cronjobů na Windows je [[https:// | ||
| + | |||
| + | <file dos dw-cleanup.bat> | ||
| + | @echo off | ||
| + | set waRmZip=" | ||
| + | set wikiHome=" | ||
| + | |||
| + | rem Move attic files older than 30 days to an archive location | ||
| + | %waRmZip% %wikiHome%\attic /ma:30 / | ||
| + | |||
| + | rem Option: delete attic files older than 30 days | ||
| + | rem %waRmZip% %wikiHome%\attic /da:30 /dc /r /q | ||
| + | |||
| + | rem Delete empty attic directories; | ||
| + | rem /df, so add filter for *.zzz so /da doesn' | ||
| + | %waRmZip% %wikiHome%\attic /r /da:31 /df /fo:*.zzz /q | ||
| + | |||
| + | rem Remove stale lock files | ||
| + | %waRmZip% %wikiHome%\locks /da:1 /fo:*.lock /r /q | ||
| + | |||
| + | rem Remove empty directories | ||
| + | %waRmZip% %wikiHome%\pages /da:365 /df /fo:*.zzz /r /q | ||
| + | </ | ||
| + | |||
| + | ==== Windows – dávkový skript ==== | ||
| + | |||
| + | Toto je další skript pro příkazový řádek Windows pro údržbu vaší DokuWiki instalace v prostředí Windows. | ||
| + | Skript využívá bezplatný open-source nástroj find, který lze získat přes [[http:// | ||
| + | |||
| + | Všechny cesty jsou načteny z konfiguračního souboru DokuWiki. Soubory určené ke smazání lze předem zobrazit, aby se předešlo nechtěnému odstranění. | ||
| + | |||
| + | <file dos maintain_dokuwiki.cmd> | ||
| + | @echo off | ||
| + | setlocal | ||
| + | |||
| + | REM This script performs some basic DokuWiki maintenance | ||
| + | |||
| + | REM Copyright (C) 2012 Peter Mosmans | ||
| + | |||
| + | REM This program is free software: you can redistribute it and/or modify | ||
| + | REM it under the terms of the GNU General Public License as published by | ||
| + | REM the Free Software Foundation, either version 3 of the License, or | ||
| + | REM (at your option) any later version. | ||
| + | |||
| + | REM This program is distributed in the hope that it will be useful, | ||
| + | REM but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| + | REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| + | REM GNU General Public License for more details. | ||
| + | |||
| + | REM You should have received a copy of the GNU General Public License | ||
| + | REM along with this program. If not, see < | ||
| + | |||
| + | REM Please contact support AT go-forward.net for questions and/or feedback | ||
| + | |||
| + | |||
| + | REM Last modification: | ||
| + | set NAME=maintain_dokuwiki | ||
| + | set VERSION=0.13 | ||
| + | |||
| + | REM path to the dokuwiki configuration file enclosed in double quotes | ||
| + | set DOKUWIKICONFIG=" | ||
| + | REM preserve all files that are younger than DAYSTOKEEP days | ||
| + | set DAYSTOKEEP=31 | ||
| + | REM set to true if you want to show results and pause before deleting any files | ||
| + | set SHOWRESULTSFIRST=true | ||
| + | set FIND=c: | ||
| + | set TEMPFILE=%TMP%\%NAME%.tmp | ||
| + | |||
| + | REM see if all tools are present | ||
| + | for %%i in (%FIND%) do ( | ||
| + | if not exist %%i ( | ||
| + | echo sorry, could not find %%i - exiting | ||
| + | echo you can obtain the free GNU tools from gnuwin32.sourceforge.net | ||
| + | exit /b | ||
| + | ) | ||
| + | ) | ||
| + | |||
| + | REM see if the dokuwiki configuration file can be read | ||
| + | if not exist %DOKUWIKICONFIG% ( | ||
| + | echo sorry, could not find DokuWiki config at %DOKUWIKICONFIG% - exiting | ||
| + | exit /b | ||
| + | ) | ||
| + | |||
| + | REM grab the correct paths from the configuration file | ||
| + | for /f " | ||
| + | if /i " | ||
| + | if /i " | ||
| + | if /i " | ||
| + | if /i " | ||
| + | ) | ||
| + | if " | ||
| + | echo sorry, could not find datadir variable in %DOKUWIKICONFIG%, | ||
| + | exit /b | ||
| + | ) | ||
| + | |||
| + | REM use defaults if the paths are not specified | ||
| + | if /i " | ||
| + | if /i " | ||
| + | if /i " | ||
| + | |||
| + | REM purge files older than DAYSTOKEEP days from the attic | ||
| + | %FIND% " | ||
| + | REM remove locks older than one day | ||
| + | %FIND% " | ||
| + | REM remove cache files older than DAYSTOKEEP | ||
| + | %FIND% " | ||
| + | |||
| + | REM show results, if any | ||
| + | for /f " | ||
| + | if /i " | ||
| + | echo files to be deleted: | ||
| + | type %TEMPFILE% | ||
| + | pause | ||
| + | ) | ||
| + | for /f " | ||
| + | ) | ||
| + | |||
| + | REM clean up | ||
| + | del /f /q %TEMPFILE% | ||
| + | |||
| + | endlocal | ||
| + | </ | ||
| + | |||
| + | ===== Udržování čistého pískoviště (Playground) ===== | ||
| + | |||
| + | Pro udržení čistoty wiki [[playground: | ||
| + | |||
| + | Příklad: Obnovení Playground každých 30 minut: | ||
| + | |||
| + | 0,30 * * * * cp -f / | ||
| + | |||
| + | Příklad: Obnovení všech stránek ve [[: | ||
| + | |||
| + | 0,30 * * * * cp -rf / | ||
| + | |||
| + | ==== Problémy s pluginem CAPTCHA ==== | ||
| + | |||
| + | Použití pluginu CAPTCHA spolu s doporučenou [[tips: | ||
| + | |||
| + | Když k tomu dojde, problém lze snadno vyřešit odstraněním souvisejících souborů Playground ve složce meta pomocí dalšího cronjobu. | ||
| + | |||
| + | Příklad: Smazání Playground metadat každých 30 minut: | ||
| + | 0,30 * * * * rm -f / | ||
| + | |||
| + | ===== Když není dostupný cronjob ===== | ||
| + | |||
| + | Pokud váš hosting neumožňuje použití cronjobů, zvažte použití pluginu [[doku> | ||
| + | |||
| + | ===== Diskuze ===== | ||
| + | |||
| + | Mohl by někdo prosím poskytnout PHP verze těchto skriptů pro použití s pluginem cronojob? | ||
| + | ---- | ||
| + | |||
| + | > Ohledně výše uvedeného skriptu pro úklid, který používá čas poslední úpravy souboru (mtime) – nebylo by bezpečnější použít časové razítko v názvu souboru pro určení, zda má být soubor ve složce attic smazán? | ||
| + | |||
| + | Na jednu stranu bych řekl, že to možné je, ale samozřejmě je to složitější na nastavení. Pro mnoho instalací bude použití mtime dostačující. Na druhou stranu někteří mohou chtít mít jistotu, že se odstraní staré soubory bez ohledu na okolnosti (např. soubory zbylé po pádu nebo kritické chybě PHP). | ||
| + | ---- | ||
| + | |||
| + | Mohl by někdo přidat odpovídající řádek pro [[https:// | ||
| + | ---- | ||
| + | Zvládá plugin [[doku> | ||
| + | |||
| + | ---- | ||
| + | Toto je příklad PHP skriptu pro čištění starých cache souborů. Užitečné, | ||
| + | |||
| + | <file php cleanup.php> | ||
| + | |||
| + | <?php | ||
| + | /* | ||
| + | * mrlemonade ~ | ||
| + | */ | ||
| + | function getFilesFromDir($dir) { | ||
| + | $files = array(); | ||
| + | if ($handle = opendir($dir)) { | ||
| + | while (false !== ($file = readdir($handle))) { | ||
| + | if ($file != " | ||
| + | if(is_dir($dir.'/' | ||
| + | $dir2 = $dir.'/' | ||
| + | $files[] = getFilesFromDir($dir2); | ||
| + | } | ||
| + | else { | ||
| + | $files[] = $dir.'/' | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | closedir($handle); | ||
| + | } | ||
| + | return array_flat($files); | ||
| + | } | ||
| + | function array_flat($array) { | ||
| + | foreach($array as $a) { | ||
| + | if(is_array($a)) { | ||
| + | $tmp = array_merge($tmp, | ||
| + | } | ||
| + | else { | ||
| + | $tmp[] = $a; | ||
| + | } | ||
| + | } | ||
| + | return $tmp; | ||
| + | } | ||
| + | |||
| + | // Define the folder to clean | ||
| + | $captchaFolder = ' | ||
| + | // Here you can define after how many | ||
| + | // days the files should get deleted | ||
| + | $expire_time = 5; | ||
| + | // Find all files of the given file type | ||
| + | foreach (getFilesFromDir($captchaFolder) as $Filename) { | ||
| + | // Read file creation time | ||
| + | $FileCreationTime = filectime($Filename); | ||
| + | // Calculate file age in seconds | ||
| + | $FileAge = time() - $FileCreationTime; | ||
| + | // Is the file older than the given time span? | ||
| + | if ($FileAge > ($expire_time*60*60*24 )) { | ||
| + | // Now do something with the olders files... | ||
| + | print "The file $Filename is older than $expire_time days \n"; | ||
| + | // For example deleting files: | ||
| + | // unlink($Filename); | ||
| + | } | ||
| + | } | ||
| + | echo ' | ||
| + | ?> | ||
| + | |||
| + | </ | ||
| + | používáte na vlastní riziko. --- [[user> | ||
| + | |||
| + | ---- | ||
| + | Díky, rád bych dodal, že je dobrý nápad čistit osiřelá metadata, co myslíte? | ||
| + | Dělám následující (v R skriptu): | ||
| + | - rekurzivně vypíšu všechny soubory ve složce pages | ||
| + | - přidám sloupec ' | ||
| + | - v pagename nahradím '/' | ||
| + | - udělám totéž pro složku meta + vyloučím některé soubory | ||
| + | - odstraním všechny položky ze seznamu meta, jejichž název stránky je v seznamu pages | ||
| + | - smažu všechny zbývající soubory v seznamu meta | ||
| + | Samozřejmě lze přidat časové omezení, aby se metadata nepoužívala ihned. | ||
| + | |||
| + | Clemo // | ||