Serverumgebung (SE) 0.372 Reihe 8 - Anpassungen

  • Hallo zusammen,


    nachdem die ersten Produkte (wie z. B. Nextcloud 21) zwingend MySQL 8 voraussetzen, habe ich mal testweise bei mir die Reihe 8 der Serverumgebung 0.372 installiert und festgestellt, das es doch noch die eine oder andere Sache gibt, die man sinnvollerweise anpassen sollte.

    Zum Beispiel gibt es bei MySQL 8 in Verbindung mit PHP 5.6 noch zwei Baustellen:
    1. Authentifzierung

    2. Zeichensatz


    Hierfür ist es sinnvoll, in der Datei /usr/local/pd-admin2/etc/my.cnf Anpassungen vorzunehmen, indem folgende Einträge mit aufgenommen werden:
    (kleines Update zur Client-Sektion, sonst klappt der mysqllog Befehl nicht mehr)

    Code
    [client]
    loose-default-character-set=utf8
    [mysqld]
    default-authentication-plugin = mysql_native_password
    collation-server = utf8_unicode_ci
    character-set-server = utf8
    [mysql]
    default-character-set=utf8

    Hintergrund:

    Vor MySQL wurde utf8 jeweils mit 3 Bytes als utf8mb3 verwendet, mit MySql 8 wird hier utf8mb4 verwendet und nur die Angabe von utf8 auf Client-Seite führt zu einer Fehlermeldung.


    Mit den obigen Änderungen könnten dann auch alte Einstellungen auf Clientseite weiter verwendet werden, um die Kommunikation ordnungsgemäß durchzuführen.

    Ich persönlich habe dann auch noch diverse Speichereinstellungen justiert, da MySQL 8 seine Performance nur mit höheren Zuweisungen bei der innodb wirklich zeigen kann.


    Zumindest bei meiner Installation habe ich dann unabhängig davon noch das Problem identifziert, das der proftpd nicht mehr funktioniert und eine Fehlermeldung bei der MySQL Kommunikation zeigt, wonach das SQL Statement seitens ProFTP fehlerhaft sei.


    Daraufhin habe ich dann mal probehalber PureFTP aktiviert, was auch sauber funktioniert, aber leider kein xferlog unterstützt, da der PureFTP in der SE-Umgebung ohne -altlog Modul kompiliert wurde.


    Daniel Bradler:

    Es wäre super, wenn zum einen das Proftpd Problem im nächsten SE Update für die Reihe 8 behoben würde und wenn gerne für alle Serien der pureftp noch mit der Option für die Unterstützung des altlog Moduls kompiliert würde.

  • Falls jemand das Bedürfnis verspürt, den pureftp einzusetzen, hier noch die Vorgehensweise, wie ich es bei mir mit einem eigenen Kompilat eingebunden habe:

    1. Runterladen der pureftpd Quellen

    Code
    wget https://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.49.tar.gz

    2. Runterladen des Tools "Patchelf"

    Code
    yum install patchelf
    (bei Centos)


    3. Konfigurieren und Kompilieren mit folgenden Befehlen:

    Code
    ./configure --with-mysql=/usr/local/pd-admin2 --with-everything --exec-prefix=/usr/local/pd-admin2 --sysconfdir=/usr/local/pd-admin2/etc --includedir=/usr/local/pd-admin2/include
    make
    patchelf --set-rpath /usr/local/pd-admin2/lib src/pure-ftpd

    Den Patchelf habe ich verwendet, damit er seine libmysqlclient Library findet. Die 64bit Versioin ist nämlich komischerweise in der pdadminse Umgebung im /usr/local/pd-admin2/lib Verzeichnis und nicht im /usr/local/pd-admin2/lib64 Verzeichnis abgelegt.


    4. Kopieren der neuen Binaries

    Nach /usr/local/pd-admin2/bin:

    pure-pw

    pure-pwconvert

    pure-statsdecode


    Nach /usr/local/pd-admin2/sbin:

    ptracetest

    pure-authd

    pure-certd

    pure-ftpd

    pure-ftpwho

    pure-mrtginfo

    pure-quotacheck

    pure-uploadscript


    5. Anpassen der /service/proftpd/run und Hinzufügen der Option:

    Bash
    #!/bin/bash
    INSTDIR=/usr/local/pd-admin2/
    exec $INSTDIR/sbin/pure-ftpd --ipv4only -AH -l unix -l mysql:$INSTDIR/etc/pureftpd-mysql.conf -O xferlog:/var/log/xferlog


    5. Erstellen einer Kopie von /opt/pdadmin/bin/ftp_log.pl als pureftp_log.pl. Dort den killall Befehl anpassen

    Code
    system "killall -HUP pure-ftpd";


    6. Einbinden der pureftp_log.pl in der crontab

    Code
    */30 * * * * nice -n 19 /opt/pdadmin/bin/pureftp_log.pl 1>/dev/null 2>&1


    7. Abschließend noch den entsprechenden Service neu starten:

    svc -d /service/proftpd; svc -u /service/proftpd


    Und schwupps -> man hat den pureftp am Laufen und bekommt auch die korrekten Statistiken der Übertragungen.