Webmin installieren

Wer keine Ahnung von Linux-Serveradministration hat, der muss sich Tools installieren, die einem die Arbeit abnehmen. Ein solches Tool ist Webmin. Halb Web-Anwendung, halb Admin. Über die Konsole kann man Webmin wie folgt installieren:

Datei herunterladen
wget http://heanet.dl.sourceforge.net/sourceforge/webadmin/webmin-1.441.tar.gz
Paket entpacken
tar xfz webmin-1.441.tar.gz
Ins entpackte Verzeichnis wechseln
cd webmin-1.441/
Installationsdatei aufrufen
./setup.sh

Während der Installation wird man nach einem Port (Standard 1000), Benutzernamen und Passwort gefragt. Hierbei sollte man aus Sicherheitsgründen darauf achten nicht den Standard-Port zu benutzen, einen ausgefallenen Benutzernamen zu wählen (nicht admin oder der gleichen) sowie ein sicheres Passwort zu benutzen.

Nach erfolgreicher Installation kann man Webmin im Web-Browser über die Adresse des Server gefolgt vom Port erreichen.
Beispiel: www.domain.de:1000

Programm auf einem Linux Server schließen

Um ein Programm auf einem Linux Server zu beenden muss man die Prozess-ID (PID) des Programms kennen. Mit dem Befehl ps -aux bekommt man auf der Konsole alle laufenden Programme (inkl. Ressourcenverbrauch, Laufzeit, PID und weiteren Infos) angezeigt. Mit kill PID lassen sich die einzelnen Anwendungen dann schließen.

Server Crash

Ich rätsle gerade darüber, wie man ein Programm (z.B. einen AssaultCube Gameserver) bei openSUSE 10.3 automatisch mit dem Bootvorgang starten kann. Normalerweise muss man ein Startskript in /etc/init.d anlegen und mit dem entsprechenden Runlevel verknüpfen. Eine Beispieldatei dafür ist /etc/init.d/skeleton, die man kopieren kann und dann mit den gewünschten Werten anpasst.

Alles Neuland für einen frischgeborenen Server-Administrator. Ich war deswegen sehr froh, dass ich auf einer schlauen Seite gelesen habe, dass ich die Startbefehle für den Gameserver nur die Datei /etc/init.d/boot.local schreiben brauch. Gesagt, getan. Das Ergebnis davon war, dass der Server nicht mehr ordnungsgemäßg hochgefahren ist und ich keine Verbindung (weder über SSH noch über SFTP) herstellen konnte.

Glücklicherweise bietet Strato seinen Server-Kunden kostenlose Backups an, die sich über der Strato-Webinterface aufsetzen lassen. Eine Stunde später lief mein Virtual Server wieder. Danke Strato!

Einrichten eines AssaultCube Servers

ch spiele ab und zu AssaultCube, ein nur 40 MB großer kostenloser Multiplayer-Ego-Shooter. Der pefekte Mix aus Counter-Strike und Unreal Tournament. In AssaultCube gibt es nur etwa 50 öffentliche Server, weshalb mich die Idee überkam, einen eigenen Gameserver auf meinem Virtual Server aufzusetzen.

Als absoluter Linux-Anfänger ist das natürlich nicht so einfach aber da mein neustes Hobby „Fluchen und Schimpfen“ ist, habe ich es trotzdem getan. Im Prinzip musste ich gar nicht mal viel fluchen und schimpfen (eigentlich gar nicht), denn ich hatte tatkräftige Unterstützung von Pascal und einen guten Tipp von KanslozeClown (echter Name unbekannt).

Um anderen zu helfen, die Ähnliches vorhaben, habe ich die gesamte AssaultCube Server Installation protokolliert. Meine Anleitung bezieht sich auf einen Virtual Server mit Betriebssystem openSUSE 10.3 und integriertem Plesk 8.4. Alle Angaben sind selbstverständlich ohne Gewähr.

Einrichten eines dedizierten Linux Server für AssaultCube (v1.0.2):

  1. Zuerst braucht man die aktuelle Linux Version von AssaultCube. Die enthaltenen Dateien aus dem Archiv (*.tar.bz2) werden auf dem Server in einen neuen Ordner entpackt. Beispielpfad: /usr/games/ac/
  2. Damit die Verbindung auf den Server klappt, müssen die Standardports für AssaultCube (UDP 28763 und UDP 28764) freigeschaltet werden. UDP Port 28763 ermöglicht die Verbindung mit den Clients (Spielern) und UDP Port 28764 stellt die Verbindung mit dem Masterserver (Serverbrowser) her, welcher die Liste der Spielserver aktualisiert.
  3. Die Firewall wird von Plesk verwaltet, also müssen dort die entsprechenden Einträge gemacht werden. Das geht wie folgt:
    • Bei Plesk 8.4 anmelden und auf System -> Module -> Firewall -> Firewall-Konfiguration bearbeiten -> Angepasste Regel hinzufügen
    • Name der Regel: AssaultCube Server UDP Eingang
      Richtung abgleichen: Eingang
      Aktion: Erlauben
      Ports: UDP 28763 (hinzufügen), UDP Port 28764 (hinzufügen)
      Quellen: (beliebiger Host)
    • -> Angepasste Regel hinzufügen
    • Name der Regel: AssaultCube Server UDP Ausgang
      Richtung abgleichen: Ausgang
      Aktion: Erlauben
      Ports: UDP 28763 (hinzufügen), UDP Port 28764 (hinzufügen)
      Quellen: (beliebiger Host)
    • Es erscheint die Meldung: „Warnung: Die Änderungen, die Sie an der Firewall-Konfiguration vorgenommen haben, wurden noch nicht auf den Server angewandt. Um dies zu tun, klicken Sie auf Aktivieren.“ Daraufhin wählt man die beiden neuen Firewall-Regeln (AssaultCube Server UDP Eingang & AssaultCube Server UDP Ausgang) mit einem Häkchen aus und drückt im auf das gelbe Symbol mit der Lampe (Aktivieren).
    • Aktivierungsstatus:
      Das Firewall-Modul ist bereit, Ihre Konfiguration zu aktivieren. Um die Konfiguration auf Ihr System anzuwenden, wurde ein Shell Script generiert. Wenn Sie eine Vorschau dieses Skripts wünschen, klicken Sie auf den Button Vorschau unten.
    • Informationen: Die aktuelle Konfiguration wurde erfolgreich aktiviert.
    • Um sicher zu gehen, dass die neuen Einstellungen übernommen wurden, kann man den Server über Plesk neustarten.
  4. Damit der Server später administrierbar ist, kann man ihm gleich das Serverpasswort über die Konfigurationsdatei serverpwd.cfg (zu finden unter /usr/games/ac/config/) mitteilen. Die Passwörter werden einfach unter die letzte Zeile der Datei geschrieben. Die Passwörter können zusätzlich noch mit einem Leerzeichen gefolgt von einer 0 (für ein vollwertiges Admin-Passwort) oder einer 1 (für das Verbinden bei vollem Server) versehen werden.

    Beispiel:

    // list of additional server admin passwords
    // WARNING: You can NOT use CubeScript in here!!
    // one password per line

    // vollwertiges Admin-Passwort
    abc123
    // …genau das gleiche wie oben:
    abc123 0
    // mit ‚abc‘ kann man sich selbst bei vollem Server verbinden
    abc 1

  5. Man könnte jetzt schon versuchen den Server als root-Benutzer über die SSH-Kommandozeile (mit PuTTY) zu starten. Allerdings könnte es dann passieren, dass der Server sich beim Schließen der Kommandozeile (PuTTY) ebenfalls schließt. Um das zu verhindern, muss auf dem Linux Server noch der Fenstermanager GNU Screen installiert werden. Dabei behilflich ist YaST (Yet another Setup Tool).
    • Man tippt als angemeldeter root in die Kommandozeile „yast“ ein und es erscheint ein blaues Kontrollzentrum.
    • In YaST navigiert man (mit TAB und Pfeiltasten) auf Software -> Software installieren oder löschen
    • Nach der anschließenden Initialisierung sucht man nach dem Suchbegriffscreen“ und findet hoffentlich screen – A program to allow multiple screens on a VT100/ANSI Terminal mit Version 4.0.2 (oder höher). Danach lässt man screen installieren.
  6. Nach der Installation verlässt man YaST und gibt in die Kommandozeile (Kurzform: shell) den Befehl „screen“ ein. Durch einen Hinweis auf die Lizenz weiß man, dass screen gestartet ist. Nun gibt man „irssi“ ein und es erscheint wieder eine blanke Konsole, undzwar der sog. screen.
  7. In diesem screen führt man nun den Startbefehl für den Server aus. Das geschieht mit folgenden Eingaben:
    • cd /usr/games/ac/
    • /bin_unix/linux_server -c12 -n“Servername“ -o“Willkommens-Text“ -Xconfig/serverpwd.cfg

  8. Für die Datei linux_server gibt es noch weitere Parameter. Diese sind in der AssaultCube Dokumentation unter dem Stichpunkt Server switches beschrieben.
  9. Wenn alles geklappt hat, erscheint folgende Meldung:

    masterserver reply:
    Registration successful. Due to caching it might take a few minutes to see the your server in the serverlist

    Die Meldung bestätigt, dass sich der Server mit dem Masterserver (über UDP Port 27864) verbinden konnte.

  10. Falls der Fehler -bash: bin_unix/linux_server: Keine Berechtigung aufritt, müssen erst die CHMOD-Rechte für die Datei linux_server auf 0744 gesetzt werden (geht ganz einfach mit WinSCP).
  11. Ist alles okay, dann verlässt (engl. detach) man screen mit der Tastenkombination Strg + A gefolgt von Strg + D (in der Konsole) oder dem Befehl „^a d„. Das kann übrigens auch getan werden, wenn die Rückmeldung AssaultCube fatal error: could not create server info socket kommt. Weitere Hilfen zur Benutzung von Screen befinden sich übrigens im Rockfloat Howto.
  12. Mit dem Befehl „ps -ax“ kann man jetzt überprüfen, ob der Server läuft. Es müssten u.A. folgende Einträge erscheinen:
    SCREEN
    ./linux_server […]
  13. Nun kann die Konsole beruhigt beendet werden (Befehl: exit).
  14. Im Spiel AssaultCube ist es jetzt möglich auf den Server zu gelangen. Entweder über die Serverliste oder mit dem Chatbefehl /connect IP Port oder (falls eine Domain auf dem Virtualserver eingerichtet ist) mit /connect domain.tld Port. Die Portangabe ist optional, da bei der Einrichtung die Standardports (27863 und 27864) verwendet wurden.
  15. Möchte man den Server administrieren, hilft folgender Chatbefehl: /setadmin 1 adminpasswort

Ein wichtiges Kritierium beim Hosten eines Servers ist der Trafficverbrauch. Für AssaultCube ist der Trafficverbrauch wie folgt angegeben:

For n players, the average incoming bandwidth will be n * 750 Bytes/second.
For n players, the average outgoing bandwidth will be (n – 1) * n * 750 Bytes/second.

Bei 10 Spielern hat der Server also einen durchschnittlichen Download von 7500 Bytes/Sekunde und einen Upload von ungefähr 67.500 Bytes/Sekunde. Das macht einen Traffic von insgesamt 75.000 Bytes/Sekunde. Das wiederum sind 4.500.000 Bytes/Minute, was 4.29153 MByte/Minute entspricht. Es entsteht also bei 10 gleichzeitigen Spielern ein Traffic von 257.4918 MB/Stunde.

Die Log-Infos des Servers werden in der Datei messages unter /var/logs/ gespeichert.

Weitere hilfreiche Dokumente zum Einrichten eines AssaultCube Servers sind:

http://assault.cubers.net/docs/v1.0/server.html
http://assault.cubers.net/docs/v1.0/commandline.html
http://assault.cubers.net/wiki/Server_guide
http://assault.cubers.net/wiki/Server_requirements
http://assault.cubers.net/wiki/Server_setup
http://assault.cubers.net/wiki/Server_security
http://assault.cubers.net/wiki/Server_hints_1.0.2

mod_rewrite – Die Zweite

Das ein funktionierender redirect-Befehl in der .htaccess-Datei kein hinreichender Beweis dafür ist, dass das mod_rewrite-Modul eines Apache-Webservers geladen ist, musste ich gerade feststellen. Die beste Methode ist es also sich mit phpinfo() das Modul bestätigen zu lassen.

In der phpinfo()-Übersicht gibt es den Absatz apache2handler mit der Spalte Loaded Modules. Wenn dort mod_rewrite aufgelistet ist, ist das Modul geladen. Falls nicht, hilft folgende Vorgehensweise:

  • in das Verzeichnis etc/sysconfig auf dem Server wechseln
  • die Datei apache2 öffnen
  • nach APACHE_MODULES=“…“ suchen und dort in die Liste der Module rewrite einfügen.
  • Beispiel:
    APACHE_MODULES=“actions alias auth_basic authn_file authz_host authz_groupfile authz_default authz_user authn_dbm autoindex cgi dir env expires include log_config mime negotiation rewrite setenvif ssl userdir php5 perl python suexec“
  • Apache-Server über die Kommandozeile (PuTTY) neustarten, Befehl: rcapache2 restart

Alexander Schulz beschreibt in seinem Blog die Vorgehensweise komplett über die Kommandozeile:

Zitat:

1. Wechseln in das Verzeichnis “etc/sysconfig”
“cd etc/sysconfig”
Hier liegen die Konfigurationsdateien, welche bei Neustarts zum Initialisieren der Dienste verwendet werden.
2. Bearbeiten der Datei “apache2″
“vim apache2″
* In den Einfügemodus wechseln
Taste “i” (für Insert) drücken
* Zeile suchen und Module rewrite hinzufügen
APACHE_MODULES=”actions alias […]” suchen und am Ende der Liste “rewrite” einfügen
(eine Liste mit allen Modulnamen steht im Kommentar darüber)
* Speichern und schließen
Befehl “:wq!” (w – Speichern; q! – Schließen ohne nachfragen)
3. Apache neu starten
“rcapache2 restart“
4. phpinfo() aufrufen und prüfen ob das Modul geladen ist

Funktioniert mod_rewrite ?

Um herauszufinden, ob Apacheserver-Modul mod_rewrite funktioniert, braucht man in das Hauptverzeichnis seiner Domain nur eine .htaccess-Datei mit folgendem Inhalt erstellen:

redirect /google http://www.google.de

Danach besucht man www.die-eigene-domain.de/google und müsste auf google.de weitergeleitet werden. Sollte das nicht funktionieren, ist mod_rewrite nicht aktiviert. Man muss diese Option dann in der httpd.conf-Datei des Apache-Webservers freischalten.

Mehr über .htaccess-Einstellungen für URL-Rewriting.