Installer Plone 4.3 sur un Debian 12 (Bookworm)



1. Installer Python 2.7

A partir de Debian 12, Python 2 n'est plus supporté par Debian. Il va falloir l'installer manuellement avec pyenv :

Installation de Pyenv

a/ Installer les paquets systèmes requis :

sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl

b/ Installer Pyenv en utilisant un script fourni par les mainteneurs du projet :

curl https://pyenv.run | bash

c/ Après l’installation, ajouter les lignes suivantes au fichier de configuration de shell (.bashrc) :

export PYENV_ROOT="$HOME/.pyenv" 
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH" 
eval "$(pyenv init - bash)"

d/ vérifier que Pyenv est correctement installé en exécutant :

pyenv --version

Installer Python 2.7.15

pyenv install 2.7.15

Créer un dossier pour le projet Plone et définir la version de python à utiliser localement :

mkdir Plone
cd Plone
pyenv local 2.7.15

Cela crée un fichier .python-version dans le répertoire Plone, indiquant à Pyenv de basculer automatiquement vers la version spécifiée lorsque l'on travaille dans ce dossier.

2. Installation de Plone 4.3

Source : Installation instructions for Plone 4.3

Le dernier message "Zope ready to handle requests" annonce que l'instance Plone est opérationnel sur le port 8090.

Pour arrêter Plone, faire : CTRL-C

3. Lancer Plone en tant que service

4. Récupération des add-ons de l'ancien site Plone

si pas d’erreur, relancer et tester Plone

systemctl restart ugvr.service

5. Récupération des données de l'ancien site Plone

Une sauvegarde du site UGVR du serveur de prod été copiée dans le dossier ~/ugvr/download puis dans le dossier /home/ugvr/plone43/ugvr_plone/var.

Il suffit juste de les recopier vers ~/Plone/ugvr/var:

cd .~/Plone/ugvr/var
cp -r ~/plone43/ugvr_plone/var/blobstorage/ .
cp -r ~/plone43/ugvr_plone/var/filestorage/ .

Si pas d’erreur, relancer et tester le nouveau site :

cd .~/Plone/ugvr
systemctl restart ugvr.service

6. Configurer NGINX comme proxy pour le site Plone

Créer un fichier de conf /etc/nginx/sites-available/ugvr.conf contenant ces lignes :

# This adds security headers
add_header X-Frame-Options "SAMEORIGIN";
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
# add_header Content-Security-Policy "default-src 'self'; img-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'";
add_header Content-Security-Policy-Report-Only "default-src 'self'; img-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'";

# This specifies which IP and port Plone is running on.
# The default is 127.0.0.1:8080
upstream plone {
    server 127.0.0.1:8090;
}

# Redirect all www-less traffic to the www.site.com domain
# (you could also do the opposite www -> non-www domain)
server {
    listen 80;
    server_name www.ugvr.org;
    rewrite ^/(.*) http://ugvr.org/$1 permanent;
}

server {

    listen 80;
    server_name ugvr.org;
    access_log /var/log/nginx/ugvr.org.access.log;
    error_log /var/log/nginx/ugvr.org.error.log;

    # Note that domain name spelling in VirtualHostBase URL matters
    # -> this is what Plone sees as the "real" HTTP request URL.
    # "Plone" in the URL is your site id (case sensitive)
    location / {
        proxy_pass http://plone/VirtualHostBase/http/ugvr.org:80/ugvr/VirtualHostRoot/;
    }
}

Puis enable le site en creant un lien symbolique :

sudo -i
cd /etc/nginx/sites-enabled
ln -s ../sites-available/ugvr.conf .

Tester la validation de la configuration :

sudo nginx -t

Si la config est OK. redemarre nginx:

sudo systemctl restart nginx
sudo systemctl status nginx

Faire pointer le nom de domaine ugvr.org vers l'adresse IP du serveur puis tester en lancant dans un navigateur : http://uvrg.org

7. Demander un certificat pour un accès sécurisé pour le site

Nous allons utiliser Let's Encrypt, un Certificate Authority gratuit et facile à installer grace au script certbot:

sudo certbot --nginx

Puis suivre les instructions. Ce script modifie ugvr.conf de nginx pour prendre en compte le protocole https.

Redemarrer nginx pour prendre en compte la nouvelle config.

sudo systemctl restart nginx

Puis tester en lancant dans un navigateur : http://uvrg.org. La requête sera transformer automatiquement en https://uvrg.org

8. Installer POSTFIX pour relayer les mails

# installer POSTFIX
apt install postfix
# vérifier qu’il fonctionne
systemctl status postfix

Configurer Postfix pour servir de relai de mail en modifiant ces 2 lignes dans le fichier /etc/postfix/main.cf :

mydestination = $myhostname, vps-7cdacf07.vps.ovh.net, vps-seng, ugvr.org, localhost
relayhost = ugvr@laposte.net

Après avoir modifié main.cf, lancer 'systemctl reload postfix' pour prendre en compte les modifs.

Avec cette configuration, pas besoin de définir des boîtes mail en local, ni de définir les comptes POP, pas besoin de les gérer. Il y a laposte.net pour ça.

That's it


Publié le : 09-07-2025 - 06:50