SRCDS Steam group


Deploying multiple servers with different configurations each
#1
I am aware of the possibility to run forks from a single server install, but i need to deploy different L4D servers with differenti configurations.

There is a sourcemod plugin (advanced map configuration) that loads specific cofigs depending on the hostport, but i found it quite unstable, if used with other l4d-related sourcemod plugins. Also, i wanted to keep separate files in case i experienced crashes on a certain type of configuration.

I have currently 4 types of servers:
  • Vanilla cfg
  • Cevo cfg
  • Esl cfg
  • Frustian's cfg

I currently run them from the same hlds install, i use the same steam binary but different folders for each type of server.

This means that i used the following commands to install the servers:
Code:
./steam -command update -game "left4dead" -dir .
./steam -command update -game "left4dead" -dir cevo
./steam -command update -game "left4dead" -dir esl
./steam -command update -game "left4dead" -dir frustians

I'm finding mutiple errors during the bootup, regarding the steam client. (I'll paste the logs as soon as i get home)

I'm totally noob at this and i wanted to know if deploying servers this way is the wrong way or if i need to just adjust some settings for the launch.

I found out a script that might be useful for what i need to do, but it's not well documented and i need to know what direction to take in this matter. I'm talking about nemrun, it has been advertised on the hlds_linux mailing list as a good daemon.

Any advice is greatly appreciated, thanks.
Reply
#2
I haven't used nemrun, but I know nemrun has been written because the author had the same problem as you. First it was just bunch of easy stuff, but then he made it better because he needed the options himself. It's probably the best option for running multiple servers.

I'm sure there are zillion of other similar projects, but I'm sure none the developers are as up to the task as Nephyrin. He wrote it because he really needed it (instead of a school project or because he tried to run two servers three years ago).
Reply
#3
Thanks, i'll try to work a little bit on setting up that script, then.

Hope Nephyrin will be able to help me out if i get any issue.
Reply
#4
Run symlinks to 1 install.

This should work

mkdir /home/realinstall
cd /home/fakeinstall
for i in `find /home/realinstall` ; do ln -s $i ; done
rm server/cfg
mkdir -p server/cfg

That should save a bunch of space and allow you to have 5000 servers with 1 install and a local configuration..
http://leaf.dragonflybsd.org/~gary

“The two most common elements in the universe are hydrogen and stupidity.”








Reply
#5
So you're telling me to create fake full installs, one for every server/fork i want to deploy with only real "cfg" directories, right?

I trust you it could work but i wanted to keep all the full installs, in case some server messes up the files during an update or something like that. I have plenty of disk space and i'm only using the machine for the community to deploy servers and host a website.
Reply
#6
i am using multiple directories too, since symlinking made my server lag really bad

how do you start them?

i have starting scripts for each directory and it works fine
Reply
#7
(11-19-2009, 11:08 PM)sikamikanico Wrote:  i am using multiple directories too, since symlinking made my server lag really bad

how do you start them?

i have starting scripts for each directory and it works fine

I've got a shell script i found to manage my killing floor servers that is working flawlessly for the other servers:
Code:
#!/bin/sh
#clear
# An old hlds startscript found somewhere in the net changed by
# D4rKr0W
# contact: info@dpi-clan.org
# to match a srcds server
# Edit and uncomment it to your needs

USER="xxx"

PATH=/bin:/usr/bin:/sbin:/usr/sbin

# DON'T FORGET TO CHANGE THE PATHS AND PARAMS TO YOUR NEEDS!

DIR=/home/xxx/

DAEMON=$DIR/srcds_linux

PARAMS="-game xxx\
-fork xx -ip xxx.xxx.xxx.xxx \
-autoupdate \
-steambin /home/xxx/hlds/ \
+hostport xxx+## -netconport xx## \
-netconpassword xxx\
+map xxx \
+exec server##.cfg"

NAME=servername
DESC="Server Description"

case "$1" in
start)
   echo "Starting $DESC: $NAME"
   if [ -e $DIR ];
   then
    cd $DIR
    screen -d -m -S $NAME $DAEMON $PARAMS
   else echo "No such directory: $DIR!"
   fi
   ;;

stop)
   if [[ `screen -ls |grep $NAME` ]]
   then
       echo -n "Stopping $DESC: $NAME"
       kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
       echo " ... done."
   else
       echo "Coulnd't find a running $DESC"
   fi
   ;;

restart)
   if [[ `screen -ls |grep $NAME` ]]
   then
       echo -n "Stopping $DESC: $NAME"
       kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
       echo " ... done."
   else
       echo "Coulnd't find a running $DESC"
   fi
  
   echo -n "Starting $DESC: $NAME"
   cd $DIR
   screen -d -m -S $NAME $DAEMON $PARAMS
   echo " ... done."
   ;;

*)
   echo "Usage: $0 {start|stop|restart}"
   exit 1
   ;;
esac

exit 0

One shell script for every server/fork and voila'.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)