résolu PluXml sur VM freebox merci à bazooka07

baifbaif Member
janvier 2023 modifié dans Entraide

Bonjour,
je viens de me créer un serveur sur une machine virtuelle installée dans ma freebox delta.
Je souhaite y faire fonctionner PluXml. J'y ai donc téléchargé le paquet PluXml avec un chmod 755 sur le dossier
Mais quand j'y accède pour procéder à l'installation j'obtiens ceci:

PluXml version 5.8.9 (encodage UTF-8)
Version de PHP : 8.2.0
Apache/2.4.54 (Debian)
✗ ./ n'est pas accessible en écriture ou n'existe pas
✗ ./data/configuration/ n'est pas accessible en écriture ou n'existe pas
✗ ./data/configuration/plugins/ n'est pas accessible en écriture ou n'existe pas
✗ ./data/articles/ n'est pas accessible en écriture ou n'existe pas
✗ ./data/commentaires/ n'est pas accessible en écriture ou n'existe pas
✗ ./data/statiques/ n'est pas accessible en écriture ou n'existe pas
✗ ./data/medias/ n'est pas accessible en écriture ou n'existe pas
✗ ./plugins/ n'est pas accessible en écriture ou n'existe pas
✗ ./themes/ n'est pas accessible en écriture ou n'existe pas
✔ Bibliothèque GD installée
✔ Bibliothèque XML installée
✔ Fonction d'envoi de mail disponible

Où puis-je modifier le path par défaut de ./ à /websites/VM/www/PluXml/ ?
Ou alors quels droits dois-je mettre sur PluXml

Réponses

  • En fait avec un sudo chown -R www-data:www-data /websites/VM/www/PluXml/
    Ça fonctionne mais ai-je bien eu raison de le mettre sur tous les dossiers de PluXml ?

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    Bonjour,

    Pour le minimum syndical, faire comme ceci :

    cd /websites/VM/www/
    sudo chown www-data PluXml
    cd PluXml
    sudo chown -R www-data config.php data plugins themes
    cd
    

    Par défaut, tous les dossiers de PluXml sont accessibles en lecture à tous les utilisateurs.

    Il te faut configurer un "virtual host" dans Apache2. C'est à régler dans les dossiers /etc/apache2/sites-available et /etc/apache2/sites-enabled. Duplique le fichier default.conf

    Si tu peux utiliser apt, je t'encourage à utiliser Nginx à la place de Apache2 qui est plus rapide et prend moins de place en mémoire. Je l'utilise sur un clone de Raspberry : Bananapi-berry avec port SATA.

  • @bazooka07
    Mille merci pour ton suivi qui m'a bien dépanné sur les chown
    Comment marquer le sujet résolu?
    En ce qui concerne Nginx j'avais bien tenté mais je restais avec un chargement des fichiers php plutôt que leur exécution d'où Apache2 :s
    Mais si tu as un bon tuto pour Nginx , je suis preneur =)

  • salut @baif,
    pour passer une discussion en résolue, il suffit d'éditer le message initial et en modifier le titre

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    @baif,
    Apache2 et NGinx travaillent de façon différente avec PHP
    Apache2 a une librairie libapache2-mod-php qui sait interprêter PHP
    NGinx est juste un serveur HTTP. Quand une requête en PHP, il va la transmettre à un serveur PHP-FPM qui va analyser le code PHP et renvoyer une réponse HTML au serveur NGinx.
    Donc il faut installer 2 paquets deb :

    sudo apt install nginx php-fpm php-gd php-xml php-curl
    

    Si tu ne souhaites pas désintaller Apache2, tu peux le désactiver par :

    sudo systemctl disable apache2
    

    Nginx et PHP-FPM vont dialoguer à travers un socket Unix. Tu peux le trouver dans le dossier avec :

    ls -l /run/php/
    

    On peut vérifier si les serveurs Nginx et PHP-FPM fonctionnent avec par exemple :

    sudo systemctl status nginx
    sudo systemctl status php7.4-fpm
    

    Note le numéro de version de PHP
    Ensuite il faut configurer un hôte virtuel pour Nginx. Le fichier de config se trouve dans le dossier /etc/nginx/sites-available. Et on crée un lien symbolique vers ce fichier de config dans le dossier /etc/nginx/sites-enabled. Voici à quoi ressemble mon fichier de config pour cet hôte virtuel :

    server {
        listen 80;
        listen [::]:80;
    
        root /var/www/test/PluXml-master;
    
        # Add index.php to the list if you are using PHP
        index index.php index.html index.htm;
    
        server_name berry74.lan;
    
        access_log  /var/log/nginx/test-access.log;
        error_log  /var/log/nginx/test-error.log;
    
        location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            try_files $uri $uri/ @handler;
        }
    
        # Réécriture vers l'index
        location @handler {
            rewrite ^/(.*)$ /index.php?$1 last;
        }
    
        location /download {
            autoindex on;
            autoindex_format html;
    
        }
        # pass PHP scripts to FastCGI server
    
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
        #
        #   # With php-fpm (or other unix sockets):
            fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        #   # With php-cgi (or other tcp sockets):
        #   fastcgi_pass 127.0.0.1:9000;
        }
    
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
            deny all;
        }
    }
    

    Il te faut ajuster les lignes "root", "server_name" et "fastcgi" selon ta config.
    Note que la ligne "location @handler" permet de faire de la ré-écriture d'urls avec PluXml.
    On peut également utiliser différentes versions de PHP sur la même machine en ayant un nom d'hôte différent pour chaque version de PHP, avec autant de serveurs PHP-FPM que de versions de PHP.
    Sur ma machine, je peux tester PluXml avec les versions 5.6, 7.4 et 8.2 de PHP sans modifier les configs, simplement avec un nom d'hôte différent.

  • @bazooka07
    Merci infiniment. Je vais à nouveau tenter d'installer Nginx sur tes directives et je te tiens au courant =)

  • bonjour et encore merci pour le suivi :)
    Je te transmets mes différents retour si tu peux encore me guider:

    freebox# nginx-t bash: nginx-t: command not foun
    
    freebox# systemctl restart nginx Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
    
        freebox# systemctl status nginx.service
        ● nginx.service - A high performance web server and a reverse proxy server
        Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
        Active: failed (Result: exit-code) since Sat 2023-01-07 09:22:55 UTC; 33min ago
        Docs: man:nginx(8)
        CPU: 91ms
    Jan 07 09:22:54 Bacouel-Debian11 nginx[48664]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    Jan 07 09:22:54 Bacouel-Debian11 nginx[48664]: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
    Jan 07 09:22:54 Bacouel-Debian11 nginx[48664]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    Jan 07 09:22:54 Bacouel-Debian11 nginx[48664]: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
    Jan 07 09:22:55 Bacouel-Debian11 nginx[48664]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    Jan 07 09:22:55 Bacouel-Debian11 nginx[48664]: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
    Jan 07 09:22:55 Bacouel-Debian11 nginx[48664]: nginx: [emerg] still could not bind()
    Jan 07 09:22:55 Bacouel-Debian11 systemd[1]: nginx.service: Control process exited, code=exited, status=1/FAILURE
    Jan 07 09:22:55 Bacouel-Debian11 systemd[1]: nginx.service: Failed with result 'exit-code'.
    Jan 07 09:22:55 Bacouel-Debian11 systemd[1]: Failed to start A high performance web server and a reverse proxy server.
    
    freebox# journalctl -xe
    Jan 07 09:39:01 Bacouel-Debian11 CRON[49346]: (root) CMD ( [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]>
    Jan 07 09:39:01 Bacouel-Debian11 CRON[49345]: pam_unix(cron:session): session closed for user root
    Jan 07 09:39:05 Bacouel-Debian11 systemd[1]: Starting Clean php session files...
    ░░ Subject: A start job for unit phpsessionclean.service has begun execution
    ░░ Defined-By: systemd
    ░░ Support: https://www.debian.org/support
    ░░
    ░░ A start job for unit phpsessionclean.service has begun execution.
    ░░
    ░░ The job identifier is 34563.
    Jan 07 09:39:05 Bacouel-Debian11 systemd[1]: phpsessionclean.service: Succeeded.
    ░░ Subject: Unit succeeded
    ░░ Defined-By: systemd
    ░░ Support: https://www.debian.org/support
    ░░
    ░░ The unit phpsessionclean.service has successfully entered the 'dead' state.
    Jan 07 09:39:05 Bacouel-Debian11 systemd[1]: Finished Clean php session files.
    ░░ Subject: A start job for unit phpsessionclean.service has finished successfully
    ░░ Defined-By: systemd
    ░░ Support: https://www.debian.org/support
    ░░
    ░░ A start job for unit phpsessionclean.service has finished successfully.
    ░░
    ░░ The job identifier is 34563.
    Jan 07 09:40:48 Bacouel-Debian11 sudo[49914]: root : TTY=pts/0 ; PWD=/home/freebox ; USER=root ; COMMAND=/usr/bin/systemctl>
    Jan 07 09:40:48 Bacouel-Debian11 sudo[49914]: pam_unix(sudo:session): session opened for user root(uid=0) by freebox(uid=0)
    Jan 07 09:40:48 Bacouel-Debian11 sudo[49914]: pam_unix(sudo:session): session closed fo`
    

    /////////////////////////////////////////////////////
    Où est-ce que ça cloche ?
    ////////////////////////////////////////////////////
    Merci d'avance de perdre un peu de ton WE pour m'aider !

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    T'es sûr d'avoir arrếté Apache ?
    Quand je vois : "0.0.0.0: 80 address already in use", j'ai un doute.
    A moins que tu ais installé un autre serveur http (lighthttpd ?)

    Tu peux utiliser htop pour voir les processus en cours d'exécution ( apache, nginx, ..)
    il s'installe par apt install htop

  • baifbaif Member
    janvier 2023 modifié

    @bazooka07
    Merci pour tout et surtout ta disponibilité pour un idiot qui avait tapé un // au lieu de / dans le fichier de config !
    Désolé pour le temps perdu !

    bonus mémo pour Let's encrypt:
    Installer Certbot
    Let's Encrypt fonctionnera via un programme appelé Certbot. Nous installerons Certbot et cela obtiendra les certificats SSL gratuits de Let's Encrypt.

    exécutez :

    sudo apt install certbot python3-certbot-nginx

    Une fois cela fait, nous pouvons commencer à obtenir les certificats SSL:

    sudo certbot

    Comme c'est la première fois qu'il s'exécute, il demandera un e-mail et d'autres éléments.

    Pour l'étape suivante, vous pouvez sélectionner des domaines spécifiques ou tous.

    Liste des domaines pouvant être sélectionnés pour certbot
    Sélectionnez les domaines à sécuriser.
    Il doit créer et définir correctement tous les certificats.
    Si à l'avenir vous ajoutez un nouveau domaine, réexécutez simplement la commande

    sudo certbot --nginx

    sélectionnez les nouveaux domaines.

    FIN

Connectez-vous ou Inscrivez-vous pour répondre.