Zuerst einmal muss mysqldumper installiert werden. Ist dies geschehen, kann anschließend Perl installiert werden. Dazu auf http://www.activestate.com/activeperl/ gehen und Active Perl herunterladen und installieren. Dabei muss die Umgebungsvariable für Perl initialisiert werden!
Anschließend evtl. noch folgende Module nachinstallieren (sofern noch nicht vorhanden):
-DBD::mysql (f. Verbindung zur MySQL-Datenbank)
-MIME-Lite (f. d. E-Mail-Versand)
Dazu in der Eingabeaufforderung (cmd) folgendes eingeben:
ppm
Anschließend öffnet sich der Perl Package Manager. Dieser macht dann eine Synchronisation zur Datenbank. Einfach einmal abwarten bis diese fertig ist. Anschließend kann im Suchfenster z.B. dbd-mysql eingegeben werden. Dann kann mittels Rechtsklick auf das entsprechende Paket (DBD-MySQL/MIME-Lite) dieses installiert werden. Wenn es nur für die Installation markiert wird, dann gibt es einen Button "Run marked actions".
Weiterführende Links:
http://forum.mysqldumper.de/dbi-mysql-treiber-wurde-nicht-gefunden-t2513.html
http://dev.mysql.com/downloads/dbi.html
http://cpansearch.perl.org/src/CAPTTOFU/DBD-mysql-4.011/INSTALL.html
Dann kommt der schwierigste Prozess - die Konfiguration von der httpd.conf - Datei. Diese befindet sich im Ordner:
C:\Program Files\Apache Software Foundation\Apache2.2\conf
CGI-Skripts freigeben:
Nach "<Directory />" suchen (ungefähr in der Zeile 180):
Dort muss +ExecCGI oder ExecCGI hinzugefügt werden. So siehts dann aus
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# features.
#
<Directory />
Options FollowSymLinks +ExecCGI
AllowOverride None
Order deny,allow
Deny from all
</Directory>
Geändertes Webroot-Verzeichnis:
Da ich nicht das Standardverzeichnis benutze, hab ich noch +ExecCGI hier hinzugefügt:
#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "C:/deinPfadzurWebsite">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options +ExecCGI
...
</Directory>
ScriptAlias anpassen:
Der ScriptAlias ist gibt ein Mapping an, sodass wenn "cgi-bin" als Verzeichnis in der Domain angegeben wird, die Skripte aus einen allgemeinen cgi-bin - Verzeichnis gelesen werden. Diese befinden sich in der Regel nicht dort, sondern ganz woanders. Da ich ein anderes cgi-bin Verzeichnis verwende, habe ich den Apache-Standard-Pfad auf "C:/cgi-bin/" geändert.
# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# documents in the target directory are treated as applications and
# run by the server when requested rather than as documents sent to the
# client. The same rules about trailing "/" apply to ScriptAlias
# directives as to Alias.
#
ScriptAlias /cgi-bin/ "C:/cgi-bin/"
Geändertes cgi-bin - Verzeichnis:
Ich habe dabei ein eigenes cgi-bin - Verzeichnis außerhalb bzw. über der Webserver-Root (standardmäßig lautet dieser "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs" - ich habe den Pfad nicht verwendet) erstellt. Das dient zu mehr Sicherheit, da der Zugriff über den Webserver nicht mehr gegeben ist. Das vorgesehene Verzeichnis "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin" wird dann nicht mehr verwendet. Stattdessen verwende ich z.B. das Verzeichnis "C:/cgi-bin". Hier wird wieder +ExecCGI hinzugefügt. Dann sieht es so bei mir aus:
#
# "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "C:/cgi-bin">
AllowOverride None
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
Darauf muss der AddHandler konfiguriert werden.
Standardmäßig hat er die Form #AddHandler cgi-script cgi
und ist somit auskommentiert. Dieser wird aber wieder aktiviert und der Eintrag " pl" hinzugefügt. Er hat dann die Form AddHandler cgi-script cgi pl. So sollt es dann aussehen:
<IfModule mime_module>
#
# TypesConfig points to the file containing the list of mappings from
# filename extension to MIME-type.
#
TypesConfig conf/mime.types
#
# AddType allows you to add to or override the MIME configuration
# file specified in TypesConfig for specific file types.
#
#AddType application/x-gzip .tgz
#
# AddEncoding allows you to have certain browsers uncompress
# information on the fly. Note: Not all browsers support this.
#
#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz
#
# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
#
# AddHandler allows you to map certain file extensions to "handlers":
# actions unrelated to filetype. These can be either built into the server
# or added with the Action directive (see below)
#
# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add "ExecCGI" to the "Options" directive.)
#
AddHandler cgi-script cgi pl
# For type maps (negotiated resources):
#AddHandler type-map var
Sind diese Schritte erledigt, ist Apache neu zu starten.
Weiterführende Links:
http://www.ricocheting.com/server/cgi.html
http://httpd.apache.org/docs/1.3/howto/cgi.html
Perl testen:
Nun gehts zu den Perl-Skripts. Die Perl-Skripts von "mysqldumper\msd_cron" habe ich dann mal in das "C:\cgi-bin"-Verzeichnis kopiert. Dann hab ich ein eigenes Test-Script erstellt. Der Name davon lautet "hello.pl". Um weiter fortfahren zu können, muss der Pfad zur Perl.exe bekannt sein. Der Inhalt des Scripts lautet:
#!C:/Perl/bin/perl.exe
print "Content-type:text/html\n\n";
print "hello world";
Der Beispielpfad hier lautet "C:/Perl/bin/perl.exe" aber es kann auch ein anderer sein. Wenn zwischen Linux und Windows gewechselt werden will, dann empfiehlt sich die Struktur "usr\bin\perl".
Noch ein paar Tests:
Eingabeaufforderung: perl -v eingeben (hier sollte keine Fehler kommen sondern Information über Perl)
Mittels Eingabeaufforderung zu der gespeicherten hello.pl navigieren und hello.pl eingeben.
Hat das alles geklappt, kann weiter gemacht werden. Wenn nicht dann ist bei Perl etwas nicht in Ordnung. Anschließend kann der Aufruf über die Website erfolgen: www.deineWebsite.com/cgi-bin/hello.pl
Da solltest du nicht den Inhalt der Perl-Datei sehen, sondern nur "Hello World". Sollten die Test mit der Eingabeaufforderung funktionieren aber der Aufruf über den Browser nicht, dann ist mit der Apache-Konfiguration was nicht in Ordnung.
Weiterführende Links:
http://perl.about.com/od/gettingstartedwithperl/a/testperl.htm
Konfiguration von Mysqldumper:
Unter Konfiguration->Datenbanken von Mysqldumper die gewünschte Datenbanktabelle aussuchen.
Unter Konfiguration->Cronscripts sollte Dateiendung des Scripts ".pl" ausgewählt sein. Im Feld Pfad der Perlskripte: habe ich "/cgi-bin/" eingetragen.
Weiterführende Links:
http://rausgebloggt.de/mysql-datenbanken-automatisch-sichern-mit-mysqldumper-und-all-inkl-als-hoster.htm
http://forum.mysqldumper.de/features-perl-cronscript-einstellungen-von-konfiguration-cron-t502.html
Testen von Mysqldumper:
Anschließend auf Backup->Backup Perl gehen. Da den Button Perl testen ausprobieren. Sollte es klappen dann auf den Button Perl-Module testen gehen. Klappt das auch wieder ohne Fehler den Button Perl-Cronscript ausführen drücken. Achtung: Ein Backup wird erstellt! Dies kann unter Verwaltung und ausgewählte Dateien löschen wieder entfernt werden (auf das Datum achten). vBulletin User sollten sich über den Fehler
Quote:
Error: Table vb3_cpsession seems to be damaged. Couldn't read last update time. Check table definition!
Error: Table vb3_session seems to be damaged. Couldn't read last update time. Check table definition!
keine Gedanken machen. Siehe http://www.vbulletin-germany.com/forum/showthread.php?t=38542
Dann ist es fast geschafft.
Batch-Datei erstellen:
In einem gewünschten Verzeichnis die Datei "Backup.bat" erstellen. Inhalt:
perl C:/cgi-bin/crondump.pl config=mysqldumper.conf.php
Dieser kann unter Backup->Backup-Perl herausgefunden werden. Der Eintrag nennt sich Aufruf in der Shell oder für die Crontab:. Da die Perl-Datei lokal ausgeführt wird, muss dieser zum Dateiverzeichnis passen. Der Eintrag unter Aufruf in der Shell oder für die Crontab: somit angepasst werden. Datei dann speichern.
In den Taskplaner eintragen:
Unter Windows 2003 Server findet man diesen in
Start->All Programs->Accessories->System Tools->Scheduled Task
Mit Add scheduled Task kann dann ein Task hinzugefügt werden.
Next->Browse[C:\Windows\System32]->cmd eingeben->Open
Unter Type a name for this task den Pfad zur Batchdatei angeben (z.B. C:\Backup\backup.bat). Anschließend Zeiteinstellungen und Passwort eingeben und man ist endlich fertig.
Nun können die Backups zu beliebigen Zeitpunkten durchgeführt werden.