MySQLDumper unter CentOS 7.x mit Apache 2.4, PHP 7.2 und PHP-FPM installieren und einrichten

Bild: MySQLDumper Logo
Zum komfortablen Sichern und ggf. Wiederherstellen einzelner Tabellen und/oder Datenbanken unseres MariaDB-Datenbankservers greifen wir auf das Projekt MySQLDumper zurück.

Eine genaue Funktionsbeschreibung von MySQLDumper findet man auf der zugehörigen Projektseite.

PHP-Voraussetzungen

Für unseren komfortablen Weg der Sicherung unseres MariaDB-Servers muss natürlich ein funktionstüchtiger MariaDB-Server unter CentOS 7.x und entweder ein passender Apache-Webserver oder der Webserver NGiNX zur Verfügung stehen. Es werden werden von mysqldumper folgende Pakete benötigt:

  • php72u (aus dem IUS Repository)
  • perl-CGI
  • perl-Email-Date-Format
  • perl-Net-SMTP-SSL
  • perl-Net-HTTPTunnel
  • perl-Net-Daemon
  • perl-PlRPC
  • perl-DBI
  • perl-MIME-Types
  • perl-MIME-Lite
  • perl-DBD-MySQL
  • perl-Net-FTPSSL
  • perl-MailTools

Zur einfachen Installation via YUM greifen wir auf die folgenden Repositories zurück:

Die oben genannten Pakete installieren wir, sofern diese nicht schon bei der Grundinstallation unseres Apache-Webservers erfolgte, mit Hilfe von YUM

 # yum install php72u perl-CGI perl-Email-Date-Format perl-Net-SMTP-SSL perl-Net-HTTPTunnel perl-Net-Daemon \
       perl-PlRPC perl-DBI perl-MIME-Types perl-MIME-Lite perl-DBD-MySQL perl-Net-FTPSSL perl-MailTools -y

mysqldumper

Die aktuelle Entwicklerversion von mysqldumper mit PHP7-Unterstüzung wird vom Maintainer des Pakets auf GitHub weitergeführt.

Wir klonen uns also dieses Programmpaket. Dazu wechseln wir zuerst in das Zielverzeichis auf unserem Datenbank-/Web-Server.

 # cd /srv/www/html/

Anschließend klonen wir den Programm-Zweig.

 # git clone https://github.com/DSB/MySQLDumper.git

Für die Backup-Dateien, die Konfigurations-, Backup- sowie für die Logdateien legen wir uns nun noch im entsprechenden Zielverzeichnis jeweils ein Verzeichnis an., Hierzu benutzen wir folgenden Befehl.

 # mkdir -p /srv/www/html/MySQLDumper/work/{config,backup,log}

Da wir den Alternativer FastCGI Process Manager einsetzen passen wir noch die Verzeichnis und Dateirechte entsprechend an, unser Webserver und die PHP-/Perl-Scripte dort auch die Daten ablegen kann.

# chown php-fpm: /srv/www/html/MySQLDumper/ -R

 # chmod -R 777 /srv/www/html/msd1.24.4/work
 # chmod -R 755 /srv/www/html/msd1.24.4/msd_cron

Apache vHOST

Im ersten Konfigurationsbeispiel richten wir uns einen vHOST für unseren Apache-Webserver ein. Hier legen wir uns nachfolgende Konfigurationsdatei an und passen dieser entsprechend unserer Umgebung nach an.

 # vim /etc/httpd/conf.d/mysqldumper.conf
/etc/httpd/conf.d/mysqldumper.conf
#
# Django : 2017-10-08
#          vHost mysqldumper
#
 
# Variablen der Hostvariablen
Define vhost mysqldumper
Define errors_log logs/${vhost}_error.log
Define access_log logs/${vhost}_access.log
Define ssl_log logs/${vhost}_ssl_request.log
 
<VirtualHost *:80>
    ServerAdmin webmaster@nausch.org
    ServerName ${vhost}.nausch.org
 
    # HTTP auf HTTPS umleiten
    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
 
    # Welche Logdateien sollen beschrieben werden
    SetEnvIf Remote_Addr "10\.0\.0\.117" dontlog
    ErrorLog  ${errors_log}
    CustomLog ${access_log} combined env=!dontlog
</VirtualHost>
<VirtualHost *:443>
    ServerAdmin webmaster@nausch.org
    ServerName ${vhost}.nausch.org
    ServerPath /
 
    # Wer soll Zugriff auf die Webseite(n) bekommen?
    <Location />
        Options +FollowSymLinks +Multiviews -Indexes
        AllowOverride None
        AuthType Basic
        AuthName "Fuer den Zugriff auf den Webserver bitte Anmeldedaten eingeben!"
        AuthBasicProvider ldap
        AuthLDAPUrl ldaps://openldap.dmz.nausch.org:636/ou=People,dc=nausch,dc=org?uid
        AuthLDAPBindDN cn=Technischeruser,dc=nausch,dc=org
        AuthLDAPBindPassword "e1n531f!D4xIi57n38103034u!"
        AuthLDAPBindAuthoritative on
        Require ldap-user admindb
    </Location>
 
    # Welcher Inhalt soll angezeigt bzw. auf welchen Server sollen die HTTP-Requests weitergeleitet werden?
    DocumentRoot   "/srv/www/html/MySQLDumper/"
    DirectoryIndex index.php
 
    <Directory /srv/www/html/MySQLDumper/>
        Options none
        AllowOverride Limit
        Require all granted
        Options ExecCGI FollowSymLinks
        AddHandler cgi-script .pl
    </Directory>
 
    <LocationMatch "/(config.php|configs|scripts|smarty|tests|users|VIRTUAL_VACATION)/">
        Require all denied
    </LocationMatch>
 
    # Nutzung des PHP-FPM Interpreters
    <FilesMatch \.php$>
        SetHandler "proxy:fcgi://127.0.0.1:9001"
        #SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
    </FilesMatch>
 
    # Welche Logdateien sollen beschrieben werden
    SetEnvIf Remote_Addr "10\.0\.0\.117" dontlog
    ErrorLog  ${errors_log}
    CustomLog ${access_log} combined env=!dontlog
    CustomLog ${ssl_log} "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
 
    # Absicherung der Übertragung mit Hilfe von TLS
    # Django : 2015-10-04 - TLS-Verschlüsselung mit Hilfe von mod_ssl
    SSLEngine on
    # Definition der anzubietenden Protokolle
    SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
    # Definition der Cipher
    SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDH-ECDSA-AES256-GCM-SHA384
    # Schlüsseldatei, mit der der CSR erstellt wurde
    SSLCertificateKeyFile /etc/pki/tls/private/wildcard_2017.nausch.org.serverkey.pem
    # Zertifikatsdatei, die von der CA signiert wurde
    SSLCertificateFile /etc/pki/tls/certs/wildcard_2017.nausch.org.certificate_161118.pem
    # Zertifikatsdatei des bzw. der Intermediate-Zertifikate(s)
    SSLCertificateChainFile /etc/pki/tls/certs/AlphaSSL_Intermediate.certificate.pem
    # Änderung der Cipherorder der Clients verneinen 
    SSLHonorCipherOrder on
    # TLS 1.0 Kompremmierung deaktivieren (CRIME attacks)
    SSLCompression off
    # Online Certificate Status Protocol stapling zum Prüfen des Gültigkeitsstatus des Serverzertifikats.
    SSLUseStapling on
    SSLStaplingResponderTimeout 5
    SSLStaplingReturnResponderErrors off
 
    # HTTP Strict Transport Security (HSTS), bei dem der Server dem Client im HTTP-Header mitteilt,
    # dass dieser nur noch verschlüsselt mit dem Server kommunizieren soll.
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
 
    # This header enables the Cross-site scripting (XSS) filter built into most recent web browsers.
    # It's usually enabled by default anyway, so the role of this header is to re-enable the filter for
    # this particular website if it was disabled by the user.
    # https://www.owasp.org/index.php/List_of_useful_HTTP_headers
    #Header set X-XSS-Protection "1; mode=block"
    Header always set X-Xss-Protection "1; mode=block"
 
    # when serving user-supplied content, include a X-Content-Type-Options: nosniff header along with the Content-Type: header,
    # to disable content-type sniffing on some browsers.
    # https://www.owasp.org/index.php/List_of_useful_HTTP_headers
    # currently suppoorted in IE > 8 http://blogs.msdn.com/b/ie/archive/2008/09/02/ie8-security-part-vi-beta-2-update.aspx
    # http://msdn.microsoft.com/en-us/library/ie/gg622941(v=vs.85).aspx
    # 'soon' on Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=471020
    # Sofern die Datei auch den entsprechenden MIME-Typ "text/css" entspricht, soll der Browser 
    # CSS-Dateien nur als CSS interprätieren.
    Header always set X-Content-Type-Options nosniff
 
    # config to don't allow the browser to render the page inside an frame or iframe
    # and avoid clickjacking http://en.wikipedia.org/wiki/Clickjacking
    # if you need to allow [i]frames, you can use SAMEORIGIN or even set an uri with ALLOW-FROM uri
    # https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-Options
    ###header set X-Frame-Options SAMEORIGIN
    header always set X-Frame-Options DENY
 
    # hide server header (apache and php version)
    Header always unset Server
 
    # Only allow JavaScript from the same domain to be run.
    # don't allow inline JavaScript to run.
    Header always set X-Content-Security-Policy "allow 'self';"
    #Header always set Content-Security-Policy "default-src 'self'; report-uri https://nausch.report-uri.io/r/default/csp/enforce"
 
    # Add Secure and HTTP only attributes to cookies
    Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
 
    # prevent Clickjacking Attack
    #Header always append X-Frame-Options SAMEORIGIN
    Header always set X-Frame-Options "SAMEORIGIN"
 
    # hkpk-stuff
    Header always set Public-Key-Pins "pin-sha256=\"nMiOpb6vUnjCoWCkPkDaxieG4ND8SNWzFTsQf2ZfruLno0=\"; pin-sha256=\"INhxSQ38nCS6ijaAAyo4xBabej9xeL3Xaak+GGiM2fo=\"; max-age=2592000; report-uri=\"https://nausch.report-uri.io/r/default/hpkp/enforce\""
</VirtualHost>

Haben wir die Konfigurationsdatei vervollständigt, prüfen wir diese noch auf syntaktische Fehler.

 # apachectl -t
 Syntax OK

Ein reload unseres Apache Webserver reicht nun aus, um den neuen vHOST verfügbar zu haben.

 # systemctl reload httpd

Die Konfiguration von MySQLDumper erfolgt über eine WEB-GUI, die über folgende URL erreichbar ist: http://mysqldumper.nausch.org. Diese URL rufen wir nun mit dem Webbrowser unserer Wahl auf.

 $ firefox http://mysqldumper.nausch.org

Nach Aufruf der Seite, müssen wir als erstes auswählen welche Sprache verwendet werden soll.

Bild: MySQLDumper-Konfigurationsseite Auswahl Sprache

Haben wir die Sprache ausgewählt klicken wir auf die Schaltfläche [ Installation ]. Auf der nächsten Seite definieren wir den Datenbankuser, der Zugriff auf alle Datenbanken und Tabellen hat.

Bild: MySQLDumper-Konfigurationsseite Auswahl Datenbankanbindung

Haben wir die benötigten Parameter eingegeben, klicken wir auf die Schaltfläche [ zu MySQL verbinden ]. In der unteren Bildschirmhälfte wird uns dann angezeigt welche Datenbanken gefunden wurden.

Bild: MySQLDumper-Konfigurationsseite Anzeige des Verbindungstests

Da die Verbindung erfolgreich hergestellt werden konnte, können wir nun die Konfigurationsdatei schreiben. Hierzu klicken wir auf die Schaltfläche [ speichern und Installation fortsetzen ].

Bild: MySQLDumper-Konfigurationsseite Anzeige des Verbindungstests

Wir befinden uns nun auf der Hauptseite von MySQLDumper. Da wir noch keinen Verzeichnisschutz angelegt haben, wird uns der Hinweis Dringend empfohlen und blendet die Schaltfläche [ Verzeichnisschutz erstellen ] . Wir klicken daher auf diese Schaltfläche.

Bild: MySQLDumper-Hauptseite

Haben wir alle Daten wie gewünscht eingetragen klicken wir auf die Schaltfläche [ Verzeichnisschutz erstellen ] .

Bild: MySQLDumper-Einrichtungsseite Verzeichnisschutz

Die nun eingeblendete Frage, bestätigen wir durch einen Klick auf die Schaltfläche [ OK ]. Konnte der Webserver die benötigte Datei nicht selbst schreiben, da er z.B. keine Berechtigung zum Scheiben des WebRoot-Verzeichnisses hat, wird uns folgende Seite präsentiert.

Bild: MySQLDumper-Einrichtungsseite Verzeichnisschutz

Die angezeigten Daten kopieren wir uns nun und speichern die beiden Dateien im Verzeichnis /srv/www/html/msd1.24.4/.

 # vim /srv/www/html/MySQLDumper/.htaccess
/srv/www/html/MySQLDumper/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine off
</IfModule>
AuthName "MySQLDumper"
AuthType Basic
AuthUserFile "/srv/www/html/MySQLDumper/.htpasswd"
require valid-user
 # vim /srv/www/htmlMySQLDumper/.htpasswd
/srv/www/html/MySQLDumper/.htpasswd
admindb:{SHA}llv64xop1TodKTSFZqHb1vbAo1ogh8=

Nun klicken wir im Webfrontend auf die Schaltfläche [ Home ].

Bild: MySQLDumper-Einrichtungsseite Verzeichnisschutz

Der Paypal-Spendebutton auf der linken Seite beißt keineswegs! ;) Wer schon mal per Hand versucht hat sehr große Datenbankbackups zurück zu sichern, kann ein Lied davon singen, wie aufwändig dies sein kann.

Also nicht zaudern, sondern direkt an den Programmautor Daniel Schichtholz ein paar € spenden!

Links

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
  • centos/web_c7/mysqldumper.txt
  • Zuletzt geändert: 22.07.2019 14:58.
  • (Externe Bearbeitung)