Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
tutorial:server:automatischer_restart [2009/02/15 13:56] DeaD_EyE |
tutorial:server:automatischer_restart [2009/10/24 14:00] (aktuell) |
||
---|---|---|---|
Zeile 8: | Zeile 8: | ||
* quit | * quit | ||
* exit | * exit | ||
- | ===== Gameserver mit Plugins neustarten (GameserverProvider) ===== | + | ===== Plugins ===== |
- | FIXME | + | Hat der Admin einen gemieteten Gameserver, dann hat er keinen Shell-Zugriff. Der Server lässt sich entweder nur durch den Anbieter automatisch neustarten oder durch ein Plugin. Für HL2-Server gibt es ein paar [[:addons|Plugins]], welche Befehle zu bestimmten Zeitpunkten ausführen. Es wird durch den Befehl ''_restart'' der Server einfach neugestartet. Je nach Anbieter startet der Server bei Verwendung des Befehls neu. Der Admin sollte vorher mit dem Anbieter klären ob das funktioniert oder sollte es selber zuvor testen. Startet der Server nicht mehr neu, muss so oder so der Support kontaktiert werden. |
- | Inhalt folgt... | + | |
+ | ==== Server Autorestart [SM] ==== | ||
+ | Das [[:sourcemod:plugins|SourceMod-Plugin]] [[http://forums.alliedmods.net/showthread.php?t=87291|Server Autorestart]] | ||
+ | ermöglicht es, den Server auf einfachste Weise zu einem festgelegten Zeitpunkt neu zu starten. Der Installations-Aufwand ist minimal, wenn [[sourcemod:einleitung]] bereits auf dem Server installiert ist. | ||
+ | |||
+ | === Installation === | ||
+ | Das Plugin kann mit "Get Plugin" heruntergeladen werden. Die heruntergeladene Datei ''restart.smx'' wird muss auf den Server nach ''./$mod/addons/sourcemod/plugins/'' kopiert werden. | ||
+ | === Konfiguration === | ||
+ | Die Konfiguration ist sehr einfach. Die [[:cvar|Konsolen-Variable]] ''sm_autorestart 1'' aktiviert das Plugin. Standardmäßig ist das Plugin aktiviert. Mit der [[:cvar|Konsolen-Variable]] ''sm_autorestart_time'' wird der Zeitpunkt für den automatischen Neustart gesetzt. Das Format ist ''HHmm''((24-Stunden-Format)). Standard ist 0500((5 Uhr morgens)). Soll der Server z.B. um 23:23 Uhr neugestartet werden, muss die [[:cvar|Konsolen-Variable]] ''sm_autorestart_time'' auf 2323 gesetzt werden. Dies kann zur ''server.cfg'' oder zur ''autoexec.cfg'' hinzugefügt werden. | ||
+ | |||
+ | ==== Cron Jobs [ES] ==== | ||
+ | Das Event-Script [[http://addons.eventscripts.com/addons/view/cron_jobs|Cron Jobs]] benötigt ''Mattie's Eventscripts v2.0.0.247'' oder höher. ''Cron Jobs'' führt [[:cmds]] zu bestimmten Zeitpunkten aus. | ||
+ | |||
+ | === Installation === | ||
+ | Nach dem Entpacken des Archives muss die Datei ''cron_jobs.txt'' bearbeitet werden. Hier ein Beispiel: | ||
+ | <code>"cron_jobs" | ||
+ | { | ||
+ | "joblist" | ||
+ | { | ||
+ | "04:20" "exec warn1.cfg" | ||
+ | "04:24" "exec warn2.cfg" | ||
+ | "04:25" "_restart" | ||
+ | } | ||
+ | "jobformats" | ||
+ | { | ||
+ | // Here you can change the possible time formats | ||
+ | "%H:%M" "1" | ||
+ | "%H:%M:%S" "1" | ||
+ | "%y-%m-%d" "1" | ||
+ | "%y-%m-%d_%H:%M" "1" | ||
+ | "%y-%m-%d_%H:%M:%S" "1" | ||
+ | "%A_%H:%M" "1" | ||
+ | "%A_%H:%M:%S" "1" | ||
+ | "%B_%H:%M" "1" | ||
+ | "%B_%H:%M:%S" "1" | ||
+ | } | ||
+ | }</code> | ||
+ | Bei diesem Beispiel wird einmal die Datei ''warn1.cfg'' um 4:20 Uhr ausgeführt und um 4:24 Uhr wird die Datei ''warn2.cfg'' ausgeführt. Dies kann man nutzen, um Spieler vorher zu warnen. So könnte die Datei ''warn1.cfg'', die nach ./$mod/cfg müsste, aussehen: | ||
+ | <code>say "Server-Neustart in 5 Minuten! | ||
+ | say "Server-Neustart in 5 Minuten! | ||
+ | say "Server-Neustart in 5 Minuten! | ||
+ | say "Server-Neustart in 5 Minuten! | ||
+ | say "Server-Neustart in 5 Minuten! | ||
+ | say "Server-Neustart in 5 Minuten!</code> | ||
+ | Eine Warnung ließe sich mit einem Eventscript realisieren.\\ | ||
+ | Der Server wird dann um 4:25 Uhr neugestartet.\\ | ||
+ | Das Verzeichnis ''addons'' muss in das Verzeichnis der [[:mods|Modifikation]] hoch geladen werden. Nach erfolgtem Updload muss zur ''autoexec.cfg'' noch folgende Zeile hinzugefügt werden: <code>es_load cron_jobs</code> | ||
+ | |||
+ | ==== [CS:S] Source Cronjobs [SM] ==== | ||
+ | Das [[:sourcemod:plugins|SourceMod-Plugin]] [[http://forums.alliedmods.net/showthread.php?t=86508|[CS:S] Source Cronjobs (SCJ)]] führt [[:cmd]] zu bestimmten zuvor festgelegten Zeitpunkten aus. Desweiteren unterstützt es Aufgaben zu nach x-Runden und Aufgaben zu regelmäßigen Zeitabständen. | ||
+ | |||
+ | === Installation === | ||
+ | * SourceMod muss installiert sein. Im Artikel [[:sourcemod:installation]] wird beschrieben, wie man [[:sourcemod:einleitung]] installiert. | ||
+ | Die Datei ''sourcecronjobs.txt'' muss selber erstellt oder nach dem Download bearbeitet werden. Hier ist ein Beispiel: | ||
+ | <code>"Source Cronjobs" | ||
+ | { | ||
+ | "1" | ||
+ | { | ||
+ | "type" "time" | ||
+ | "value" "04:15" | ||
+ | "task" "exec warn1.cfg" | ||
+ | } | ||
+ | "2" | ||
+ | { | ||
+ | "type" "time" | ||
+ | "value" "04:20" | ||
+ | "task" "_restart" | ||
+ | } | ||
+ | }</code> | ||
+ | Der Server würde in diesem Fall immer um genau 4:20 Uhr neustarten.\\ Wie im vorherigem Beispiel von des Scripts Cron Jobs kann hier die Datei ''warn1.cfg'' erstellt werden, um die Spieler vorher zu warnen.\\ | ||
+ | Die Dateien des Plugins müssen in unterschiedliche Verzeichnisse kopiert werden: | ||
+ | ^Datei ^Verzeichnis ^ | ||
+ | |sourcecronjobs.sms |addons\sourcemod\plugins | | ||
+ | |sourcecronjobs.txt |addons\sourcemod\config | | ||
+ | |sourcecronjobs.cfg |cfg\sourcemod | | ||
+ | Nach einem Mapchange oder durch ''sm plugins refresh'' wird das Plugin geladen. Ein Serverneustart ist nicht unbedingt nötig. | ||
+ | |||
+ | ==== Server Crontab [SM] ==== | ||
+ | Das [[:sourcemod:plugins|SourceMod-Plugin]] [[http://forums.alliedmods.net/showthread.php?p=523298|Server Crontab]] führt Befehle zu bestimmten zuvor festgelegten Zeiträumen aus. Startet der Server besonders schnell, wird er solange neugestartet, bis eine Minute verstrichen ist. | ||
+ | |||
+ | === Installation === | ||
+ | * SourceMod muss installiert sein. Im Artikel [[:sourcemod:installation]] wird beschrieben, wie man [[:sourcemod:einleitung]] installiert. | ||
+ | Die Datei ''sc_jobs.cfg'' muss nach dem Download bearbeitet werden. Hier ist ein Beispiel: | ||
+ | <code>// | ||
+ | // Basic Server Crontab configuration file | ||
+ | // | ||
+ | // # = Weekday Start. Format is 0 = Sunday to 6 = Saturday | ||
+ | // | ||
+ | // # # = Weekday End. Format is 0 = Sunday to 6 = Saturday | ||
+ | // | ||
+ | // # # # = Start hour of the day. The hour is in 24h format (0-23) | ||
+ | // | ||
+ | // # # # # = End hour of the day. The hour is in 24h format (0-23) | ||
+ | // | ||
+ | // # # # # # = Start minute of the hour (0-59) | ||
+ | // | ||
+ | // # # # # # # = End minute of the hour (0-59) | ||
+ | // | ||
+ | // Use ? to ignore the current weekday/hour/minute | ||
+ | // | ||
+ | // | ||
+ | |||
+ | // Server um 4 Uhr Morgens neustarten | ||
+ | sc_addjob ? ? 4 4 0 1 "quit" | ||
+ | </code> | ||
+ | |||
+ | Die Dateien des Plugins müssen in unterschiedliche Verzeichnisse kopiert werden: | ||
+ | ^Datei ^Verzeichnis ^ | ||
+ | |sc.smx |addons\sourcemod\plugins | | ||
+ | |sc_module.smx |addons\sourcemod\plugins | | ||
+ | |sc_jobs.cfg |cfg\sourcemod | | ||
+ | Nach einem Mapchange oder durch ''sm plugins refresh'' wird das Plugin geladen. Ein Serverneustart ist nicht unbedingt nötig. | ||
+ | |||
+ | ===== Mit Cronjobs neustarten (Root-Server) ===== | ||
+ | Mit [[wpde>Crontab|Cronjobs]] lassen sich bestimmte Aufgaben zu bestimmten Zeitpunkten erledigen. Für diese Art des automatischen Neustarts braucht man einen Root-Server. Die meisten haben sich schon eigene Startscripts für ihre Gameserver geschrieben. Wichtig ist es, dass das Startscript den Server beenden und ihn starten kann. | ||
- | ===== Gameserver mit Cronjobs neustarten (Root-Server) ===== | ||
- | Mit [[wpde>Crontab|Cronjobs]] lassen sich bestimmte Aufgaben zu bestimmten Zeitpunkten erledigen. Für diese Art des automatischen Neustarts braucht man einen Root-Server. Die meisten haben sich schon eigene Startscripts für ihre Gameserver geschrieben. Wichtig ist es, dass das Startscript den Server beenden und ihn neustarten kann. | ||
==== Vorgehensweise ==== | ==== Vorgehensweise ==== | ||
Zuerst muss man sich als User in die Shell einloggen. In manchen Fällen starten Admins ihre Server über ein Shell-Script mit dem User ''root'' neu. Diese Scripts starten dann mittels ''sudo'' die Server mit einem unterprivilegiertem User neu. Je nach Situation muss man sich dann entweder als normaler User oder als ''root'' einloggen. Danach wechselt man in das Verzeichnis, in dem sich auch das Startscript befindet. In diesem Beispiel wird der Server um 4 Uhr Morgens neugestartet. Das Beispielstartscript befindet sich in ''/home/gameserver/script/'' und heißt ''run.sh''. | Zuerst muss man sich als User in die Shell einloggen. In manchen Fällen starten Admins ihre Server über ein Shell-Script mit dem User ''root'' neu. Diese Scripts starten dann mittels ''sudo'' die Server mit einem unterprivilegiertem User neu. Je nach Situation muss man sich dann entweder als normaler User oder als ''root'' einloggen. Danach wechselt man in das Verzeichnis, in dem sich auch das Startscript befindet. In diesem Beispiel wird der Server um 4 Uhr Morgens neugestartet. Das Beispielstartscript befindet sich in ''/home/gameserver/script/'' und heißt ''run.sh''. | ||
Zeile 21: | Zeile 133: | ||
<code>0 4 * * * /home/gameserver/stop_gungame.sh >/dev/null && /home/gameserver/start_gungame.sh >/dev/null </code> | <code>0 4 * * * /home/gameserver/stop_gungame.sh >/dev/null && /home/gameserver/start_gungame.sh >/dev/null </code> | ||
<code>0 4 * * * /home/gameserver/gungame.sh stop >/dev/null && /home/gameserver/gungame.sh start >/dev/null </code> | <code>0 4 * * * /home/gameserver/gungame.sh stop >/dev/null && /home/gameserver/gungame.sh start >/dev/null </code> | ||
+ | |||
+ | ===== Automatisch mit Rcon und Cron-Job neustarten (Root-Server) ===== | ||
+ | Es gibt ein Perl-Script, welches Befehle mittels Rcon an den Server senden kann. Dabei ist es egal auf welchem Root-Server das Script ausgeführt wird, da es über den TCP Port des Servers eine Rcon-Verbindung aufbaut. | ||
+ | - Perl muss installiert sein. Die meisten Distributionen haben Perl bereits mit dabei. | ||
+ | - Die Perl Library {{:tutorial:server:rcon-hl2-0.02.tar.gz|Rcon::HL2}} muss heruntergeladen werden. Mittels ''wget'' kann man {{:tutorial:server:rcon-hl2-0.02.tar.gz|Rcon::HL2}} direkt herunterladen: <code>wget http://sourceserver.info/wiki/_media/tutorial/server/rcon-hl2-0.02.tar.gz</code> | ||
+ | - Es muss die Perl Library Rcon::HL2 installiert werden. Das Archiv muss mittels tar entpackt werden. <code>tar -xzf rcon-hl2-0.02.tar.gz</code> | ||
+ | - Die Perl Library muss jetzt installiert werden: <code>cd Rcon-HL2-0.02 | ||
+ | perl Makefile.PL | ||
+ | make | ||
+ | make test | ||
+ | make install (mit Root-Rechten)</code> Danach sollte die Library installiert sein. Ein Perlscript kann diese Library jetzt aufrufen. | ||
+ | - Mittels eines Perl-Scriptes wird der [[:cmd|Befehl]] ''_restart'' auf einem Server ausgeführt: <code>#!/usr/bin/perl | ||
+ | use Rcon::HL2; | ||
+ | my $rcon = Rcon::HL2->new( | ||
+ | hostname => "IP-Adresse oder DNS vom Server", | ||
+ | password => "Rcon-Passwort", | ||
+ | port => "Server-Port", | ||
+ | ); | ||
+ | |||
+ | $rcon->run("_restart");</code> Durch den Befehl ''chmod u+x gungame_restart.pl'' wird das Script ausführbar gemacht und muss nicht mit ''perl scriptname.pl'' gestartet werden. | ||
+ | - Das Script kann mittels ''cron'' zu bestimmten Zeiten ausgeführt werden. <code>0 4 * * * /home/gameserver/scripts/gungame_restart.pl >/dev/null</code> Bei diesem Beispiel würde der Server um 4 Uhr Morgens neugestartet werden. |