[ANLEITUNG] Windows ROOT - Server als Dienst installieren mit Base und Homepath

Nightwing
Hier mal eine kleine Anleitung am Beispiel eines meiner Server, wie man auf nem Win Root die Server als Dienst anlegt. Desweiteren schildere ich hier die Methode der Base und Homepathinstallation, was Linuxuser eher kennen dürften.

Ich hab mit 2 Programmen die letzten Tage getestet, empfehle aber Firedaemon Pro, da es besser und leichter zu Bedienen ist. Für User, die Wissen, was sie tun, kann auch das Programm Run as Service verwendet werden (kostenlos). Allerdings kann der Dienst, wenn angelegt, nur noch über die Windowseigene Oberfläche bearbeitet und nur per Registry gelöscht werden.

Warum den Server als Dienst laufen zu lassen?

Stürzt der Root ab oder startet neu, startet der Gameserver automatisch neu. (Gilt auch für z.B. TS)

Warum eine Base und Homepathinstallation?

Ich habe nur einmal die vollständigen Serverfiles auf dem Root und spare mir dadurch viel HDD Platz. Die Dateien, die die Server brauchen, werden geshared.

(eventuelle) Vorbereitung:

Den Root partitionieren, Windows allein auf C:\
Gameserver auf D:\
evtl noch ne Backup Partition

Ports freischalten:

UDP 20800, 20810, 28960 - 28970

Hier mal drei Bilder und eine Grafik dazu:

1: Homepath des Servers

Hier kommen folgende Dateien und Ordner rein: main Ordner (bzw. mods/modordner und die *.cfg Files. pb Ordner.
Keine IWD und FF Files
Der players Ordner wird von der Prestartsequenz angelegt, um ihn braucht man sich nicht zu kümmern.

2: Basepath des Servers

Hier liegen die Serverfiles, keine *.cfg Files.

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
CoD 5 <---- komplette Installation
|-- main	(Alles, ausser den *.cfg)
|-- mods
| |-- test	(Alles, ausser den *.cfg)
|-- pb
| |-- dll
| |-- htm
| |-- scrnshot
| |-- svlogs
| `-- svss
|-- usermaps
| |-- mp_test	(*.ff, *.iwd)
|-- zone
| `-- german


/Server 08-15 <-- Server Ranked.
|-- main		<-- nur die .cfg liegen in diesem Ordner, sonst nix
|-- pb
fs_basepath=D:\CoD 5\Server 08-15
fs_homepath=D:\CoD 5\Serverfiles
fs_game=


/Server TEST <-- Server TEST
|-- mods
| `-- test		<-- hier liegen nur configs drin, sonst nix
|-- pb
fs_basepath=D:\CoD 5\Server TEST
fs_homepath=D:\CoD 5\Serverfiles
fs_game=mods/test


3: Umbenannte CoDWaWmp.exe

Hat man mehrere Server laufen, kann man durch die Umbenennung im Prozess Explorer sehen, was welcher Server macht. Für jeden Server kopiere ich die CoDWaWmp.exe und nenne diese um.

4: Prestartsequenz

Legt den players Ordner (Profil: Admin) mit leerer config_mp.cfg an und unterdrückt die eventuelle Fehlermeldung von CoD, die den Serverstart verhindern würde. Ausserdem werden die Logfiles nicht überschrieben, sondern mit dem Zusatz _old erhalten.







Im Homepath erstellen wir nun die Datei Prestart_08-15.cmd.
(Die Datei am besten nach der umbenannten CoDWaWmp.exe benennen, das man nicht durcheinanderkommt.)
Dazu den Texteditor öffnen und folgendes reinkopieren:

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
@echo off

REM Batchprestartfile für CoD 5
REM Die Prestart.cmd direkt im Gameverzeichnis ablegen.
REM Hier befindet sich auch die CoDWaWmp.exe
REM Bei einer Base und Homepath Installation das File im Basepath ablegen.

REM Diese Prestart.cmd funktioniert nur, wenn man im Startbefehl folgende Parameter zusätzlich angibt:
REM +set fs_localAppData X:\Pfad_zum_Spiel

REM Setzen der Variablen

set PROFILENAME=Admin

set HOMEPATH=D:\CoD 5\Server\08-15

REM Name des Modverzeichnisses
REM z.B. "mods\ace" oder "main"

set MODNAME=main

REM Name der Multiplayer.exe.

set SERVEREXE=CoD_5_08-15

REM Löschen vorhandener Playerprofile

rmdir /s /q "%CD%\players\profiles"

REM Anlegen eines neuen Playerprofils mit active.txt und leerer config_mp.cfg
REM Angelegt wird das Profil im Base und Homepath

mkdir "%CD%\players\profiles\%PROFILENAME%"
echo %PROFILENAME% > "%CD%\players\profiles\active.txt"
copy /y nul "%CD%\players\profiles\%PROFILENAME%\config_mp.cfg"

mkdir "%HOMEPATH%\players\profiles\%PROFILENAME%"
echo %PROFILENAME% > "%HOMEPATH%\players\profiles\active.txt"
copy /y nul "%HOMEPATH%\players\profiles\%PROFILENAME%\config_mp.cfg"

REM Löschen des Temp Files zur Unterdrückung der Fehlerkorrektur beim Start

del /AH /q "%USERPROFILE%\Lokale Einstellungen\Anwendungsdaten\Activision\CoDWaW\__%SERVEREXE%"

REM Umbenennen und löschen des alten console_mp.log
REM Nach jedem Restart ist dann automatisch das letzte alte Logfile vorhanden.

if exist "%HOMEPATH%\%MODNAME%\console_mp_old.log" del /q "%HOMEPATH%\%MODNAME%\console_mp_old.log"
if exist "%HOMEPATH%\%MODNAME%\console_mp.log" ren "%HOMEPATH%\%MODNAME%\console_mp.log" console_mp_old.log
if exist "%HOMEPATH%\%MODNAME%\games_mp_old.log" del /q "%HOMEPATH%\%MODNAME%\games_mp_old.log"
if exist "%HOMEPATH%\%MODNAME%\games_mp.log" ren "%HOMEPATH%\%MODNAME%\games_mp.log" games_mp_old.log


Folgendes muss angepasst werden:

set HOMEPATH=D:\CoD 5\Server\08-15 - Homepath des Servers
set MODNAME=main - Ordner, der aktiv ist (bei Ranked = main), um die Logfiles umzubenennen.
set SERVEREXE=CoD_5_08-15 - Name der CoDWaWmp.exe

Bitte vergewissere Dich, das die Dateiendung auch wirklich *.cmd ist Augenzwinkern

Jetzt öffnen wir FireDaemon Pro und Klicken auf das Icon: Neuen Dienst erstellen. Es öffnet sich folgendes Fenster:



Folgendes füllen wir nun aus:

Short Name: Kurzer Name des Dienstes, ohne Sonder / Leerzeichen
Display Name: So wird der Dienst nachher angezeigt
Custom Prefix: Hier kann man wie ich den Prefix CoD 5 - angeben, dann würde der Dienstname so aussehen: CoD 5 - 08-15

Console Application: Haken setzen

Executable & Working Directory (1): Wir suchen nun die umbenannte CoDWaWmp.exe heraus, das Working Directory füllt sich selbstständig aus.

Parameters (2): Hier kommt der Startparameter rein, der sich wie folgt zusammensetzt:

+set dedicated 2 - dedizierter Internetserver
+set fs_localAppData D:\CoD 5\Serverfiles - Pfad zum Basepath, dadurch ist es möglich, Mods und Custom Maps wie gewohnt aus der Installation zu Starten, nicht aus C:\
+set fs_basepath D:\CoD 5\Serverfiles - Pfad zu den Serverfiles
+set fs_homepath D:\CoD 5\Server\08-15 - Pfad zum Homeverzeichnis des Servers, wo die *.cfg Files liegen
+set net_ip 85.131.195.66 - IP
+set net_port 28960 - Port
+set sv_punkbuster 1 - PB aktivieren
+exec config_ww.cfg - Config ausführen
+map_rotate - Mapwechsel initiieren

So sieht der ganze Parameter am Stück aus:

+set dedicated 2 +set fs_localAppData D:\CoD 5\Serverfiles +set fs_basepath D:\CoD 5\Serverfiles +set fs_homepath D:\CoD 5\Server\08-15 +set net_ip 85.131.195.66 +set net_port 28960 +set sv_punkbuster 1 +exec config_ww.cfg +map_rotate

Klick auf den Reiter Settings:

Hier könnte man den Server einem User zuordnen, da man Admin ist, also seinem Account. Dies ist nicht unbedingt notwendig, nur wenn man noch 2 Variablen anlegt, die Datum und Zeit des Serverstarts in die games_mp.log schreibt, sodass Ultrastats eine korrekte Zeit hat. Das las ich aber weg, würde den Rahmen hier sprengen. Den Haken Interact with Desktop reinmachen.

Unten kann man verschiedene Startoptionen wählen. Automatisch ist eine gute Wahl Augenzwinkern



Klick auf den Reiter Advanced:

Hier kann man dem Dienst eine CPU zuordnen.



Klick auf den Reiter Pre / Post Service:

Wir halten uns im oberen Fenster Pre-Service Programs Settings auf.
Hier kommt nun die Auswahl der Prestartsequenz, unbedingt im Dropdownmenü auf Before stellen:





Fertig!

Jetzt ist es vollbracht, Klick auf Update startet den Server und gibt, wenn alles richtig erledigt wurde, eine Bestätigung aus. Das Fenster schliesst sich und wir sehen die Hauptansicht:




Wie man ohne Dienst startet, bzw für nen Homeserver:

Man braucht keine Prestartsequenz.
Man zieht sich eine Verknüpfung der umbenannten CoDWaWmp.exe auf den Desktop, öffnet diese und schreibt dort hinter Ziel den Parameter rein:

"D:\CoD 5\Server_08-15.exe" +set dedicated 2 +set fs_localAppData D:\CoD 5\Serverfiles +set fs_basepath D:\CoD 5\Serverfiles +set fs_homepath D:\CoD 5\Server\08-15 +set net_ip 85.131.195.66 +set net_port 28960 +set sv_punkbuster 1 +exec config_ww.cfg +map_rotate

Doppelklick auf die Verknüpfung = Serverstart

Was mache ich, wenn der Parameter zu lang ist, und da nicht reinpasst?

Erstelle eine Server_08-15.cmd auf dem Desktop mit folgendem Inhalt:

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
@echo off

start Server_08-15.exe "D:\CoD 5\" +set dedicated 2 +set fs_localAppData D:\CoD 5\Serverfiles +set fs_basepath D:\CoD 5\Serverfiles +set fs_homepath D:\CoD 5\Server\08-15 +set net_ip 85.131.195.66 +set net_port 28960 +set sv_punkbuster 1 +exec config_ww.cfg +map_rotate



Viel Spass beim Nachbauen Zunge raus

ToM

---

Direkt verlinken: https://www.opferlamm-clan.de/wbb2/thread.php?postid=115135#post115135
CrashDech
TOM ich liebe Dich! grosses Grinsen grosses Grinsen grosses Grinsen

Ich will ein Kind von Dir!!! geschockt geschockt geschockt

THX, für die Anleitung unter Windows!


Ciao René
Nightwing

Zitat:

Original von CrashDech

TOM ich liebe Dich! grosses Grinsen grosses Grinsen grosses Grinsen

Ich will ein Kind von Dir!!! geschockt geschockt geschockt


Grosse Augen
scheibe1
und das soll ich Aushilfstrottel hinkriegen? das profil unter c/appdata kann ich ja verkraften (wird auch fleißig gesichert), das die screenshots überschrieben werden finde ich schon blöder, aber das ist mir jetzt zu kompliziert( Base und Homepath verwirrt ). hab jetzt das spiel und den server (cfg's in der main)auf D. wenn ich das richtig verstehe, dann wird der mod ordner, sowie der usermaps ordner dann auch in C/appdata erstellt? server und client? client automatisch? ich nix weiß von Base und Homepath und so' m zeugs,ich doof. ich möchte nur sobald es mods und usermaps gibt, mods und usermaps im client bzw. server verzeichnis unter D haben. mein jetziger startparameter ist:
D:\Spiele\CoD_5_Server\CoDWaWmp.exe +set dedicated 2 +set net_ip scheibe.gotdns.org +set net_port 28961 +exec kaki_server.cfg +map_rotate +set sv_punkbuster 1
wobei ich unter cod4 noch nichtmal die ip/port angaben im startparameter, sondern in der jeweiligen server.cfg hatte. wie muß es denn heißen, damit es tut wie es soll? ich bin verwirrt,lol.
Nightwing
LOL

Hmm, was soll ich da dazu noch sagen, scheibe?
Setz Dich, nimm Dir nen Keks und lies es bitte nochmal in Ruhe durch.

Weitere Fragen sind aber gern willkommen Augenzwinkern

ToM
CrashDech
Hat genial geklappt! grosses Grinsen Fettes THX noch einmal für die Anleitung! Ist wirklich idiotensicher.

Es sollte vielleicht noch hinzugefügt werden, dass die entsprechenden Ports in der Firewall freigeschaltet werden müssen.

Wie provoziere ich nun einen COD5 Servercrash, um zu testen ob er von allein wieder hoch kommt und wie lang es dauert?

Ciao René
Nightwing

Zitat:

Original von CrashDech

Es sollte vielleicht noch hinzugefügt werden, dass die entsprechenden Ports in der Firewall freigeschaltet werden müssen.

Danke für den Hinweis, mach ich nach Feierabend.
Schön, das es auf Anhieb funktioniert hat Grins 2

Zitat:

Original von CrashDech

Wie provoziere ich nun einen COD5 Servercrash, um zu testen ob er von allein wieder hoch kommt und wie lang es dauert?

Taskmanager --> Prozess raussuchen --> beenden.

ToM
CrashDech
Na ja, wenn der Server crasht, lief der Prozess ja bisher trotzdem weiter und musste manuell beendet werden! verwirrt
Nightwing
Ach so hast Du das gemeint, sorry, da hab ich Dich falsch verstanden.
Da kann FireDaemon und das Script auch nicht helfen. Das ist nur, wenn der Root (das hatte ich verstanden) crasht.
Wenn der Prozess weiterläuft, ist ja für FireDaemon alles in Ordnung...

ToM
CrashDech
Die Geschichte mit dem Dienst ist ne ganz nette Sache, bringt mich aber nicht so richtig weiter.

Es muss doch eine Möglichkeit geben, automatisch zu checken ob der Server läuft oder nicht.

Das Problem ist, der Prozess läuft ja noch, aber der Server ist trotzdem abgekackt.

Man muss manuell den Prozess beenden damit der Server wieder läuft.....das kanns ja nicht sein.

Irgendwie muss es doch einen Batch geben der alle x Minuten läuft und intern prüft ob der Server noch da ist. Wenn ein Fehler entdeckt wird, Prozess beenden und gut...