Запуск виндового Ventrilo сервера под WINE в Linux: различия между версиями
Перейти к навигации
Перейти к поиску
Misha (обсуждение | вклад) |
|||
| Строка 147: | Строка 147: | ||
И пробуем запустить ventrilo руками | И пробуем запустить ventrilo руками | ||
<pre># service ventrilo start</pre> | <pre># service ventrilo start</pre> | ||
==Проверка и перезапуск сервера из cron== | |||
У меня как то упал сервер ventrilo, а я об этом даже не знал. Пришлось написать скриптик, который проверяет - запущен ли процесс сервера ventrilo, и если нет, то перезапускает сервис.<br /> | |||
Вот сам скрипт '''/etc/scripts/ventr_exist.sh''' | |||
<pre> | |||
#!/bin/bash | |||
#set -x | |||
VENPATH=/home/ventrilo/ventsrv | |||
VENBIN=$VENPATH/ventrilo_srv.exe | |||
VENPID=$VENPATH/ventrilo.pid | |||
#PID=`ps -ef | grep -i $VENBIN | grep -v grep | awk {'print $2'} | head -1` | |||
PID=`pgrep -U ventrilo -f $VENBIN` | |||
if [ -z "$PID" ]; then | |||
if [ -s $VENTPID]; then | |||
rm $VENPID | |||
fi | |||
service ventrilo start | |||
echo "`date`" >> /etc/scripts/ventrilo.bug | |||
fi | |||
</pre> | |||
В '''/etc/crontab''' прописываем проверку сервера каждые пол часа. | |||
<pre> | |||
# Проверка работы вентрило сервера | |||
30 * * * * root /etc/scripts/ventr_exist.sh | |||
</pre> | |||
Версия от 09:24, 22 апреля 2010
И так у нас есть Venrilo сервер для WINDOWS. А мы хотим, что бы он стоял на нашем Linux сервере.
Подготовка Linux машины
1. Устанавливаем Wine, если не был установлен
# urpmi wine
2. На Linux сервере создаем пользователя из под которого будет работать Ventrilo сервер.
# useradd -s /bin/false ventrilo
Установка сервера на виндовой машине
- Берем дистрибутив Ventrilo сервера и устанавливаем его на машину с Windows.
- Копируем файлы из директории c:\Program Files\VentSrv на Linux сервер в папку /home/ventrilo/ventsrv
Настройка автоматического запуска
Создаем файл /etc/rc.d/init.d/ventrilo,
#!/bin/sh
#For ventrilo server v3.x
#
#/etc/rc.d/init.d/ventrilo
#
# chkconfig: 255 99 10
#
### BEGIN INIT INFO
# Provides: atd at
# Default-Start: 3 4 5
# Short-Description: Starts the at daemon
# Description: Runs commands scheduled by the at command at the time
# specified when at was run, and runs batch commands when
# the load average is low enough.
### END INIT INFO
# Source function library.
#set -x
# Source function library.
if [ -f /etc/init.d/functions ] ; then
. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
. /etc/rc.d/init.d/functions
else
exit 0
fi
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
# Check that smb.conf exists.
#[ -f /etc/samba/smb.conf ] || exit 0
RETVAL=0
#Replace the values of VENPATH and VENSRV with your ventrilo path and server name.
#Replace the value of VENUSER with the account name that ventrilo runs under.
VENPATH=/home/ventrilo/ventsrv
VENBIN=$VENPATH/ventrilo_srv.exe
VENUSER=ventrilo
VENPID=$VENPATH/ventrilo.pid
#set -x
if [ "$UID" -ne 0 ]
then
echo "You must be root to run this script"
exit 64
fi
#1=3784
if [ -e $VENPID ]
then
PID=`cat $VENPID`
else
PID=0
fi
start() {
if [ $PID -eq 0 ]; then # Если не запущена ventrilo, то запустить
cd $VENPATH
chmod 666 ventrilo_srv.ini
su $VENUSER -s "/bin/bash" -c "wine $VENBIN &"
sleep 1 # Пауза нужна для времени запуска сервера
PID=`ps -ef | grep -i $VENBIN | grep -v grep | awk {'print $2'} | head -1`
if [ -n "$PID" ]; then
echo $PID > $VENPID
echo "Ventrilo server start on port 3780 with pid $PID"
else
echo "Error starting ventrilo server"
fi
else
echo "Ventrilo is allrady exist"
fi
}
stop(){
#check_pid 3784
if [ $PID -ne 0 ]
then
kill $PID
rm $VENPID
echo ""
echo "Ventrilo server on Port:"3784" with PID:"$PID" Stopped."
echo ""
else
echo ""
echo "ERROR Ventrilo server on Port:"3780" Not Running."
echo ""
exit 67
fi
}
status(){
#check_pid 3784
if [ $PID -ne 0 ];then
echo ""
echo "Ventrilo server on Port:"3784" is runnind with PID:"$PID""
echo ""
PID=0
else
echo ""
echo "Ventrilo server on Port:"3780" Not Running."
echo ""
fi
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
*)
gprintf "Usage: %s {start|stop|status}"
exit 1
esac
exit $RETVAL
Меняем права на файлы
# chmod 700 /etc/rc.d/init.d/ventrilo # chown -R ventrilo:ventrilo /home/ventrilo
С помощью утилиты drakxservices делаем автоматический запуск ventrilo при загрузке.
И пробуем запустить ventrilo руками
# service ventrilo start
Проверка и перезапуск сервера из cron
У меня как то упал сервер ventrilo, а я об этом даже не знал. Пришлось написать скриптик, который проверяет - запущен ли процесс сервера ventrilo, и если нет, то перезапускает сервис.
Вот сам скрипт /etc/scripts/ventr_exist.sh
#!/bin/bash
#set -x
VENPATH=/home/ventrilo/ventsrv
VENBIN=$VENPATH/ventrilo_srv.exe
VENPID=$VENPATH/ventrilo.pid
#PID=`ps -ef | grep -i $VENBIN | grep -v grep | awk {'print $2'} | head -1`
PID=`pgrep -U ventrilo -f $VENBIN`
if [ -z "$PID" ]; then
if [ -s $VENTPID]; then
rm $VENPID
fi
service ventrilo start
echo "`date`" >> /etc/scripts/ventrilo.bug
fi
В /etc/crontab прописываем проверку сервера каждые пол часа.
# Проверка работы вентрило сервера 30 * * * * root /etc/scripts/ventr_exist.sh