Plone Installieren: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
 
(29 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Plone 6 ==
Die Webseite von Plone ist: https://plone.org/ bzw. https://plone.de/
Zitat von dort:
> Plone ist ein Open-Source Content-Management-System (CMS) mit über 20 Jahren Stabilität und Sicherheit, was mit Plone 6 ein modernes, leistungsfähiges und benutzerfreundlich Overlay bekommen hat.
> Es setzt weiterhin den Standard für Content-Managemen-Systeme, indem es die meisten Funktionen und Anpassmöglichkeiten von Haus aus bietet.
Der Quelltext ist verfügbar auf:
* https://github.com/plone/plone
* https://github.com/plone/volto
{{Textkasten|gelb|2 Daemon-Dienste erforderlich|Sowohl Plone als auch Volto laufen als eigener Dienst. Daemon Dienste sind im Managed Webspace zusätzlich kostenpflichtig. Die entsprechenden Ports müssen beim Hostsharing Service angefordert werden.}}
=== Version ===
'''Plone 6.0.11'''
'''Volto 17.1.1'''
'''CMF 3.2'''
'''Zope 5.8.5'''
'''Python 3.9.16 (main, Oct 16 2023, 08:33:43) [GCC 8.3.0]'''
'''PIL 9.5.0 (Pillow)'''
== Installation ==
== Installation ==


In der Anleitung findet die Installation im Home-Verzeichnis des accountes xy00-plone statt.
In der Anleitung findet die Installation im Home-Verzeichnis des Accounts xyz00-plone statt.
Die Installation von Plone 3.2.1 erfolgt weitgehend automatisiert mit Hilfe von buildout, einer Software zur  
 
Erzeugung reproduzierbarer Installationen.
Wir installieren Plone 6 weitgehend automatisiert mit Hilfe von buildout, einer Software zur Erzeugung reproduzierbarer Installationen.


=== Erzeugen der Umgebung mit Paste Script für das buildout ===
Volto ist das neue Frontend für Plone, und das wird mit yarn installiert.


Zunächst wird mit Hilfe von Paste Script eine Umgebung erzeugt:
Wir benötigen eine aktuelle Version von Python, und benutzen dafür pyenv.


xyz00-plone@h99:~$ /opt/python/2.4.5/bin/paster create -t plone3_buildout plone3.2
=== Installation mit Ansible Skript ===


Scriptausgabe mit Eingabeaufforderung:
Es gibt ein Ansible Skript, mit Hilfe dessen die benötigten Programme und Domains eingerichtet werden können.
Selected and implied templates:
  ZopeSkel#plone3_buildout  A buildout for Plone 3 projects
Variables:
  egg:      plone3.2
  package:  plone32
  project:  plone3.2
  [...]


Die Quellen für das Ansible Skript können hier eingesehen werden: https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/plone


Alle Eingabeaufforderungen können  ohne Eingabe mit ENTER bestätigt werden, da diese Einstellungen später ersetzt werden.
=== Manuelle Installation ===


Nach der Erzeugung der Umgebung muss diese einmalig initialisiert werden:
==== Installation von Python 3.9 ====


xyz00-plone@h99:~$ cd plone3.2/
siehe [[Eigenes_Python_installieren#Installation_mit_pyenv]]
xyz00-plone@h99:~/plone3.2$ /opt/python/2.4.5/bin/python2.4 ./bootstrap.py


=== Konfiguration und Installation mit buildout ===
Wir haben Python 3.9 installiert. Es müsste auch mit Python 3.11 gehen.


Anschließend muss die zentrale Konfigurationsdatei durch die folgenden Inhalte ersetzt werden. Die fett markierten Einstellungen müssen individuell angepasst werden. Es können weitere Optionen nach Bedarf konfiguriert werden, um beispielsweise zusätzliche Products oder eggs zu installieren.
==== Installation von Node.js ====
 
siehe [[NodeJS]]
 
Es wird die aktuelle Version von Node 18 benötigt.
 
==== Virtualenv für lokale Python Packages ====
 
Folgende Shell Befehle ausführen:
 
$ mkdir plone
$ cd plone
$ source .profile
$ ~/.pyenv/versions/3.9.16/bin/python3 -m venv .venv
$ source .venv/bin/activate
$ pip install --upgrade pip
$ pip install setuptools==68.0.0
$ pip install wheel==0.40.0
$ pip install zc.buildout==3.0.1
$ pip install robotframework==6.0.2
 
==== Konfiguration und Installation mit buildout ====
 
Nun wird die zentrale Konfigurationsdatei erstellt. Die fett markierten Einstellungen müssen individuell angepasst werden. Es können weitere Optionen nach Bedarf konfiguriert werden, um beispielsweise zusätzliche Products oder eggs zu installieren.


Shell Befehl
Shell Befehl


  xyz00-plone@h99:~/plone3.2$ nano buildout.cfg
  $ cd ~/plone
$ mkdir buildout
$ cd buildout


Inhalt der buildout.cfg
Inhalt der buildout.cfg


  [buildout]
  [buildout]
  parts =
  parts = instance
    zope2
  extends = http://dist.plone.org/release/6-latest/versions.cfg
    productdistros
    instance
    zopepy
# Change the number here to change the version of Plone being used
  extends = http://dist.plone.org/release/3.2.1/versions.cfg
  versions = versions
  versions = versions
 
# Add additional egg download sources here. dist.plone.org contains archives
# of Plone packages.
find-links =
    http://dist.plone.org/release/3.2.1
    http://download.zope.org/ppix/
    http://download.zope.org/distribution/
    http://effbot.org/downloads
# Add additional eggs here
eggs =
# Reference any eggs you are developing here, one per line
# e.g.: develop = src/my.package
develop =
[zope2]
# For more information on this step and configuration options see:
# http://pypi.python.org/pypi/plone.recipe.zope2install
recipe = plone.recipe.zope2install
fake-zope-eggs = true
additional-fake-eggs =
    ZODB3
url = ${versions:zope2-url}
# Use this section to download additional old-style products.
# List any number of URLs for product tarballs under URLs (separate
# with whitespace, or break over several lines, with subsequent lines
# indented). If any archives contain several products inside a top-level
# directory, list the archive file name (i.e. the last part of the URL,
# normally with a .tar.gz suffix or similar) under 'nested-packages'.
# If any archives extract to a product directory with a version suffix, list
# the archive name under 'version-suffix-packages'.
[productdistros]
# For more information on this step and configuration options see:
# http://pypi.python.org/pypi/plone.recipe.distros
recipe = plone.recipe.distros
urls =
nested-packages =
version-suffix-packages =
  [instance]
  [instance]
# For more information on this step and configuration options see:
# http://pypi.python.org/pypi/plone.recipe.zope2instance
  recipe = plone.recipe.zope2instance
  recipe = plone.recipe.zope2instance
  zope2-location = ${zope2:location}
  user = admin:'''initialpassword'''
# ip-adress muss mit angegeben werden, da sonst der traffic nicht bei HS richtig abgerechnet werden kann.
  http-address = '''12300'''
'''ip-address = xyz00.hostsharing.net'''
'''user = admin:password'''
''' http-address = 12300'''
  '''ftp-address = 12301'''
'''wbdav-address = 12302'''
#debug-mode = on
#verbose-security = on
# If you want Zope to know about any additional eggs, list them here.
# This should include any development eggs you listed in develop-eggs above,
# e.g. eggs = Plone my.package
  eggs =
  eggs =
    Plone
    Plone
    ${buildout:eggs}
    Pillow
      
     plone.restapi
 
    plone.volto
# If you want to register ZCML slugs for any packages, list them here.
# e.g. zcml = my.package my.other.package
zcml =
products =
    ${buildout:directory}/products
    ${productdistros:location}
[zopepy]
# For more information on this step and configuration options see:
# http://pypi.python.org/pypi/zc.recipe.egg
recipe = zc.recipe.egg
eggs = ${instance:eggs}
interpreter = zopepy
extra-paths = ${zope2:location}/lib/python
scripts = zopepy


'''Achtung:''' Der angegebene Benutzer wird mit dem zugewiesenen Kennwort beim ersten Start der Zope-Instanz angelegt. Es empfiehlt sich aus Sicherheitsgründen, dass Kennwort nach dem ersten Start der Zope-Instanz aus der Konfigurationsdatei zu entfernen.
Shell Befehle ausführen:


Nach der Anpassung der Konfigurationsdatei buildout.cfg muss die Installation durch den Aufruf von buildout aktualisiert werden.
$ source ~/.profile
$ source .venv/bin/activate
$ cd ~/plone/buildout
$ ../.venv/bin/buildout


xyz00-plone@h99:~/plone3.1$ bin/buildout
==== Start Stop des Plone Dienstes ====


=== Installation zusätzlicher Softwarepakete ===
Zum Starten und Stoppen sollte ein systemd Dienst eingerichtet werden.


Zusätzliche Softwarepakete in egg-Form können in das Verzeichnis "src" installiert und im Abschnitt "[buildout]" der "buildout.cfg" unter "eggs" und "develop" eingetragen werden. Zusätzliche Softwarepakete in "Product"-Form können in den Abschnitt "[productdistros]" eingetragen oder in der Verzeichnis "products" installiert werden. Dies gilt gleichermaßen für Eigenentwicklungen wie Softwarepakete von Drittanbietern.
Es sind diese Verzeichnisse zu erstellen:
Starten und Stoppen der Instanz


=== Zope Instanz starten/stoppen ===
$ mkdir -p ~/var/log
$ mkdir -p ~/.config/systemd/user


Die Zope Instanz kann über von buildout erzeugte Skripte gestartet oder gestoppt werden.
Die Datei ~/.config/systemd/user/plone.service sollte diesen Inhalt haben:
Die Zope Instanz kann mehrer "Plone Sites" verwalten, so dass für jede weitere dom nur eine "Plone_ Site mit entsprechenden namen erstellt wird und die dazugehörige .htaccess erstellt werden muss.


Start
<pre>
xyz00-plone@h99:~/plone3.2$ bin/instance start
[Unit]
Description=Plone
After=network.target


Stop
[Service]
xyz00-plone@h99:~/plone3.2$ bin/instance stop
Type=forking
Restart=on-abort
WorkingDirectory=%h/plone
ExecStart=%h/plone/.venv/bin/python3 %h/plone/buildout/bin/instance start
ExecStop=%h/plone/.venv/bin/python3 %h/plone/buildout/bin/instance stop
ExecReload=%h/plone/.venv/bin/python3 %h/plone/buildout/bin/instance reload


=== Erzeugen der Plone Site ===
StandardError=append:%h/var/log/plone.err.log
StandardOutput=append:%h/var/log/plone.out.log


Eine laufende Instanz kann jederzeit über http://www.example.com:12300/ mit dem Webbrowser direkt angesprochen werden. Dabei ist der jeweilige Paketname und der zugewiesene Port für HTTP zu verwenden.
[Install]
WantedBy=default.target
</pre>


Mit Hilfe des Zope Management Interfaces (ZMI) wird nun eine Plone Site angelegt. Dazu wird im Webbrowser http://xyz00.hostsharing.net:12300/manage aufgerufen und nach dem Login mit den vergebenen Zugangsdaten aus der Drop Down-Liste "Plone Site" ausgewählt und per "Add" hinzugefügt. Die Plone Site sollte plone_site_example_com genannt werden.
Aktivieren des Dienstes:


Die laufende Plone Site kann anschließend über http://www.example.com:12300/plone_site mit Webbrowser angesprochen werden.
$ systemctl --user enable --now plone


=== Konfiguration von Apache ===


Um die erzeugte Plone Site auch über einen registrierten Domainnamen ansprechen zu können, wird im Verzeichnis der jeweiligen Subdomain eine Konfigurationsdatei .htaccess mit dem folgenden, vorgegebenen Inhalt hinterlegt. Dabei müssen der Name des Pakets, der Name der Domain und der zugewiesene Port für HTTP angepasst werden.
==== Einrichten von Volto ====


xyz00-plone@h99:~$ nano ~/doms/example.com/subs/www/.htaccess
Es muss das Volto Repository ausgecheckt werden:
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*) http://xyz00.hostsharing.net:12300/VirtualHostBase/http/www.example.com:80/plone_site_example_com/VirtualHostRoot/${escape:$1} [P,L]
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^(.*) http://xyz00.hostsharing.net:12300/VirtualHostBase/https/www.example.com:443/plone_site_example_com/VirtualHostRoot/${escape:$1} [P,L]
== WEBDAV ==
Um den webdav client zu aktivieren muss man in der zope.conf (die Datei ist in ~/plone3.2/parts/ folgendes hizufügen


  [zope.conf]
  $ cd ~
  [...]
  $ git clone https://github.com/plone/volto.git volto
  <webdav-source-server>
  $ git checkout -b 17.1.1 17.1.1
    # valid keys are "address" and "force-connection-close"
    address  www.example.com1980
    force-connection-close off
</webdav-source-server>
[...]


Dieses aktiviert den webdav server unter 'http://www.example.com:1980/'
Dann müssen die Node Pakete installiert werden:


Um unter Windows das plone root directory mappen zu können, ist es am Einfachsten die Freeware "netdrive" herunter zuladen und zu benutzen.
$ source ~/.profile
Die interne Windows lösung birgt Schwierigkeiten und ist nicht zu empfehlen siehe http://en.wikipedia.org/wiki/WebDAV
  $ cd ~/volto
$ nice yarn
$ nice yarn build


== automatisches Packen der ZopeDB ==
==== Start Stop des Volto Dienstes ====
Füge dazu die folgende Anweisung in Deine [[Cron]]-Konfiguration ein:


wget --http-user=zopeuser --http-password=zopepassword http://xyz00.hostsharing.net:30210/Control_Panel/Database/main/manage_pack --post-data="days3Afloat=7&submit=Pack"
Zum Starten und Stoppen sollte ein systemd Dienst eingerichtet werden.


In diesem Fall werden alle Änderungen, die jünger als 7 Tage sind in der ZODB erhalten bleiben und können unter gewissen Umständen rückgängig gemacht werden.
Es sind diese Verzeichnisse zu erstellen:


== automatisches Starten nach Server-Reboot ==
$ mkdir -p ~/var/log
Füge dazu die folgende Anweisung in Deine [[Cron]]-Konfiguration ein:
$ mkdir -p ~/.config/systemd/user


@reboot /home/pacs/xyz00/users/doms/plone/bin/instance start
Die Datei ~/.config/systemd/user/volto.service sollte diesen Inhalt haben:


<pre>
[Unit]
Description=Volto
After=network.target


[Service]
WorkingDirectory=%h/volto
Environment="NVM_DIR=%h/.nvm"
Environment="NVM_BIN=%h/.nvm/versions/node/v18.18.2/bin"
Environment="NODE_ENV=production"
Environment="PORT=31631"
Environment="RAZZLE_API_PATH=https://plone.beispielverein.de"


== Plone 4 installieren ==
ExecStart=%h/.nvm/versions/node/v18.18.2/bin/node build/server.js
== Version ==
'''Plone: 4.1.3'''
Es wird die [http://www.hostsharing.net/produkte/optionen.html#c1068 ZOPE Option] benötigt.


'''Python: 2.6'''
StandardError=append:%h/var/log/volto.err.log
StandardOutput=append:%h/var/log/volto.out.log


Restart=always
PrivateTmp=true
NoNewPrivileges=true


== Installation ==
[Install]
WantedBy=default.target
</pre>


In der Anleitung findet die Installation im Home-Verzeichnis des accountes xyz00-plone statt.
Aktivieren des Dienstes:
Die Installation von Plone 4.1.3 erfolgt weitgehend automatisiert mit Hilfe von buildout, einer Software zur
Erzeugung reproduzierbarer Installationen.


=== Erzeugen der Umgebung mit Paste Script für das buildout ===
$ systemctl --user enable --now volto


Zunächst wird mit Hilfe von Paste Script eine Umgebung erzeugt:
=== Konfiguration von Apache ===


xyz00-plone@h99:~$ /opt/python/2.6/bin/paster create -t plone4_buildout plone4
Um die erzeugte Plone Site auch über einen registrierten Domainnamen ansprechen zu können, wird im Verzeichnis der jeweiligen Subdomain eine Konfigurationsdatei .htaccess mit dem folgenden, vorgegebenen Inhalt hinterlegt. Dabei müssen der Name des Pakets, der Name der Domain und der zugewiesene Port für HTTP angepasst werden.
 
Scriptausgabe mit Eingabeaufforderung:
Selected and implied templates:
  ZopeSkel#plone4_buildout  A buildout for Plone 4 developer installation
Variables:
  egg:      plone4
  package:  plone4
  project:  plone4
  [...]


xyz00-plone@h99:~$ nano ~/doms/www.example.com/htdocs-ssl/.htaccess


Alle Eingabeaufforderungen können  ohne Eingabe mit ENTER bestätigt werden, da diese Einstellungen später ersetzt werden.
<pre>
DirectoryIndex disabled
RewriteEngine on
RewriteBase /


Nach der Erzeugung der Umgebung muss diese einmalig initialisiert werden:
RewriteRule \+\+api\+\+($|/.*) http://127.0.0.1:{{plone.ploneport}}/VirtualHostBase/https/www.example.com:443/{{plone.site_code}}/++api++/VirtualHostRoot/$1 [proxy,last]
RewriteRule .* http://127.0.0.1:{{plone.voltoport}}/%{REQUEST_URI} [proxy,last]
</pre>


xyz00-plone@h99:~$ cd plone4/
Desweiteren wird eine Domain für Zope benötigt, wo die Plone Webauftritte erstellt werden können:
xyz00-plone@h99:~/plone4$ /opt/python/2.6/bin/python ./bootstrap.py


=== Konfiguration und Installation mit buildout ===
xyz00-plone@h99:~$ nano ~/doms/zope.example.com/htdocs-ssl/.htaccess


Anschließend muss die zentrale Konfigurationsdatei durch die folgenden Inhalte ersetzt werden. Die fett markierten Einstellungen müssen individuell angepasst werden. Es können weitere Optionen nach Bedarf konfiguriert werden, um beispielsweise zusätzliche Products oder eggs zu installieren.
<pre>
DirectoryIndex disabled
RewriteEngine on
RewriteBase /


Shell Befehl
RewriteRule (.*) http://127.0.0.1:{{plone.ploneport}}/VirtualHostBase/https/zope.example.com:443/VirtualHostRoot/$1 [proxy,last]
</pre>


xyz00-plone@h99:~/plone4$ nano buildout.cfg
Diese Domain sollte mit htpasswd geschützt werden, um die Liste der Webauftritte zu verbergen.


Inhalt der buildout.cfg
xyz00-plone@h99:~$ nano ~/doms/zope.example.com/.htaccess


# buildout.cfg file for Plone 4 development work
<pre>
# - for production installations please use http://plone.org/download
AuthType Basic
# Each part has more information about its recipe on PyPi
AuthName "Passwortgeschütztes Verzeichnis"
# http://pypi.python.org/pypi
AuthUserFile /home/pacs/xyz00/users/plone/doms/zope.example.com/.htpasswd
# ... just reach by the recipe name
Require valid-user
[buildout]
</pre>
parts = 
    instance
    zopepy
    i18ndude
    zopeskel
    test
#    omelette
extends =
    http://dist.plone.org/release/4.1/versions.cfg
# Add additional egg download sources here. dist.plone.org contains archives
# of Plone packages.
find-links =
    http://dist.plone.org/release/4.1
    http://dist.plone.org/thirdparty
extensions =
    mr.developer
    buildout.dumppickedversions
sources = sources
versions = versions
# Reference any folders where you have Python egg source code under development here
# e.g.: develop = src/my.package
# If you are using the mr.developer extension and have the source code in a
# repository mr.developer will handle this automatically for you
develop =
# Create bin/instance command to manage Zope start up and shutdown
[instance]
recipe = plone.recipe.zope2instance
user = admin:admin
# ip-adress muss mit angegeben werden, da sonst der traffic nicht bei HS richtig abgerechnet werden kann.
'''ip-address = xyz00.hostsharing.net'''
'''user = admin:password'''
'''http-address = 12300'''
'''ftp-address = 12301'''
'''wbdav-address = 12302'''
debug-mode = off
verbose-security = on
blob-storage = var/blobstorage
eggs =
    PIL
    Plone
# Some pre-Plone 3.3 packages may need you to register the package name here in
# order their configure.zcml to be run (http://plone.org/products/plone/roadmap/247)
# - this is never required for packages in the Products namespace (Products.*)
zcml =
# zopepy commands allows you to execute Python scripts using a PYTHONPATH
# including all the configured eggs
[zopepy]
recipe = zc.recipe.egg
eggs = ${instance:eggs}
interpreter = zopepy
scripts = zopepy
# create bin/i18ndude command
[i18ndude]
unzip = true
recipe = zc.recipe.egg
eggs = i18ndude
# create bin/test command
[test]
recipe = zc.recipe.testrunner
defaults = ['--auto-color', '--auto-progress']
eggs =
    ${instance:eggs}
# create ZopeSkel and paster commands with dexterity support
[zopeskel]
recipe = zc.recipe.egg
eggs =
    ZopeSkel
    PasteScript
    zopeskel.dexterity
# symlinks all Python source code to parts/omelette folder when buildout is run
# windows users will need to install additional software for this part to build
# correctly.  See http://pypi.python.org/pypi/collective.recipe.omelette for
# relevant details.
# [omelette]
# recipe = collective.recipe.omelette
# eggs = ${instance:eggs}
# Put your mr.developer managed source code repositories here, see
# http://pypi.python.org/pypi/mr.developer for details on the format of
# this part
[sources]
#collective.developermanual = git git://github.com/collective/collective.developermanual.git
# Version pindowns for new style products go here - this section extends one
# provided in http://dist.plone.org/release/
[versions]


'''Achtung:''' Der angegebene Benutzer wird mit dem zugewiesenen Kennwort beim ersten Start der Zope-Instanz angelegt. Es empfiehlt sich aus Sicherheitsgründen, dass Kennwort nach dem ersten Start der Zope-Instanz aus der Konfigurationsdatei zu entfernen.
Erzeugen der Passwort Datei:


Nach der Anpassung der Konfigurationsdatei buildout.cfg muss die Installation durch den Aufruf von buildout aktualisiert werden.
$ htpasswd -c ~/doms/zope.example.com/.htpasswd admin


xyz00-plone@h99:~/plone4$ bin/buildout
=== Erzeugen der Plone Site ===


=== Installation zusätzlicher Softwarepakete ===
Eine laufende Instanz kann jederzeit über http://www.example.com mit dem Webbrowser direkt angesprochen werden. Dabei muss für jeden Webauftritt eine eigene Sub-Domain mit entsprechender .htaccess Datei konfiguriert werden.


Zusätzliche Softwarepakete in egg-Form können in das Verzeichnis "src" installiert und im Abschnitt "[buildout]" der "buildout.cfg" unter "eggs" und "develop" eingetragen werden. Zusätzliche Softwarepakete in "Product"-Form können in den Abschnitt "[productdistros]" eingetragen oder in der Verzeichnis "products" installiert werden. Dies gilt gleichermaßen für Eigenentwicklungen wie Softwarepakete von Drittanbietern.
Mit Hilfe des Zope Management Interfaces (ZMI) wird nun eine Plone Site angelegt. Dazu wird im Webbrowser http://zope.example.com aufgerufen und nach dem Login mit den vergebenen Zugangsdaten auf den Button "Add Plone Site" klicken. Die Plone Site sollte Plone oder ein anderes Kürzel genannt werden.
Starten und Stoppen der Instanz


=== Zope Instanz starten/stoppen ===
Die laufende Plone Site kann anschließend über http://www.example.com mit dem Webbrowser angesprochen werden.


Die Zope Instanz kann über von buildout erzeugte Skripte gestartet oder gestoppt werden.
Für weitere Seiten muss entsprechend eine Sub-Domain eingerichtet werden, inkl. einer .htaccess Datei, mit einem entsprechenden Eintrag für den Site Code, anstatt Plone.
Die Zope Instanz kann mehrer "Plone Sites" verwalten, so dass für jede weitere dom nur eine "Plone_ Site mit entsprechenden namen erstellt wird und die dazugehörige .htaccess erstellt werden muss.


Start
xyz00-plone@h99:~/plone4$ bin/instance start


Stop
== Automatisches Packen der ZopeDB ==
xyz00-plone@h99:~/plone4$ bin/instance stop
Füge dazu die folgende Anweisung in Deine [[Cron]]-Konfiguration ein:


=== Erzeugen der Plone Site ===
wget --http-user=zopeuser --http-password=zopepassword http://xyz00.hostsharing.net:12300/Control_Panel/Database/main/manage_pack --post-data="days3Afloat=7&submit=Pack"


Eine laufende Instanz kann jederzeit über http://www.example.com:12300/ mit dem Webbrowser direkt angesprochen werden. Dabei ist der jeweilige Paketname und der zugewiesene Port für HTTP zu verwenden.
In diesem Fall werden alle Änderungen, die jünger als 7 Tage sind in der ZODB erhalten bleiben und können unter gewissen Umständen rückgängig gemacht werden.


Mit Hilfe des Zope Management Interfaces (ZMI) wird nun eine Plone Site angelegt. Dazu wird im Webbrowser http://xyz00.hostsharing.net:12300/manage aufgerufen und nach dem Login mit den vergebenen Zugangsdaten auf den Button "Add Plone Site" klicken. Die Plone Site sollte plone_site_example_com genannt werden.


Die laufende Plone Site kann anschließend über http://www.example.com:12300/plone_site_example_com mit Webbrowser angesprochen werden.
== Links ==


=== Konfiguration von Apache ===
* Internationale Plone Seite: https://plone.org
* Deutsche Plone Seite: https://plone.de
* Github Repository für Plone: https://github.com/plone/plone
* Github Repository für Volto: https://github.com/plone/volto
* Ansible Skript: https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/plone


Um die erzeugte Plone Site auch über einen registrierten Domainnamen ansprechen zu können, wird im Verzeichnis der jeweiligen Subdomain eine Konfigurationsdatei .htaccess mit dem folgenden, vorgegebenen Inhalt hinterlegt. Dabei müssen der Name des Pakets, der Name der Domain und der zugewiesene Port für HTTP angepasst werden.


xyz00-plone@h99:~$ nano ~/doms/example.com/subs/www/.htaccess
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*) http://xyz00.hostsharing.net:12300/VirtualHostBase/http/www.example.com:80/plone_site_example_com/VirtualHostRoot/$1 [proxy,last]
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^(.*) http://xyz00.hostsharing.net:12300/VirtualHostBase/https/www.example.com:443/plone_site_example_com/VirtualHostRoot/$1 [proxy,last]
----
----
[[Kategorie:HSDoku]]
[[Kategorie:HSDoku]]
[[Kategorie:Installationsanleitungen]]
[[Kategorie:Installationsanleitungen]]
[[Kategorie:Software]]
[[Kategorie:Software]]
[[Kategorie:CMS]]
[[Kategorie:Ansible Playbook]]

Aktuelle Version vom 16. Oktober 2023, 10:27 Uhr

Plone 6

Die Webseite von Plone ist: https://plone.org/ bzw. https://plone.de/

Zitat von dort:

> Plone ist ein Open-Source Content-Management-System (CMS) mit über 20 Jahren Stabilität und Sicherheit, was mit Plone 6 ein modernes, leistungsfähiges und benutzerfreundlich Overlay bekommen hat.

> Es setzt weiterhin den Standard für Content-Managemen-Systeme, indem es die meisten Funktionen und Anpassmöglichkeiten von Haus aus bietet.

Der Quelltext ist verfügbar auf:


2 Daemon-Dienste erforderlich

Sowohl Plone als auch Volto laufen als eigener Dienst. Daemon Dienste sind im Managed Webspace zusätzlich kostenpflichtig. Die entsprechenden Ports müssen beim Hostsharing Service angefordert werden.


Version

Plone 6.0.11

Volto 17.1.1

CMF 3.2

Zope 5.8.5

Python 3.9.16 (main, Oct 16 2023, 08:33:43) [GCC 8.3.0]

PIL 9.5.0 (Pillow)

Installation

In der Anleitung findet die Installation im Home-Verzeichnis des Accounts xyz00-plone statt.

Wir installieren Plone 6 weitgehend automatisiert mit Hilfe von buildout, einer Software zur Erzeugung reproduzierbarer Installationen.

Volto ist das neue Frontend für Plone, und das wird mit yarn installiert.

Wir benötigen eine aktuelle Version von Python, und benutzen dafür pyenv.

Installation mit Ansible Skript

Es gibt ein Ansible Skript, mit Hilfe dessen die benötigten Programme und Domains eingerichtet werden können.

Die Quellen für das Ansible Skript können hier eingesehen werden: https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/plone

Manuelle Installation

Installation von Python 3.9

siehe Eigenes_Python_installieren#Installation_mit_pyenv

Wir haben Python 3.9 installiert. Es müsste auch mit Python 3.11 gehen.

Installation von Node.js

siehe NodeJS

Es wird die aktuelle Version von Node 18 benötigt.

Virtualenv für lokale Python Packages

Folgende Shell Befehle ausführen:

$ mkdir plone
$ cd plone
$ source .profile
$ ~/.pyenv/versions/3.9.16/bin/python3 -m venv .venv
$ source .venv/bin/activate
$ pip install --upgrade pip
$ pip install setuptools==68.0.0
$ pip install wheel==0.40.0
$ pip install zc.buildout==3.0.1
$ pip install robotframework==6.0.2

Konfiguration und Installation mit buildout

Nun wird die zentrale Konfigurationsdatei erstellt. Die fett markierten Einstellungen müssen individuell angepasst werden. Es können weitere Optionen nach Bedarf konfiguriert werden, um beispielsweise zusätzliche Products oder eggs zu installieren.

Shell Befehl

$ cd ~/plone
$ mkdir buildout
$ cd buildout

Inhalt der buildout.cfg

[buildout]
parts = instance
extends = http://dist.plone.org/release/6-latest/versions.cfg
versions = versions
[instance]
recipe = plone.recipe.zope2instance
user = admin:initialpassword
http-address = 12300
eggs =
    Plone
    Pillow
    plone.restapi
    plone.volto

Shell Befehle ausführen:

$ source ~/.profile
$ source .venv/bin/activate
$ cd ~/plone/buildout
$ ../.venv/bin/buildout

Start Stop des Plone Dienstes

Zum Starten und Stoppen sollte ein systemd Dienst eingerichtet werden.

Es sind diese Verzeichnisse zu erstellen:

$ mkdir -p ~/var/log
$ mkdir -p ~/.config/systemd/user

Die Datei ~/.config/systemd/user/plone.service sollte diesen Inhalt haben:

[Unit]
Description=Plone
After=network.target

[Service]
Type=forking
Restart=on-abort
WorkingDirectory=%h/plone
ExecStart=%h/plone/.venv/bin/python3 %h/plone/buildout/bin/instance start
ExecStop=%h/plone/.venv/bin/python3 %h/plone/buildout/bin/instance stop
ExecReload=%h/plone/.venv/bin/python3 %h/plone/buildout/bin/instance reload

StandardError=append:%h/var/log/plone.err.log
StandardOutput=append:%h/var/log/plone.out.log

[Install]
WantedBy=default.target

Aktivieren des Dienstes:

$ systemctl --user enable --now plone


Einrichten von Volto

Es muss das Volto Repository ausgecheckt werden:

$ cd ~
$ git clone https://github.com/plone/volto.git volto
$ git checkout -b 17.1.1 17.1.1

Dann müssen die Node Pakete installiert werden:

$ source ~/.profile
$ cd ~/volto
$ nice yarn
$ nice yarn build

Start Stop des Volto Dienstes

Zum Starten und Stoppen sollte ein systemd Dienst eingerichtet werden.

Es sind diese Verzeichnisse zu erstellen:

$ mkdir -p ~/var/log
$ mkdir -p ~/.config/systemd/user

Die Datei ~/.config/systemd/user/volto.service sollte diesen Inhalt haben:

[Unit]
Description=Volto
After=network.target

[Service]
WorkingDirectory=%h/volto
Environment="NVM_DIR=%h/.nvm"
Environment="NVM_BIN=%h/.nvm/versions/node/v18.18.2/bin"
Environment="NODE_ENV=production"
Environment="PORT=31631"
Environment="RAZZLE_API_PATH=https://plone.beispielverein.de"

ExecStart=%h/.nvm/versions/node/v18.18.2/bin/node build/server.js

StandardError=append:%h/var/log/volto.err.log
StandardOutput=append:%h/var/log/volto.out.log

Restart=always
PrivateTmp=true
NoNewPrivileges=true

[Install]
WantedBy=default.target

Aktivieren des Dienstes:

$ systemctl --user enable --now volto

Konfiguration von Apache

Um die erzeugte Plone Site auch über einen registrierten Domainnamen ansprechen zu können, wird im Verzeichnis der jeweiligen Subdomain eine Konfigurationsdatei .htaccess mit dem folgenden, vorgegebenen Inhalt hinterlegt. Dabei müssen der Name des Pakets, der Name der Domain und der zugewiesene Port für HTTP angepasst werden.

xyz00-plone@h99:~$ nano ~/doms/www.example.com/htdocs-ssl/.htaccess
DirectoryIndex disabled
RewriteEngine on
RewriteBase /

RewriteRule \+\+api\+\+($|/.*) http://127.0.0.1:{{plone.ploneport}}/VirtualHostBase/https/www.example.com:443/{{plone.site_code}}/++api++/VirtualHostRoot/$1 [proxy,last]
RewriteRule .* http://127.0.0.1:{{plone.voltoport}}/%{REQUEST_URI} [proxy,last]

Desweiteren wird eine Domain für Zope benötigt, wo die Plone Webauftritte erstellt werden können:

xyz00-plone@h99:~$ nano ~/doms/zope.example.com/htdocs-ssl/.htaccess
DirectoryIndex disabled
RewriteEngine on
RewriteBase /

RewriteRule (.*) http://127.0.0.1:{{plone.ploneport}}/VirtualHostBase/https/zope.example.com:443/VirtualHostRoot/$1 [proxy,last]

Diese Domain sollte mit htpasswd geschützt werden, um die Liste der Webauftritte zu verbergen.

xyz00-plone@h99:~$ nano ~/doms/zope.example.com/.htaccess
AuthType Basic
AuthName "Passwortgeschütztes Verzeichnis"
AuthUserFile /home/pacs/xyz00/users/plone/doms/zope.example.com/.htpasswd
Require valid-user

Erzeugen der Passwort Datei:

$ htpasswd -c ~/doms/zope.example.com/.htpasswd admin

Erzeugen der Plone Site

Eine laufende Instanz kann jederzeit über http://www.example.com mit dem Webbrowser direkt angesprochen werden. Dabei muss für jeden Webauftritt eine eigene Sub-Domain mit entsprechender .htaccess Datei konfiguriert werden.

Mit Hilfe des Zope Management Interfaces (ZMI) wird nun eine Plone Site angelegt. Dazu wird im Webbrowser http://zope.example.com aufgerufen und nach dem Login mit den vergebenen Zugangsdaten auf den Button "Add Plone Site" klicken. Die Plone Site sollte Plone oder ein anderes Kürzel genannt werden.

Die laufende Plone Site kann anschließend über http://www.example.com mit dem Webbrowser angesprochen werden.

Für weitere Seiten muss entsprechend eine Sub-Domain eingerichtet werden, inkl. einer .htaccess Datei, mit einem entsprechenden Eintrag für den Site Code, anstatt Plone.


Automatisches Packen der ZopeDB

Füge dazu die folgende Anweisung in Deine Cron-Konfiguration ein:

wget --http-user=zopeuser --http-password=zopepassword http://xyz00.hostsharing.net:12300/Control_Panel/Database/main/manage_pack --post-data="days3Afloat=7&submit=Pack"

In diesem Fall werden alle Änderungen, die jünger als 7 Tage sind in der ZODB erhalten bleiben und können unter gewissen Umständen rückgängig gemacht werden.


Links