Данный топик создан с целью уменьшения спама как в чате так и в ветке VPS. (VPS это не OpenVZ)
Существует превеликое множество разных дистрибутивов Linux, и нет особой разницы какой именно использовать.
Arch - слишком сложен для новичка
Gentoo - тоже самое что и Arch, но можно выжать не много больше производительности при компиляции приложений под вашу архитектуру.
Ubuntu - дистрибутив для домохозяек, в начале развития был ответвлением Debian и ставил цель более частого обновления (каждые 6 месяцев) в данный момент использует часто пакеты из unstable репозитория Debian (что уже не есть хорошо постоянно там что то да сыпится)
Fedora - бесплатная версия RHEL для тестирования приложений
Debian - обновления очень редки, но зато стабильность на высоте.
CentOS - основан на RHEL, к сожалению мало чего о нем знаю.
Сам являюсь приверженцем Debian уж очень он прост и удобен связи с чем дальше описание всего пойдет относительно него.
Перед тем как начать работу внимательно прочитайте в интернете описание каждой команды, чтобы понимать что вы делаете в противном случае все это не будет иметь смысла да конечно вы запустите терминал (возможно), но сути не поймете. У нас тут не детский сад ясли младшая группа.
apt-get - утилита предназначения для работы с пакетами
useradd - утилита регистрации нового пользователя
su - (switch user) утилита смены пользователя без завершения текущей сессии
vnc4server - графический сервер работающий на vnc протоколе
mkdir - (make directory) - утилита создания папок
cd - (change directory) - утилита смены папки.
export - утилита добавляющая переменную в среду окружения
wine - утилита исполнения windows приложений
Для работы с терминалом и запуска X11 сервера нам потребуется vnc сервер.
apt-get update
apt-get install vnc4server
Сам я выделяю по одной vnc сессии и одному пользователю на терминал. Создаем пользователя mt_01.
useradd -m mt_01
Теперь нужно попробовать запустить vnc сессию под пользователем mt_01. При первом старте vnc4server потребует ввести пароль для подключения.
su mt_01
vnc4server
Теперь через netstat можно увидеть что у вас открыт порт 5901 (стандартный для vnc). При подключение через vnc клиент на сервер {IP_ADDRESS}:5901 (адрес можно узнать через команду ifconfig, если вы root или же через ip addr) на экране будет небольшое окно консоли. После того как мы проверили что все подключается и работает переходим к установке терминала, но в начале выключим vnc сервер и выйдем из под пользователя mt_01.
vnc4server -kill :1
exit
apt-get install wine
Так теперь у нас имеется wine осталось только под пользователем mt_01 установить терминал.
su mt_01
mkdir -p ~/.wine/drive_c/Program\ Files/MetaTrader
cd ~/.wine/drive_c/Program\ Files/MetaTrader
У нас имеется папка /home/mt_01/.wine/drive_c/Program\ Files/MetaTrader в нее требуется скачать интересующую вас версию любым удобным способом wget, curl, scp и другие. После того как вы скачали исполняемый файл можно попробовать запустить терминал. Для это потребуется запустить vnc сервер и терминал под пользователем mt_01.
su mt_01
vnc4server -geometry 1280x720
export DISPLAY={SERVER_NAME}:1
wine explorer /desktop=$USER,1280x720 /home/$USER/.wine/drive_c/Program\ Files/MetaTrader/terminal.exe /skipupdate > /dev/null &
export DISPLAY={SERVER_NAME}:1 - позволяет выставить vnc сессию для отображения терминала.
{SERVER_NAME} - имя вашего сервера (узнать его можно через команду hostname)
Особо внимательные заметили в конце последней команды & это не ошибка кому интересно прошу по ссылке.
Теперь подключившись к vnc сессии вы увидите запущенный терминал. Дальше будем упрощать процесс запуска, но в начале выключим все и вернемся под root.
killall wine
vnc4server -kill :1
exit
Устанавливаем текстовой редактор vim.
apt-get install vim
После установки отредактируем файл инициализации vnc сервера. (Данный файл у каждого пользователя свой и находится в "~/.vnc/xstartup")
su mt_01
vim ~/.vnc/xstartup
Открыв файл мы видим скрипт написанный на sh. Приводим его к следующему виду.
#!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid black
wine explorer /desktop=$USER,1280x720 /home/$USER/.wine/drive_c/Program\ Files/MetaTrader/terminal.exe /skipupdate > /dev/null &
Описанные в конце скрипта две команды в начале окрасят фон в черный цвет, а затем запустят наш терминал и теперь при каждом запуске vnc сервера нам не нужно еще и запускать терминал ибо запустится он автоматически. По идее можно еще написать цикл для запуска терминала, но его нужно будет вынести в отдельный файл, тогда мы сможем закрывать терминал и он сам будет перезапускаться.
Теперь сделаем так чтобы при каждом перезапуске сервера у нас стартовал автоматически vnc сервер. Для этого погуглив 5 минут находим простенький скрипт, но с начало выйдем из под пользователя mt_01.
exit
touch /etc/init.d/vncserver
Приводим файл "/etc/init.d/vncserver" к данному виду.
#!/bin/bash
unset VNCSERVERARGS
VNCSERVERS=""
[ -f /etc/vncserver/vncservers.conf ] && . /etc/vncserver/vncservers.conf
prog=$"VNC server"
start() {
. /lib/lsb/init-functions
REQ_USER=$2
echo -n $"Starting $prog: "
ulimit -S -c 0 >/dev/null 2>&1
RETVAL=0
for display in ${VNCSERVERS}
do
export USER="${display##*:}"
if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
echo -n "${display} "
unset BASH_ENV ENV
DISP="${display%%:*}"
export VNCUSERARGS="${VNCSERVERARGS[${DISP}]}"
su ${USER} -c "cd ~${USER} && [ -f .vnc/passwd ] && vncserver :${DISP} ${VNCUSERARGS}"
fi
done
}
stop() {
. /lib/lsb/init-functions
REQ_USER=$2
echo -n $"Shutting down VNCServer: "
for display in ${VNCSERVERS}
do
export USER="${display##*:}"
if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
echo -n "${display} "
unset BASH_ENV ENV
export USER="${display##*:}"
su ${USER} -c "vncserver -kill :${display%%:*}" >/dev/null 2>&1
fi
done
echo -e "\n"
echo "VNCServer Stopped"
}
case "$1" in
start)
start $@
;;
stop)
stop $@
;;
restart|reload)
stop $@
sleep 3
start $@
;;
condrestart)
if [ -f /var/lock/subsys/vncserver ]; then
stop $@
sleep 3
start $@
fi
;;
status)
status Xvnc
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
exit 1
esac
Теперь создадим конфигурационный файл.
mkdir /etc/vncserver
vim /etc/vncserver/vncservers.conf
Сам файл для одного пользователя выглядит следующим образом.
VNCSERVERS="1:mt_01"
VNCSERVERARGS[1]="-geometry 1280x720 -depth 16"
Для двух.
VNCSERVERS="1:mt_01 2:mt_02"
VNCSERVERARGS[1]="-geometry 1280x720 -depth 16"
VNCSERVERARGS[2]="-geometry 1280x720 -depth 16"
Параметр VNCSERVERS задает дисплей и пользователя (1:mt_01 - дисплей :1 для пользователя mt_01)
Параметр VNCSERVERARGS задает аргументы для каждого сервер по отдельности
Теперь осталось только заставить сервер запускать данный скрипт с настройками при каждом старте системы.
chmod +x /etc/init.d/vncserver
update-rc.d vncserver defaults
После всего этого перезапускаем сервер.
reboot
Сразу же после перезапуска вы сможете подключиться через любой удобный для вас vnc клиент.
PS: Использование linux сервера для работы ботов не только позволяет сэкономить расходы, но и нервы так как стабильность их на много выше чем windows, а так же позволяют делать такие вещи, которые в windows просто не возможны. Если вас интересует как еще улучшить вашу работу и безопасность с linux сервером пишите дополню топик.

