Wenn man Real-Time-Statistiken von Half-Life-Servern haben will, so nimmt man am besten “ HLStats ”. Ich zitiere mal aus der Dokumentation :
HLstats besteht aus einem Perl Script (die HLstats logging Daemon) und aus einem Set von PHP Scripts (welche die gewonnenen Daten als Webseite anzeigen). HLstats bietet Statistiken für den einzelnen Spieler sowie auch für den ganzen Clan.
Meine Ausgangslage
- “Blanker” Server (Keinerlei MySQL oder Apache2)
- Debian 3.1 Sarge Stable
- HLStats 1.34
Folgende Packete werden zunächst in der Konsole installiert:
|
|
Nachdem das alles installiert ist, muss man Perl konfigurieren:
|
|
Nun werden ein Haufen Fragen gestellt, eigentlich ist aber davon nur die Frage nach den Downloadservern am Ende wirklich wichtig. Am Ende öffnet sich ein CPAN-Prompt in dem man nun noch die Module initialisieren sollte:
|
|
Perl ist nun soweit fertig.
Nun brauchen wir zunächst HLStats. Ich installiere den Perl-Server von HLStats in /home/hlstats/, weshalb ich nun dort zunächst die Files entpacke(Ich sauge immer von Switch, die URL ist natürlich gegen andere Mirrors austauschbar ;)):
|
|
HLStats loggt über einen Perl-Server, der normalerweise auf Port 27500 “lauscht”, in eine normale MySQL-Datenbank, was die nebenstehende Server-Struktur ermöglicht. Viele einzelne Gameserver können so auf einen einzigen MySQL-Server(dieser wäre über eine Datenbank-Replikation auch wieder einfach zu sichern) loggen, wodurch die Statistiken dann einfach über eine Seite abrufbar sind. Das Frontend ist wiederum in PHP mit einzelnen Templates geschrieben, was eine Anpassung nicht besonders schwer macht.
Nun muss HLStats noch in die MySQL-Datenbank eingefügt werden:
|
|
Dies kann nur im Verzeichnis des entpackten Archives ausgeführt werden.
XXYYXX muss hierbei durch das Spiel, welches man benötigt ersetzt werden, also z.b.:
|
|
Weitere Support-Files bekommen sie hier. (Hinweis: HLstats unterstuetzt nur Spiele mit dem Half-Life Log Format.)
Nachdem die Spieldaten und die Haupt-SQL-Files in der Datenbank gelandet sind, müssen wir nun noch die User anlegen, die auf diese Datenbank zugreifen dürfen
|
|
|
|
Das erste HLStats ist der Databasename und das zweite HLStats ist der Benutzername der erstellt wird. (Hinweis: ‘somepassword’ sollte natürlich durch ein anderes ersetzt werden, also z.b. ‘Mju5mkfOP5QCVlgY’)
Zur Absicherung des RooT-Users müssen wir dessen Passwort ändern(wird von MySQL übrigends als eine der ersten Aktionen empfohlen ). In der MySQL-Console muss daher folgendes eingegeben werden:
|
|
(Hinweis: ‘someotherpassword’ sollte natürlich auch hier durch ein anderes ersetzt werden, also z.b. ‘5QCVlgYMju5mkfOP’)
Der folgende Abschnitt wurde in der Dokumentation als Kompatibilitäts-Sache angegeben, damit Perl korrekt mit dem Frontend arbeitet:
|
|
Nun werden sie nach dem oben vergebenen root-Passwort gefragt. Nach Eingabe dieses Passworts fügen sie die folgende Zeile ein. Hierbei muss ‘/hlstats/hlstats.php’ durch das Verzeichnis (relativ zum Webroot) ersetzt werden, in dem sich “hlstats.php” befindet. Wenn HLStats sich im ‘/stats’-Ordner befindet, muss man ‘/stats/hlstats/hlstats.php’ verwenden. Wenn sie hlstats über “ http://example.com/hlstats/hlstats.php" erreichen, dann ist die folgende Angabe richtig.
|
|
Nun ist die Datenbankseitige Installation soweit fertig. Wenden wir uns der Installation des Webfrontends zu. Ich gehe davon aus, dass auf dem Server nichts anderes ausser HLStats und die Gameserver laufen, daher ist bei mir das Webserver-Root-Verzeichnis (/var/www/) gleich dem hlstatsverzeichnis:
|
|
Nun gibts natürlich wie immer ein kleines Rechte-Problem, welches sind einfach lösen lässt:
|
|
PASSWORD muss natürlich wieder ersetzt werden! nun noch ein:
|
|
und die Verzeichnisse gehören dem Nutzer.
Der Webserver leitet momentan beim Aufruf der IP noch direkt auf “apache2-default” weiter, was wir natürlich nicht wollen. Also müssen wir die Konfigurationsdatei ändern:
|
|
Suche: RedirectMatch ^/$ /apache2-default/
Ersetze: # RedirectMatch ^/$ /apache2-default/
Damit ist nun sichergestellt, dass bei Aufruf der IP direkt die Dateien aus /var/www/ aufgerufen werden. Wenn man dies aber nun tut, dann stellt man fest, dass nur das Verzeichnis aufgelistet wird. Problem ist, dass Apache noch nicht weiss, dass er nun die hlstats.php aufrufen soll. Nun gibt es zwei Wege:
- Umleitung via HTML/PHP-Datei
- Umleitung via .htaccess
Ich habe mich für den ersten Weg entschieden und eine index.php erstellt, die folgenden Inhalt hat:
|
|
Funktioniert perfekt.
Nun muss man die Datenbankverbindungen einrichten. Dazu editiert man die beiden Dateien, die damit überhaupt zu tun haben:
|
|
- Eintragen von Datenbankdaten
- Eventuelle weitere Änderungen anhand der Kommentare durchführen
|
|
- Eintragen von Datenbankdaten
- INCLUDE_PATH anpassen, in diesem Fall /home/hlstats/hlstatsinc
- Eventuelle weitere Änderungen anhand der Kommentare durchführen
Wenn dies alles erledigt ist, dann steht dem ersten Start des Servers nix mehr im Wege:
|
|
Nun sollte der Perl-Server gestartet sein, mit “
Sofern sie nix an der Port-Konfiguration geändert haben, sollte nun auf Port 27500 ein HLStats-Server lauschen.
PHP hat zunächst keine Ahnung davon, dass MySQL installiert ist, was wir nun schnell ändern:
|
|
Finde: ;extension=mysql.so
Ersetze: extension=mysql.so
Anschließend ein /etc/init.d/apache2 restart
und PHP weiss, dass MySQL installiert ist.
Nun rufen wir mal das Webfrontend auf. Nach Eingabe der ServerIP / einer darauf zeigenden Domain sollte sich in etwa das nebenstehende Bild ergeben. (Ich habe schon ein paar Server konfiguriert und schon die Templates ein wenig geändert.) Nun klicken wir in der Mitte unten auf Admin und loggen uns das erste mal ein. Die Daten hierzu sind:
- User: admin
- Passwort: 123456
Sobald sie sich eingeloggt haben, gehen sie auf Admin Users und fügen sie einen neuen Admin hinzu. Löschen sie nun den User “admin” (Erst wenn sie den neuen Admin hinzugefügt haben!) und loggen sie sich mit ihrem neuen Admin ein.
Nun können sie nach belieben konfigurieren, neue Server fügt man unter Game Settings unter dem jeweiligen Spiel hinzu, was relativ intuitiv gemacht ist.
Auf den Gameservern muss man in der autoexec.cfg folgendes hinzufügen:
|
|
wobei 1.2.3.4 für ihre Serveradresse steht. Anschließend den Gameserver restarten und mal drauf zocken. Wenn die Stats angezeigt werden ist alles korrekt gelaufen.