
Grav je pokročilý redakční systém pro koncové uživatele, kterým vadí nabobtnalé redakční systémy jako jsou WordPress, Joomla a Drupal. Výhodou oproti ostaním je absence Databáze, používá dobře známou markdown syntaxi podobně jako MkDocs.
Hladní nastavení GRAV před spuštěním je v souboru /www/hosting/rcube.cz/wiki/user/config/site.yaml:
title: wiki.rcube.cz
default_lang: en
author:
name: 'Zdenek Sobotka'
email: zden2k.sobotka@gmail.com
taxonomies:
- category
- tag
metadata:
description: 'Linux'
summary:
enabled: true
format: short
size: 300
delimiter: '==='
redirects: null
routes: null
blog:
route: /blog
siteurl: wiki.rcube.cz
Nepoužívám git-sync plugin, vyřešil jsem to cronem a git pull pod uživatelem www-data z cronu:
usermod -d /home/www-data www-data
sudo -u www-data /usr/bin/ssh-keygen -t ecdsa -b 521 -f /home/www-data/.ssh/id_ecdsa
crontab -e
*/1 * * * * su -s /bin/bash www-data -c 'cd /www/hosting/rcube.cz/wiki/user/pages && /usr/bin/git pull -q &> /dev/null'
Asi nejjednodušší možnost jak lokálně stáhnout repozitář je přes https. V Gitea se vytvoří Personal Access Token. Přihlašení se do Gitea webu jako uživatel (např. zden2k). Vpravo nahoře na Settings → Applications. V sekci Manage Access Tokens kliknout na Generate Token. Dat mu jméno (např. wiki-pull) a zaškrtnout oprávnění read:repository (stačí na git pull). Nastavit remote repozitar, ale lokálně:
root@vps-3b9787ee:/var/www/wiki.n0ip.eu/user/pages# git remote -v
origin https://zden2k:<TOKEN>@gitea.n0ip.eu/zden2k/wiki.git (fetch)
origin https://zden2k:<TOKEN>@gitea.n0ip.eu/zden2k/wiki.git (push)
Vytvořit bash skript, ktery to bude lokálně fetchovat:
root@vps-3b9787ee:/var/www/wiki.n0ip.eu/user/pages# cat /usr/local/gitea.sh
#!/bin/bash
cd /var/www/wiki.n0ip.eu/user/pages || exit 1
git fetch origin
git reset --hard origin/main
git clean -fdx
chown www-data:www-data -R /var/www/wiki.n0ip.eu/
Pak ho přidat do cronu:
root@vps-3b9787ee:/var/www/wiki.n0ip.eu/user/pages# cat /etc/cron.d/grav
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
* * * * * root bash /usr/local/gitea.sh && chown www-data:www-data -R /var/www/wiki.n0ip.eu/ &> /dev/null
Plugin do GRAV pro spouštění automatizovaných úloh. Instalace:
cd /www/hosting/rcube.cz/wiki; sudo -u www-data bin/gpm install scheduler
crontab -e
*/5 * * * * su -s /bin/bash www-data -c 'cd /www/hosting/rcube.cz/wiki; bin/grav scheduler &> /dev/null'
Manuální spuštění:
cd /www/hosting/rcube.cz/wiki; sudo -u www-data bin/grav scheduler -v
cd /www/hosting/rcube.cz/wiki; sudo -u www-data bin/grav scheduler -i
Zobrazení naplánovaných úloh:
cd /www/hosting/rcube.cz/wiki; sudo -u www-data bin/grav scheduler -j
Scheduler Jobs Listing
======================
┌─────────────────────┬────────────────────────────────────┬───────────┬─────────┬──────────────────┬─────────┐
│ Job ID │ Command │ Run At │ Status │ Last Run │ State │
├─────────────────────┼────────────────────────────────────┼───────────┼─────────┼──────────────────┼─────────┤
│ tntsearch-index │ bin/plugin │ * * * * * │ Success │ 2023-05-26 14:41 │ Enabled │
│ default-site-backup │ Grav\Common\Backup\Backups::backup │ 0 3 * * * │ Ready │ Never │ Enabled │
│ cache-purge │ Grav\Common\Cache::purgeJob │ 0 4 * * * │ Ready │ Never │ Enabled │
│ cache-clear │ Grav\Common\Cache::clearJob │ 0 3 * * * │ Ready │ Never │ Enabled │
└─────────────────────┴────────────────────────────────────┴───────────┴─────────┴──────────────────┴─────────┘
! [NOTE] For error details run "bin/grav scheduler -d"
Zarnovnání obrázku v Grav je trochu složitější, nenašel jsem lehčí způsob než je úprava změnou .css. V základním souboru stránky default.md přidáme markdown extra:
---
markdown:
extra: true
---
{.center}
Do /user/themes/quark/css/custom.css přidat:
.center {
display: block;
margin: 0 auto;
}
Nebo se dá použít rozšíření Shortcode.
Pokud potřebuje človek vložit hlavičku kódu obsahující např. cestu k souboru. Css upravit takto (vysledovat, jestli jde odstranit ten boarder, je to vidět na světlém skinu):
.codehead {
/* line break text in pre */
display: block;
text-overflow: ellipsis;
word-wrap: break-word;
overflow: hidden;
/* end of line break */
font-family: Consolas;
text-indent: 6px;
color:#DDD;
background:#606060;
border-top-left-radius:4px;
border-top-right-radius:4px;
padding: 2px 0px;
margin-bottom: 20px ;
}
.codehead pre {
margin-top: 1px;
text-indent: 0px;
margin: 0 ;
}
.codehead code {
margin-top: 1px;
text-indent: 0px;
margin: 0 ;
}
Do default.md se napíše toto:
<div class="codehead">raw.py
<pre><code><pre>#!/usr/bin/env python
print()
</pre></code></pre></div>
Grav v defaultu nevykresluje moc pěkně tabulky. Našel jsem úpravu .css, jak to vylepšit:
/* Tabluky */
table:not(.table) th {
background: #f7f7f7;
padding: .2rem .4rem .2rem .4rem;
vertical-align: middle;
border: 1px solid #eaeaea;
}
table:not(.table) td {
padding: .2rem .4rem .2rem .4rem;
vertical-align: middle;
border: 1px solid #eaeaea;
}
Zapneme ještě Markdown: extra v default.md:
markdown:
extra: true
Tabulka se vkláda s div záhlavím:
<div class="table is-hoverable is-striped" markdown="1">
| Akce | Příkaz |
|:-----|:------------|
| test | prvni radek |
</div>
Některé pluginy jako napríklad SnappyGrav, což je plugin umožňující export stránky do PDF mají závislosti, které se dají dotahat přes composer. Tento příkaz je doporučeno spouštět bez rootovských práv:
/user/plugins/snappygrav# sudo -u www-data ../../../bin/composer.phar require mpdf/mpdf
Seznam pluginů v Grav, které používám:
Instalace pluginů přes consoli:
sudo -u www-data bin/gpm uninstall toc
Tntsearch potřebuje mít nacachovanou DB stránek v SQlite. Nehledá v nové přidaných stránkých, dokud se nenaindexují. Mám to nastavené automaticky z cronu:
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
30 * * * * www-data ( tmp=$(cd /var/www/wiki2.n0ip.cz/ ; bin/plugin tntsearch index > /dev/null) )
Do /usr/page/Search/default.md vložit následují code:
---
title: Search
body_classes: 'title-center title-h1h2'
process:
twig: true
visible: false
---
{% include 'partials/tntsearch.html.twig' with { limit: 25, snippet: 500, min: 3, search_type: 'auto' } %}
A z /user/themes/quark/templates/partials/base.html.twig:46 ho volat:
<section class="navbar-section logo">
<a href="/search" class="active">
Search
</a>
</section>
V html se člověk může potkat s html entitami. Html entita je v podstatě jiný zápis pro znak na stránce, než je běžné. Nejznámější entitou je asi tagová závorka, protože html je tagy prošpikované :). Její kód je > a <. Jiný kód např. pro hranatou závorku [ je [ a její kódový název je: [

Zdroj obrázků, který by se mohly v budoucnu hodit: