Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
installation:dedicated_server_standalone [2008/11/03 00:05] DeaD_EyE |
installation:dedicated_server_standalone [2010/07/10 10:43] (aktuell) DeaD_EyE |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Dedicated Server ====== | ====== Dedicated Server ====== | ||
- | Der vom [[wpde>Steam]] unabhängige //Source Dedicated Server// lässt sich für Linux und Windows bei [[http://store.steampowered.com/about/|Steampowered.com]] herunterladen. Es wird wie früher kein gültiger Steam-Acount voraus gesetzt. | + | Der vom [[wpde>Steam]] unabhängige //Source Dedicated Server// lässt sich für Linux und Windows bei [[http://store.steampowered.com/about/|Steampowered.com]] herunterladen. Es wird wie früher kein gültiger Steam-Account voraus gesetzt. |
===== Linux ===== | ===== Linux ===== | ||
- | Voraussetzung um einen Server installieren zu können ist der direkte Zugriff auf die Konsole oder der Zugriff auf eine Shell über eine SSH-Verbindung auf den Host. Die wichtigen Grundbefehle unter Linux sollten bekannt sein, damit ein sicherer Umgang mit dem Server gewährleistet ist. **Es ist davon absolut abzuraten den Server mit Root-Rechten einzurichten.** | + | Voraussetzung um einen Server installieren zu können ist der direkte Zugriff auf die Konsole oder der Zugriff auf eine Shell über eine SSH-Verbindung auf den Host. Die wichtigen Grundbefehle unter Linux sollten bekannt sein, damit ein sicherer Umgang mit dem Server gewährleistet ist. **Es ist davon absolut abzuraten den Server mit Root-Rechten einzurichten bzw. auch zu starten.** |
==== User einrichten ==== | ==== User einrichten ==== | ||
Zeile 27: | Zeile 27: | ||
{{:installation:steam_update.jpg|}} | {{:installation:steam_update.jpg|}} | ||
=== Fehlerquellen === | === Fehlerquellen === | ||
- | Treten nach dem Ausführen vom hldsupdatetool.bin Fehler auf, liegt es am fehlenden "uncompress". Manche Distributionen haben es Standardmäßig nicht mit drin.\\ | + | == Uncompress == |
+ | Treten nach dem Ausführen vom hldsupdatetool.bin Fehler((sh: uncompress: command not found)) auf, liegt es am fehlenden "uncompress". Manche Distributionen haben es Standardmäßig nicht mit drin.\\ | ||
{{:installation:uncompress_command_not_found.jpg|}}\\ | {{:installation:uncompress_command_not_found.jpg|}}\\ | ||
- | Der Befehl ''ln -s $(which gunzip) $(dirname $(which gunzip))/uncompress'' legt eine symbolische Verknüpfung Namens uncompress zu gunzip im gleichern Verzeichnis an. | + | Folgender Befehl legt eine symbolische Verknüpfung Namens uncompress zu gunzip im gleichern Verzeichnis an: |
+ | <code>ln -s $(which gunzip) $(dirname $(which gunzip))/uncompress</code> | ||
+ | == 64-Bit-System == | ||
+ | In seltenen Fällen hat der Hoster bei vorinstallierten 64-Bit Distribution die Bibliotheken für 32-Bit-Programme vergessen mit zu installieren. In diesem Fall lässt sich dann ''hldsupdatetool.bin''((''-bash: ./hldsupdatetool.bin: No such file or directory'')) nicht ausführen. Unter Debian können mit folgendem Befehl die 32-Bit-Bibliotheken installiert werden: | ||
+ | <code>apt-get install ia32-libs</code> | ||
==== Server installieren ==== | ==== Server installieren ==== | ||
Zeile 47: | Zeile 52: | ||
=== Modifikationen von Drittanbietern === | === Modifikationen von Drittanbietern === | ||
Viele Anbieter stellen für ihre [[:mods]] auch Dateien für Linux-Server zur Verfügung. | Viele Anbieter stellen für ihre [[:mods]] auch Dateien für Linux-Server zur Verfügung. | ||
- | Da es gegen die Lizenz verstößt, die Dateien vom SRCDS-Server so anzubieten, muss der Server zuerst mit dem Steam-Installer heruntergeladen werden. In den meisten Fällen reicht es aus die [[:mods|Modifikation]] __Half-Life 2 Deathmatch__ "hl2mp" zu verwenden, um den SRCDS herunterzuladen. Bei diesem Beispiel richten wir einen Server für "Eternal Silence" ein. Dieses Mod benötigt och die alte "Source Engine". Sollte eine andere [[:mods]] eingerichtet werden, die die "Orange Box Engine" benötigt, muss mit dem Steam-Installer anstatt "hl2mp" "tf" (Team Fortress 2) eingerichtet werden. | + | Da es gegen die Lizenz verstößt, die Dateien vom SRCDS-Server so anzubieten, muss der Server zuerst mit dem Steam-Installer heruntergeladen werden. In den meisten Fällen reicht es aus die [[:mods|Modifikation]] __Half-Life 2 Deathmatch__ "hl2mp" zu verwenden, um den SRCDS herunterzuladen. Bei diesem Beispiel richten wir einen Server für "Eternal Silence"((Diese Modifikation ist mittlerweile über Steam direkt verfügbar)) ein. Dieses Mod benötigt noch die alte "Source Engine". Sollte eine andere [[:mods|Modifikation]] eingerichtet werden, die die "Orange Box Engine" benötigt, muss mit dem Steam-Installer anstatt "hl2mp" "tf" ((Team Fortress 2)) eingerichtet werden. |
<code>mkdir ~/eternal_silence | <code>mkdir ~/eternal_silence | ||
cd ~/steam | cd ~/steam | ||
Zeile 56: | Zeile 61: | ||
wget http://downloads.gbs-clan.de/hl2/mods/Eternal_Silence/3.x/Eternal_Silence_3_0_server.tar.gz | wget http://downloads.gbs-clan.de/hl2/mods/Eternal_Silence/3.x/Eternal_Silence_3_0_server.tar.gz | ||
tar -xzf Eternal_Silence_3_0_server.tar.gz -C ~/eternal_silence</code> | tar -xzf Eternal_Silence_3_0_server.tar.gz -C ~/eternal_silence</code> | ||
+ | Der Parameter ''-C ~/eternal_silence'' entpackt den Inhalt des Archives nach ''~/eternal_silence''. Es sollte sicher gestellt werden, dass das Verzeichnis der [[:mods|Modifikation]] am richtigen Ort entpackt wurde. | ||
==== Server starten ==== | ==== Server starten ==== | ||
Zeile 62: | Zeile 68: | ||
=== Startparameter === | === Startparameter === | ||
Die [[startparameter|Startparameter]] vom Server sind unter Linux und Windows fast identisch. | Die [[startparameter|Startparameter]] vom Server sind unter Linux und Windows fast identisch. | ||
+ | **Anmerkung**: Seit dem Update befindet sich CS:S im Unterverzeichnis ''orangebox'' | ||
In dem Beispiel starten wir einen CS:S-Server mit der IP 123.123.123.123 auf dem Standard-Port 27015: | In dem Beispiel starten wir einen CS:S-Server mit der IP 123.123.123.123 auf dem Standard-Port 27015: | ||
- | <code>cd ~/css-public | + | <code>cd ~/css-public/orangebox |
- | ./srcds_run -game cstrike -maxplayers 10 -ip 123.123.123.123 -port 27015 -tickrate 66 -autoupdate -debug +map de_dust2</code> | + | ./srcds_run -game cstrike -maxplayers 10 -ip 123.123.123.123 -port 27015 -autoupdate -debug +map de_dust2</code> |
{{:installation:start_css.jpg|}}\\ | {{:installation:start_css.jpg|}}\\ | ||
Die Fehlermeldungen sind zum Teil ganz normal und lassen sich nicht beseitigen. Wird das Fester jetzt geschlossen, die PuTTY-Session also beendet, schließt sich auch automatisch der Server, da er ein Kind-Prozess von der Shell ist, die geschlossen wird. Es gibt 2 Methoden dies zu verhindern. | Die Fehlermeldungen sind zum Teil ganz normal und lassen sich nicht beseitigen. Wird das Fester jetzt geschlossen, die PuTTY-Session also beendet, schließt sich auch automatisch der Server, da er ein Kind-Prozess von der Shell ist, die geschlossen wird. Es gibt 2 Methoden dies zu verhindern. | ||
Zeile 72: | Zeile 78: | ||
Der Befehl nohup veranlasst andere Programme, die durch nohup gestartet worden sind, das Hangup-Signal der Konsole zu ignorieren. Mit dem Kaufmanns-Und am Ende der Zeile wird die Anwendung, in diesem Fall der Server, im Hintergrund gestartet.\\ | Der Befehl nohup veranlasst andere Programme, die durch nohup gestartet worden sind, das Hangup-Signal der Konsole zu ignorieren. Mit dem Kaufmanns-Und am Ende der Zeile wird die Anwendung, in diesem Fall der Server, im Hintergrund gestartet.\\ | ||
**Ein Beispiel:** | **Ein Beispiel:** | ||
- | <code>nohup ./srcds_run -game cstrike -maxplayers 10 -ip 123.123.123.123 -port 27015 -tickrate 66 -autoupdate -debug +map de_dust2 &</code> | + | <code>nohup ./srcds_run -game cstrike -maxplayers 10 -ip 123.123.123.123 -port 27015 -autoupdate -debug +map de_dust2 2>&1 >/dev/null &</code> |
== screen == | == screen == | ||
- | Screen ist ein Fenstermanager, der es erlaubt, erzeugte Fenster auch im Hintergrund nach Beendigung der SSH-Verbindung, laufen zu lassen. Die Fenster können mit dem screen-Befehl wieder geholt werden. Zu dem Befehl ''screen'' gibt es im Internet eine vielzahl an Anleitungen. Bei den meisten Distributionen muss es nachträglich installiert werden.\\ | + | Screen ist ein Fenstermanager, der es erlaubt, erzeugte Fenster auch im Hintergrund nach Beendigung der SSH-Verbindung, laufen zu lassen. Die Fenster können mit dem screen-Befehl wieder geholt werden. Zu dem Befehl ''screen'' gibt es im Internet eine Vielzahl an Anleitungen. Bei den meisten Distributionen muss es nachträglich installiert werden.\\ |
**Ein Beispiel:** | **Ein Beispiel:** | ||
- | <code>nohup ./srcds_run -game cstrike -maxplayers 10 -ip 123.123.123.123 -port 27015 -tickrate 66 -autoupdate -debug +map de_dust2 2>&1 >/dev/null &</code> | + | <code>screen -mdS server1 ./srcds_run -game cstrike -maxplayers 10 -ip 123.123.123.123 -port 27015 -autoupdate -debug +map de_dust2</code> |
=== Häufige Fehler === | === Häufige Fehler === | ||
Es kann durchaus mal passieren, dass ein Server ausversehen zwei mal oder öfters gestartet wurde, ohne dass der Admin anfangs etwas bemerkt. Erst nachdem sich bestimmte Ports nicht mehr belegen lassen, fängt man an zu suchen. Ein sehr hilfreiches Tool ist ''lsof''. Es zeigt alle geöffneten Dateien und Verbindungen an. Ist z.B. mal ein Port durch einen Server belegt, kann man diesen bei bedarf auch beenden. In diesem Beispiel wurde der Server z.B. durch ein Missgeschick 2 mal gestartet. Da auch noch die Angabe vom Port im Startparameter vergessen wurde, läuft der gleiche Server jetzt auf Port 27015 und 27016. Wir möchten den Server, der auf Port 27016 lauscht, beenden.\\ | Es kann durchaus mal passieren, dass ein Server ausversehen zwei mal oder öfters gestartet wurde, ohne dass der Admin anfangs etwas bemerkt. Erst nachdem sich bestimmte Ports nicht mehr belegen lassen, fängt man an zu suchen. Ein sehr hilfreiches Tool ist ''lsof''. Es zeigt alle geöffneten Dateien und Verbindungen an. Ist z.B. mal ein Port durch einen Server belegt, kann man diesen bei bedarf auch beenden. In diesem Beispiel wurde der Server z.B. durch ein Missgeschick 2 mal gestartet. Da auch noch die Angabe vom Port im Startparameter vergessen wurde, läuft der gleiche Server jetzt auf Port 27015 und 27016. Wir möchten den Server, der auf Port 27016 lauscht, beenden.\\ | ||
Mit losf finden wir zuerst die PID des Server heraus: | Mit losf finden wir zuerst die PID des Server heraus: | ||
- | <code>lsof -i 27016</code> | + | <code>lsof -i :27016</code> |
Der Befehl gibt uns folgendes aus: | Der Befehl gibt uns folgendes aus: | ||
<code>COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME | <code>COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME | ||
srcds_amd 27850 server 4u IPv4 4072257777 UDP *:27016 | srcds_amd 27850 server 4u IPv4 4072257777 UDP *:27016 | ||
srcds_amd 27850 server 7u IPv4 4072257780 TCP xxxxxx.net:27016 (LISTEN)</code> | srcds_amd 27850 server 7u IPv4 4072257780 TCP xxxxxx.net:27016 (LISTEN)</code> | ||
+ | Sollte ''lsof'' nicht installiert sein kann man auch den Befehl ''netstat'' verwenden. | ||
+ | <code>netstat -nlp | grep 27016</code> | ||
+ | Die Ausgabe sieht dann ungefähr so aus: | ||
+ | <code>tcp 0 0 xx.xxx.xxx.xxx:27016 0.0.0.0:* LISTEN 31421/srcds_i486 | ||
+ | udp 0 0 xx.xxx.xxx.xxx:27016 0.0.0.0:* 31421/srcds_i486</code> | ||
+ | Unter bestimmten Umständen kann es aber passieren, dass die PIDs nicht alle angezeigt werden. | ||
+ | |||
Nun wissen wir, um welchen Prozess es sich handelt, der den Port 27016 belegt. Da der Server durch das Script srcds_run gestartet wird, ist dies der Eltern-Prozess. Dieser Eltern-Prozess, in diesem Fall das Shell-Script srcds_run, sollte zuerst beendet werden, da es sonst den Server ggf. neustartet, wenn den Kind-Prozess beendet.\\ | Nun wissen wir, um welchen Prozess es sich handelt, der den Port 27016 belegt. Da der Server durch das Script srcds_run gestartet wird, ist dies der Eltern-Prozess. Dieser Eltern-Prozess, in diesem Fall das Shell-Script srcds_run, sollte zuerst beendet werden, da es sonst den Server ggf. neustartet, wenn den Kind-Prozess beendet.\\ | ||
So lässt sich der Eltern-Prozess finden: | So lässt sich der Eltern-Prozess finden: | ||
<code>ps -o ppid 27850</code> | <code>ps -o ppid 27850</code> | ||
- | Die Parameter ''-o'' mit dem Wert ''ppid'' gibt zu der gegeben PID den Eltern-Prozess (PPID = parent process id) aus.\\ | + | Die Parameter ''-o'' mit dem Wert ''ppid'' gibt zu der gegeben PID den Eltern-Prozess((PPID = parent process id)) aus.\\ |
Das sieht dann so aus: | Das sieht dann so aus: | ||
<code>PPID | <code>PPID | ||
Zeile 102: | Zeile 115: | ||
==== Server updaten ==== | ==== Server updaten ==== | ||
- | Falls Updates der Source Engine oder der [[:mods|Modifikation]] herauskommen, müssen die Server meistens auch aktualisiert werden. In den seltensten Fällen können die Spieler auf einem veralteten Server spielen. | + | Falls Updates der Source Engine oder der [[:mods|Modifikation]] erscheinen, müssen die Server meistens auch aktualisiert werden. In den seltensten Fällen können die Spieler auf einem veralteten Server spielen. |
=== offizielle Modifikationen === | === offizielle Modifikationen === | ||
Zeile 146: | Zeile 159: | ||
Im Gegensatz zu Linux-Server ist für Windows-Server sichergestellt, dass es Modifikation die Dateien für den Server enthält. | Im Gegensatz zu Linux-Server ist für Windows-Server sichergestellt, dass es Modifikation die Dateien für den Server enthält. | ||
Das Aktualisieren der Server, die [[:mods]] von Drittherstellern nutzen, welche über den Steam-Installer nicht zu bekommen sind, muss das Update in zwei Schritten erfolgen. | Das Aktualisieren der Server, die [[:mods]] von Drittherstellern nutzen, welche über den Steam-Installer nicht zu bekommen sind, muss das Update in zwei Schritten erfolgen. | ||
- | - Source Engine updaten\\ Beispiel für einen Eternal-Silence-Server:<code>hldsupdatetool.exe -command update -game "hl2mp" -dir "C:\Documents and Settings\sosi\Desktop\server1" -retry</code> | + | - Source Engine updaten\\ Beispiel für einen Eternal-Silence-Server:<code>cd C:\Documents and Settings\sosi\Desktop\HLServer |
+ | hldsupdatetool.exe -command update -game "hl2mp" -dir "C:\Documents and Settings\sosi\Desktop\server1" -retry</code> | ||
- Die Modifikation updaten\\ Bei unserem Beispiel müsste dann, falls vorhanden, die neue Version der Modifikation heruntergeladen werden und im Installationsverzeichnis des Servers entpackt werden. | - Die Modifikation updaten\\ Bei unserem Beispiel müsste dann, falls vorhanden, die neue Version der Modifikation heruntergeladen werden und im Installationsverzeichnis des Servers entpackt werden. | ||
==== Server starten ==== | ==== Server starten ==== | ||
=== Startparameter === | === Startparameter === | ||
- | === Häufige Fehler === | + | Die [[startparameter|Startparameter]] vom Server sind unter Linux und Windows fast identisch. |
+ | |||
+ | In dem Beispiel starten wir einen HL2DM-Server mit der IP 123.123.123.123 auf dem Standard-Port 27015: | ||
+ | <code>cd C:\Documents and Settings\sosi\Desktop\server1 | ||
+ | srcds.exe -console -game hl2mp -maxplayers 10 -ip 123.123.123.123 -port 27015 -debug +map dm_lockdown</code> | ||
+ | |||
+ | Die Fehlermeldungen sind zum Teil ganz normal und lassen sich nicht beseitigen. Das neue Serverfenster darf nicht geschlossen werden, da sonst der Server beendet wird. Es kann jedoch minimiert werden. | ||
==== Server updaten ==== | ==== Server updaten ==== | ||
+ | Falls Updates der Source Engine oder der [[:mods|Modifikation]] erscheinen, müssen die Server meistens auch aktualisiert werden. In den seltensten Fällen können die Spieler auf einem veralteten Server spielen. | ||
+ | |||
=== offizielle Modifikationen === | === offizielle Modifikationen === | ||
+ | Um einen Server mit einer offiziellen [[:mods|Modifikation]] zu aktualisieren, wird der gleiche Befehl verwendet, der auch für die Installation des Servers, verwendet wurde. Bei Problemen kann auch noch der Parameter -veryfy_all verwendet werden. Es werden dann alle Dateien überprüft. Hier unser Beispiel: | ||
+ | <code>c: | ||
+ | cd C:\Documents and Settings\sosi\Desktop\HLServer\ | ||
+ | hldsupdatetool.exe -command update -game hl2mp -dir "C:\Documents and Settings\sosi\Desktop\server1" -retry</code> | ||
+ | |||
=== Modifikationen von Drittherstellern === | === Modifikationen von Drittherstellern === | ||
+ | Das Aktualisieren der Server, die [[:mods]] von Drittherstellern nutzen, welche über den Steam-Installer nicht zu bekommen sind, muss das Update in zwei Schritten erfolgen. | ||
+ | - Source Engine updaten\\ Beispiel für einen Eternal-Silence-Server:<code>c: | ||
+ | cd C:\Documents and Settings\sosi\Desktop\HLServer\ | ||
+ | hldsupdatetool.exe -command update -game hl2mp -dir "C:\Documents and Settings\sosi\Desktop\server1" -retry</code> | ||
+ | - Die Modifikation updaten\\ Bei unserem Beispiel müsste dann, falls vorhanden, die neue Version der Modifikation heruntergeladen werden und im Installationsverzeichnis des Servers entpackt werden. | ||
===== Server konfigurieren ===== | ===== Server konfigurieren ===== | ||
Zeile 173: | Zeile 206: | ||
==== autoexec.cfg ==== | ==== autoexec.cfg ==== | ||
Ein Beispiel für eine ''autoexec.cfg'': | Ein Beispiel für eine ''autoexec.cfg'': | ||
- | //Hier wird der Servername festgelegt | + | <code>//Sporadischer Eintrag. |
- | //Sporadischer Eintrag. | + | |
sv_pure 0 | sv_pure 0 | ||
//Es können hier z.B. noch Scripte für Eventscripts geladen werden. | //Es können hier z.B. noch Scripte für Eventscripts geladen werden. | ||
+ | </code> | ||
==== server.cfg ==== | ==== server.cfg ==== | ||
Ein Beispiel für eine ''server.cfg'': | Ein Beispiel für eine ''server.cfg'': | ||
- | //Hier wird der Servername festgelegt | + | <code>//Hier wird der Servername festgelegt |
hostname "Server von sourceserver.info" | hostname "Server von sourceserver.info" | ||
Zeile 239: | Zeile 272: | ||
===== Addons einrichten ===== | ===== Addons einrichten ===== | ||
Für die einfachere Administration des Servers und für Änderungen des Gameplays, können [[:addons|Addons bzw. Plugins]] installiert werden. Das Spektrum reicht von einfachen Scripts bis hin zu komplexen Plugins mit einer Datenbankanbindung und einer Vielzahl von Funktionen. | Für die einfachere Administration des Servers und für Änderungen des Gameplays, können [[:addons|Addons bzw. Plugins]] installiert werden. Das Spektrum reicht von einfachen Scripts bis hin zu komplexen Plugins mit einer Datenbankanbindung und einer Vielzahl von Funktionen. | ||
+ | |||
+ | ===== Fastdownload ===== | ||
+ | Im Artikel [[:fastdownload]] sind die weiteren nötigen Schritte beschrieben. |