Re: Immutable
Petko Yotov <[email protected]> Wed, 09 Apr 2025 22:22:48 +0200
| Newsgroups | gmane.comp.web.wiki.pmwiki.user |
|---|---|
| Message-ID | <[email protected]> |
On 09/04/2025 21:35, [email protected] wrote: > 1) What would break if I used html5 in a custom template instead of > xhtml? Is it better to stick with xhtml? No, I recommend using html5, but there are some additional configurations to make it mostly valid html5, see the skin pmwiki-responsive (in skin.php). You could copy pmwiki-responsive to a new folder and customize it there. > 2) I use NixOS and keep all immutable stuff in read only /nix/store. > Unfortunatelly, because of the way pmwiki is structured, > I have to symlink so much stuff into the mutable dataDir: > [...] > Is there a way to minimize this symlinking somehow? > Ideally, there would be read-only directory for immutable stuff > and read-write directory for mutable stuff (wiki.d and uploads) > and these two would not need to be mixed. You only symlink pmwiki/pub. Yes, you can do this as a "wiki farm" with a single field, and locally present directories like mutable/local, mutable/uploads, mutable/pub, mutable/pub/css, mutable/pub/skins/yourskin, are used instead of the core ones. Also mutable/wiki.d will be created next to mutable/index.php if it is not there. Check this page: https://www.pmwiki.org/wiki/PITS/01501 Basically you have mutable/index.php that includes the immutable pmwiki.php, and a bunch of local directories and configuration files that will be used by the field. You only symlink pmwiki-2.4.3/pub into mutable/pmwiki-pub and reconfigure $FarmPubDirUrl in config.php like this: $FarmPubDirUrl = 'https://example.com/pmwiki-pub'; PmWiki will load the core skins, styles, javascripts from $FarmPubDirUrl and your own skins and styles from $PubDirUrl which should be autodetected, or set it to: $PubDirUrl = 'https://example.com/pub'; This also makes it easy to upgrade the core, or safely test the new version and roll back by either renaming the immutable directory or by re-symlinking it. You absolutely don't have to patch the core, everything is configurable. I would place the pmwiki directory outside the server root. For extra security you could move both local/ and wiki.d/ outside of the server document root, these are configured with $LocalDir (in index.php before including pmwiki.php) and both $WorkDir and $WikiDir (in config.php) - look these up in the documentation. Petko > system.activationScripts.ensure-pmwiki = '' > if ! test -d ${dataDir}; then > mkdir ${dataDir} > fi > chown ${app}:${app} ${dataDir} > chmod 755 ${dataDir} > ln -sf ${pmwiki}/share/pmwiki.php ${dataDir} > ln -sf ${pmwiki}/share/pub ${dataDir} > ln -sf ${pmwiki}/share/scripts ${dataDir} > ln -sf ${pmwiki}/share/wikilib.d ${dataDir} > ln -sf ${indexPhp} ${dataDir}/index.php > ln -sf ${local}/local ${dataDir} > ln -sf ${robotsTxt} ${dataDir}/robots.txt > if ! test -d ${dataDir}/wiki.d; then > mkdir ${dataDir}/wiki.d > fi > chown -R ${app}:${app} ${dataDir}/wiki.d > if ! test -d ${dataDir}/uploads; then > mkdir ${dataDir}/uploads > fi > chown -R ${app}:${app} ${dataDir}/uploads > systemctl restart phpfpm-pmwiki > ''; > > Is there a way to minimize this symlinking somehow? > Ideally, there would be read-only directory for immutable stuff > and read-write directory for mutable stuff (wiki.d and uploads) > and these two would not need to be mixed. > One idea would be to have web server root in the read-only > /nix/store > and somehow configure the location of the wiki.d and uploads > directories in config.php. Is this possible? > > The way wikilib.d and wiki.d work is kind of overlay, where > rw files in wiki.d can overlay ro files in wikilib.d. > Would it be possibe to do something like this for skins, > so that can overlay custom skin dir and I do not have to "patch" > the upstream pmwiki-2.4.3 package? Maybe an overlay for the whole > pub/ directory? > > Cheers, > > Tomas