Veröffentlicht von schneseb am 6. Mai 2010 - 23:42
Die cron.php übernimmt die Ausführung zentraler Wartungsarbeiten und sollte regelmäßig ausgeführt werden. Dieser Artikel zeigt, wie Sie mit Plesk einen Cronjob anlegen, der alle 15 Minuten die cron.php aktualisiert, unabhängig davon ob jemand die Seite besucht oder nicht.
Gerade Anfänger haben oft das Problem, dass sie nicht wissen wie man über die typische Administrationsfläche Plesk, die auf vielen virtuellen Servern läuft, einen Cronjob anlegen können, der genau dieses vornimmt. Ich zeige Ihnen hier Schritt für Schritt wie Sie dieses vornehmen können. Dabei gehe ich davon aus, dass Plesk installiert ist und ein Linux auf dem Server als Betriebssystem läuft.
Folgen Sie einfach den folgenden Schritten.
Anlage der Datei
Starten wir mit der Datei selber, diese benötigt ein wenig Code.
Wir wollen uns an der Stelle nur soviel merken, dass Lynx ein Textbrowser ist, der sehr wahrscheinlich auf dem virtuellen Server installiert ist. Wir rufen also einfach diese cron.php mit Lynx auf, und schreiben die Ausgabe gleich ins Nirvana (das macht /dev/null).
Dann speichern wir uns die Datei unter einem beliebigen Namen, wie bspw. cron_job.sh. Dabei achten Sie darauf, dass unter Windows auch wirklich .sh abgespeichert wird und nicht .sh.txt. Das erreichen Sie in der Regel durch die Benutzung von Anführungszeichen im Texteditor Ihrer Wahl "cron_job.sh".
Damit haben Sie bereits alles an Dateivorarbeit erledigt was wir hier benötigen.
Datei auf den Server überspielen
Die meisten werden das Kopieren kennen, da Sie sehr wahrscheinlich auch schon die Drupalversion auf den Server kopiert haben. Nichts anderes wird hier auch gemacht.
In dem root Verzeichnis der Drupalinstallation gibt es ein Verzeichnis scripts. Dort könnte man das Script ablegen, allerdings muss man das dann im Kopf behalten, wenn man ein Update von Drupal macht und die Verzeichnisse löscht. Prinzipiell kann jedes Verzeichnis benutzt werden auf das der Benutzer unter dem der aufrufende Prozess läuft, auch Zugriffsrechte besitzt.
Sehr wahrscheinlich sieht ihr Verzeichnis dann so ähnlich aus.
/var/www/vhosts/<domain-name>/httpdocs/scripts. Kopieren Sie in das Verzeichnis dann die oben erstellt Datei hinein. Jetzt fehlen nur noch die passenden Rechte, wobei hier ein 755 ausreichend ist. Wenn Sie bspw. SCP unter Windows nutzen können Sie über einen Rechtsklick und Properties das folgende Fenster aufrufen.
Aber auch praktisch jeder Dateimanager wie Nautilus kann die Verbindung zum Server aufbauen.
Plesk aufrufen
Die genaue URL zum Aufrufen von Plesk erhalten Sie von Ihrem Provider. Bei Auslieferung läuft Plesk oft auf dem Port 8443. Bei mir sieht das dann wie folgt aus
Nach dem Einloggen sehen Sie dann die Oberfläche von Plesk. Halten Sie dann Ausschau nach den Domains und anzeigen
Danach wählen Sie Ihre entsprechende Domain aus, ich habe hier meine eigene verwendet. Ein Klick genügt…
… und Sie finden auf der rechten unteren Hälfte der Seite nun geplante Aufgaben welches Sie anklicken.
Das darauf folgende Menü mit dem Benutzer werden Sie in der Regel überspringen können, wenn Sie nur einen Systembenutzer haben. Nachdem Sie diesen angeklickt haben, finden Sie sich auf der Übersichtsseite aller geplanter Aufgaben wieder.
Über das neue Aufgabe planen am oberen Rand, können Sie eine neue Aufgabe erstellen. Klicken Sie den Button und Sie finden folgende Abbildung vor sich.
Dabei kann man nun alle Felder bis auf das erste Feld (Minute) kann mit “*” ausgefüllen. In dem ersten können wir eine Schrittweite angeben, die Info über Cron bei Wikipedia hilft, um zum folgenden Bild zu kommen (nach abspeichern):
Die letzte Zeile enthält nun den Pfad zu der Datei, die oben erstellt und auf den Server kopiert worden ist. /var/www/vhosts/<domain-name>/httpdocs/scripts/cron_job.sh wäre die oben vorgestellte Variante. Abspeichern nicht vergessen - fertig.
Ausführung von Cron überprüfen
Natürlich will und sollte man auch überprüfen ob der Cronjob richtig ausgeführt wird. Dazu kann man unter der URL http://www.<domain-name>.de/admin/reports/status prüfen, wann Cron zuletzt ausgeführt worden ist.
Kommentare
Du kannst das Anlegen des Skripts auch umgehen Cron direkt mit einem Befehl starten:
curl --silent --compressed http:///cron.php
Grüße,
Holger
Hi,
die Zeile "lynx -dump http://www.der-domain-name.de/cron.php" kann direkt als Befehl für den Cronjob im Plesk eintragen werden, ohne die sh-Datei anzulegen. Oder spricht irgendwas dagegen?
LG
thomas
2 Mai 2010
1 Jahr 33 Wochen
Hallo Thomas,
das habe ich noch gar nicht ausprobiert, aber wenn es aber funktioniert ist das denke ich eine Alternative. Danke für den Hinweis!
@Holger: Auch hier danke!
Grüße
Sebastian
Hallo liebe Drupaler!
Ich habe erst seit kurzem Plesk und wollte mir eine Aufgabe einrichten. @ Thomas, Holger & Sebastian:
Ich verwendete als Befehl folgenden Code, der Cron wurde jedoch nicht ausgeführt:
curl --silent --compressed http://meinedomain.at/v2_0/cron.php
Ergänzend:
"v2_0" ist das Unterverzeichnis, in dem Drupal installiert ist.
Habe auch schon ein "www." vor "meinedomain" gesetzt - keine Wirkung...
Auch der Befehl von Thomas funktioniert nicht.
Wenn ich manuell auf "www.meinedomain.at/v2_0/cron.php klicke wird er ganz normal ausgeführt.
Woran kann das liegen?
Vielen Dank für eure Hilfe
Max
2 Mai 2010
1 Jahr 33 Wochen
Hallo Max,
hast du schon mal den Weg mit der Datei wie oben beschrieben versucht? Ich habe mit curl noch gar nichts gemacht.
Hast du für deine Codezeile sowohl manuell (also auf Konsole und gucken was rauskommt) und auch per Plesk probiert?
Gruß
Sebastian
Hallo Sebastian,
besten Dank.
Ich hab mich ein bisschen gespielt und hab's mit folgendem Befehl hinbekommen:
/usr/bin/wget -O - -q http://www.meinedomain.at/v2_0/cron.php
Liebe Grüße
Max
Lynx finde ich auch etwas übertrieben für diese kleine Aufgabe. Ich nutze selbst wie max über mir "wget", allerdings mit einem Zusatzparameter um den Aufruf nur einmalig zu probieren.
#!/bin/bash/usr/bin/wget -O - -q -t 1 http://www.example.com/cron.php
Entschuldigt, wenn ich so einen alten Thread wieder ausgrabe, aber mal eine rein praktische Frage:
Wenn ich über Plesk angeben kann, welche datei aufgerufen wird - wozu dann noch die .sh datei? o.O
ok, bin selber drauf gekommen, dass das die ausführende Datei ist - deswegen die Rechte auch 755 - damit andere dateien nicht von außen beschreibbar sind! Danke für den tollen Blog-Eintrag, hat mir weitergeholfen!
Wo gibt man denn die Befehle ein?
Kommentar hinzufügen