Merge pull request #35 from Sispheor/dev#1.1

Dev#1.1
This commit is contained in:
Fez Vrasta 2015-06-22 10:28:12 +02:00
commit 38c8a46260
5 changed files with 44 additions and 50 deletions

View File

@ -9,14 +9,6 @@ https://developer.valvesoftware.com/wiki/SteamCMD#Linux
We assume you have created the `steam` user to store steamcmd and your ARK server.
## Requirements
Use this command to install soft requirement on your system
```
# Debian based/ Ubuntu
apt-get install screen
# RHEL / CentOS / Fedora
yum install screen
```
Edit /etc/sysctl.conf and set:
```

43
tools/arkdaemon Normal file → Executable file
View File

@ -1,3 +1,4 @@
#!/bin/bash
### BEGIN INIT INFO
# Provides: ARK manager deamon
# Required-Start: networking
@ -9,21 +10,15 @@
#
### END INIT INFO
# NOTICE: this daemon can work only if your system supports start-stop-daemon
# Using the lsb functions to perform the operations.
. /lib/lsb/init-functions
# Global variables
source /etc/arkdaemon.cfg
source /home/${steamuser}/.arkmanager.cfg
source /etc/arkmanager/arkmanager.cfg
NAME=arkmanager_daemon
DESC="ARK manager daemon used to start the server and keep it updated"
PIDFILE="/var/run/${NAME}.pid"
NAME="ShooterGameServer"
LOGFILE="${logdir}/${NAME}.log"
DAEMON="arkmanager"
START_OPTS="--pidfile ${PIDFILE} --user=${steamuser} ${DAEMON}"
DAEMON="/usr/bin/arkmanager"
set -e
@ -33,7 +28,10 @@ test -x $DAEMON || exit 5
case "$1" in
start)
log_daemon_msg "Starting" "$NAME"
if start-stop-daemon -b --start --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON ; then
su -s /bin/sh -c "$DAEMON start" $steamcmd_user
sleep 5
PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'`
if [ -n "$PID" ]; then
log_end_msg 0
else
log_end_msg 1
@ -42,28 +40,27 @@ case "$1" in
stop)
log_daemon_msg "Stopping" "$NAME"
kill ${cat $PIDFILE}
echo "$NAME."
rm -f $PIDFILE
su -s /bin/sh -c "$DAEMON stop" $steamcmd_user
sleep 5
PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'`
if [ -n "$PID" ]; then
log_end_msg 1
else
log_end_msg 0
fi
;;
restart|force-reload)
$0 stop && sleep 2 && $0 start
restart)
su -s /bin/sh -c "$DAEMON restart" $steamcmd_user
;;
status)
# Check the status of the process.
PID=`ps -ef | grep $DAEMON | grep -v grep | awk '{print $2}'`
if [ -n "$PID" ]; then
echo "$NAME is running on PID $PID"
else
echo "$NAME is not running"
fi
su -s /bin/sh -c "$DAEMON status" $steamcmd_user
;;
*)
# For invalid arguments, print the usage message.
echo "Usage: $0 {start|stop|restart|status|force-reload}"
echo "Usage: $0 {start|stop|restart|status}"
exit 2
;;
esac

View File

@ -109,8 +109,7 @@ function isTheServerRunning(){
# If the server is listenning on his port return 0, else return 1
#
function isTheServerUp(){
PORT="7779"
lsof -i |grep $PORT > /dev/null
lsof -i |grep $arkserverport > /dev/null
result=$?
return $result
}
@ -123,11 +122,11 @@ doStart() {
if isTheServerRunning; then
echo "The server is already running"
else
arkserveropts="TheIsland?SessionName=$sessioname?QueryPort=$arkqueryport?Port=$arkserverport?ServerPassword=$arkserverpass?ServerAdminPassword=$arkserverapass?listen"
arkserveropts="TheIsland?SessionName=$sessioname?QueryPort=$arkqueryport?ServerPassword=$arkserverpass?ServerAdminPassword=$arkserverapass?listen"
thejob="$arkserverroot/$arkserverexec $arkserveropts"
screen -dmS "$servicename" $thejob
# run the server in background
$thejob >/dev/null 2>&1 &
echo "$timestamp: start" >> "$logdir/arkserver.log"
tail -n 1 "$logdir/arkserver.log"
fi
}
@ -137,10 +136,10 @@ doStart() {
doStop() {
if isTheServerRunning; then
echo "Stopping server..."
screen -X -S "$servicename" -X stuff "^C"
sleep 30
echo "$timestamp: stop" >> "$logdir/arkserver.log"
tail -n 1 "$logdir/arkserver.log"
# kill the server with the PID
PID=`ps -ef | grep "$arkserverroot/$arkserverexec" | grep -v grep | awk '{print $2}'`
kill -9 $PID
echo "$timestamp: stop" >> "$logdir/arkserver.log"
else
echo "The server is already stopped"
fi
@ -151,10 +150,10 @@ doStop() {
#
doInstall() {
mkdir -p $arkserverroot
# Check if steamcmd is installed, and if not, install it
if [ ! -e $steamcmdroot/$steamcmdexec ]; then
mkdir -p $steamcmdroot
mkdir -p $steamcmdroot
cd /tmp
wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz -C $steamcmdroot
@ -162,7 +161,7 @@ doInstall() {
./steamcmd.sh +quit
echo "SteamCMD was installed in $steamcmdroot"
fi
cd $steamcmdroot
# install the server
./$steamcmdexec +login anonymous +force_install_dir "$arkserverroot" +app_update $appid validate +quit

View File

@ -8,7 +8,7 @@ sessioname=YourLinuxSessionName
arkserverroot="/home/steam/ARK" # path of your ARK server files (default ~/ARK)
arkserverexec="ShooterGame/Binaries/Linux/ShooterGameServer" # name of ARK server executable
arkqueryport="27016" # ARK query port (default 27016)
arkserverport="7779" # ARK server port (default 7779)
arkserverport="7778" # ARK server port (default 7778)
arkserverpass="SERVERPASSWORD" # ARK server password, empty: no password required to login
arkserverapass="ADMINPASSWORD" # ARK server admin password, KEEP IT SAFE!

View File

@ -5,22 +5,28 @@ if [ ! -z $1 ]; then
cp arkmanager /usr/bin/arkmanager
chmod +x /usr/bin/arkmanager
# Copy arkdaemon to /etc/init.d and set permissions
# Copy arkdaemon to /etc/init.d ,set permissions and add it to boot
cp arkdaemon /etc/init.d/arkdaemon
chmod +x /etc/init.d/arkdaemon
# add to startup if the system use sysinit
if [ test -x /usr/sbin/update-rc.d ]; then
update-rc.d arkdaemon defaults
echo "Ark server will now start on boot, if you want to remove this feature run the following line"
echo "update-rc.d -f arkdaemon remove"
fi
# Create a folder in /var/log to let Ark tools write its own log files
mkdir -p /var/log/arktools
chown $1 /var/log/arktools
# Copy arkmanager.cfg inside linux configuation folder if it doesn't already exists
mkdir -p /etc/arkmanager
if [ -f /etc/arkmanager/arkmanager.cfg ]; then
mkdir -p /etc/arkmanager
cp -n arkmanager.cfg /etc/arkmanager/arkmanager.cfg
chown $1 /etc/arkmanager/arkmanager.cfg
echo "A previous version of ARK Server Tools was detected in your system, your old configuration was not overwritten. You may need to manually update it.";
exit 2
else
echo "A previous version of ARK Server Tools was detected in your system, your old configuration was not overwritten. You may need to manually update it.";
exit 2
cp -n arkmanager.cfg /etc/arkmanager/arkmanager.cfg
chown $1 /etc/arkmanager/arkmanager.cfg
fi
else