Участник
Пользователь
- Сообщения
- 75
- Реакции
- 66
- Помог
- 1 раз(а)
Здравствуйте, хотел бы расказать как я настраиваю оперативную систему под свой сервер.
Стоит у меня os Debian 9x64 и, сообственно, рассаматривать настройку будем на ней.
Статья написана, скорее всего, под тех, кто уже немного прошарен. Но и для новичков будет сверхполезной.
Буду работать с текстовым редактором vim, кому удобнее nano - ваш выбор, просто замените слово vim в командах на nano. Момент установки данного редактора я упустил.
Написано очень примитивно, не хотел писать много текста. Если пользователи захотят - напишу еще несколько статтей по каждому пункту.
Пакеты, с которыми мы будем работать:
1) Подключаемся по ssh, вводим свои данные.
2)
3) Сразу настроим iptables, чтобы потом не возвращатся.
Сохраним наши настройки в файл, чтобы было удобнее работать.
Редактируем файл, правя под себя.
Вписываем туда настройки, привожу свой готовый конфиг.
80 - порт nginx.
22 - ssh port.
21 и 6000:6100 порты для ftp сервера. Данные числа подставляем свои.
27015 - думаю, всем понятно.
Сохраняемся, выходим.
Релоадим настройки в iptables.
4) Добавим sudo пользователя, от которого будем работать все время.
Вводим пароль, повторяем.
Выдаем sudo для нашего пользователя:
Дальше логинимся под нашего пользователя и продолжаем.
su - zerg
5) Установим proftpd.
Редактируем конфиг:
Раскомментируем только эти строки и изменим последнюю под наши пассивные порты:
При подключении указываем данные своего пользователя.
6) Установим веб сервер nginx для работы нашего банлиста и fastdl.
Некую информацию по настройке я уже выкладывал здесь: Настройка виртуальных хостов nginx(Инструкция)
Настройка в debian почти ничем не отличается. Стоит только заметить, что вместо sites-available и sites-enabled используется одна директория conf.d.
Если не разобрались - задаем вопросы, либо пишем мне в личку.
Чтобы установить последнюю версию nginx`a - читайте инфу на офф.сайте.
Конфиг fastdl, спасибо serfreeman1337
7) Установим нашу бд.
Выполняем инсталляцию отвечая на каждый вопрос. Обязательно вводим новый пароль для mysql root юзера:
Подключимся к нашему мускл и сразу создадим нужную бд вместе с пользователем. dbname и username, userpassword меняем на свои данные:
"mysql>" Копировать не нужно
Перезагрузим привилегии и можем выходить.
II. Приступим к установке самого сервера:
1) Установим нужные пакеты:
2) Добавим пользователя нашего сервера. sudo выдавать ему нет смысла.
Вводим пароли и логинимся
3) Создадим нужные папки и скачаем steamcmd(Без него будет сыпать ошибки в консоль).
Переходим в папку steamcmd и скачаем его.
4) Перейдем к скачиванию самого сервера:
5) Создадим некий скрипт для запуска сервера в tmux.
Вот мой скрипт запуска. Скрипт был переделан под себя, но спасибо не помню какому ресурсу. Либо, можете запускать через другие скрипты. Ищите на форуме.
Сохраняем.
Из папки run вы можете:
./run_27015.sh start - Запустить.
./run_27015.sh stop - Остановить.
./run_27015.sh restart - Перезапустить.
./run_27015.sh console - Перейти в консоль. Внимание, отключение от консоли через ctrl+b+d. Если используете ctrl+c - выйдете полностью.
./run_27015.sh checker - Проверить работает ли сервер. Можно добавить в crontab для автоподнятия.
Вот и все, можно приступать к настройке самого сервера по ftp.
Спасибо за внимание.
Стоит у меня os Debian 9x64 и, сообственно, рассаматривать настройку будем на ней.
Статья написана, скорее всего, под тех, кто уже немного прошарен. Но и для новичков будет сверхполезной.
Буду работать с текстовым редактором vim, кому удобнее nano - ваш выбор, просто замените слово vim в командах на nano. Момент установки данного редактора я упустил.
Написано очень примитивно, не хотел писать много текста. Если пользователи захотят - напишу еще несколько статтей по каждому пункту.
Пакеты, с которыми мы будем работать:
- Iptables - уже предустановлен в debian.
- Proftpd - ftp сервер.
- Nginx - web.
- Mariadb - база данных.
- Другие системные пакеты нужные для кс или мониторинга.(tmux, htop, разные библиотеки).
1) Подключаемся по ssh, вводим свои данные.
2)
Код:
//Для начала обновим пакеты:
apt update
//Установим их:
apt upgrade -y
//Скачаем сразу некоторые необходимые пакеты:
apt install wget htop sudo unzip
// reboot, если нужно
Сохраним наши настройки в файл, чтобы было удобнее работать.
iptables-save > /etc/iptables.rules
Редактируем файл, правя под себя.
vim /etc/iptables.rules
Вписываем туда настройки, привожу свой готовый конфиг.
Код:
# Generated by iptables-save v1.6.0 on Tue May 29 23:49:35 2018
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp --tcp-flags ALL NONE -j DROP
-A INPUT -p tcp --tcp-flags ALL ALL -j DROP
-A INPUT -p tcp ! --syn -m state --state NEW -j DROP
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 6000:6100 -j ACCEPT
# CS
-A INPUT -p udp --dport 27015 -j ACCEPT
-A INPUT -m string --string "HLBrute" --algo kmp -j DROP
-A INPUT -m string --string "HLXBrute" --algo kmp -j DROP
COMMIT
# Completed on Tue May 29 23:49:35 2018
22 - ssh port.
21 и 6000:6100 порты для ftp сервера. Данные числа подставляем свои.
27015 - думаю, всем понятно.
Сохраняемся, выходим.
Релоадим настройки в iptables.
iptables-restore < /etc/iptables.rules
4) Добавим sudo пользователя, от которого будем работать все время.
adduser zerg
Вводим пароль, повторяем.
Выдаем sudo для нашего пользователя:
usermod -aG sudo zerg
Дальше логинимся под нашего пользователя и продолжаем.
su - zerg
5) Установим proftpd.
sudo apt install -y proftpd
Редактируем конфиг:
sudo vim /etc/proftpd/proftpd.conf
Раскомментируем только эти строки и изменим последнюю под наши пассивные порты:
Минимальная настройка фтп произведена перезапускаем его и движемся дальше.DefaultRoot ~
PassivePorts 6000 6100
sudo systemctl restart proftpd
При подключении указываем данные своего пользователя.
6) Установим веб сервер nginx для работы нашего банлиста и fastdl.
sudo apt install -y nginx
Некую информацию по настройке я уже выкладывал здесь: Настройка виртуальных хостов nginx(Инструкция)
Настройка в debian почти ничем не отличается. Стоит только заметить, что вместо sites-available и sites-enabled используется одна директория conf.d.
Если не разобрались - задаем вопросы, либо пишем мне в личку.
Чтобы установить последнюю версию nginx`a - читайте инфу на офф.сайте.
Конфиг fastdl, спасибо serfreeman1337
Код:
server {
listen 80;
server_name fdl.domain.ru www.fdl.domain.ru;
location / {
alias /home/ваш пользователь/servers/27015/cstrike/;
autoindex on;
location ~* (\.wad$|(maps|sprites|models|gfx|sound|media|overviews)/.*(bsp|mdl|spr|wav|mp3|bmp|tga|txt|res)$) {
allow all;
}
deny all;
}
}
7) Установим нашу бд.
sudo apt install -y mariadb-server
Выполняем инсталляцию отвечая на каждый вопрос. Обязательно вводим новый пароль для mysql root юзера:
sudo mysql_secure_installation
Подключимся к нашему мускл и сразу создадим нужную бд вместе с пользователем. dbname и username, userpassword меняем на свои данные:
mysql -u root -p
"mysql>" Копировать не нужно
mysql> CREATE DATABASE dbname;
В данном случае мы создаем бд с именем dbname, пользователя username с паролем userpassword и разрешаем ему коннект через локальный хост.mysql>GRANT ALL PRIVILEGES ON dbname.* TO username@localhost IDENTIFIED BY 'userpassword';
Перезагрузим привилегии и можем выходить.
flush privileges
II. Приступим к установке самого сервера:
1) Установим нужные пакеты:
sudo apt-get install -y lib32gcc1 tmux
2) Добавим пользователя нашего сервера. sudo выдавать ему нет смысла.
sudo adduser serv
Вводим пароли и логинимся
su - serv
3) Создадим нужные папки и скачаем steamcmd(Без него будет сыпать ошибки в консоль).
Код:
mkdir servers run steamcmd
Код:
cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz
./steamcmd.sh
// Пакеты обновлятся и можем выходить
exit
Код:
cd ~/servers/
wget http://www.dedicated-server.ru/hlds_linux_6153_beta.zip
// Разархивируем
unzip hlds_linux_6153_beta.zip
// Переименуем для удобства
mv hlds 27015
Код:
cd ~/run
touch run_27015.sh
// выдаем права
chmod +x run_27015.sh
Код:
#!/bin/bash
#. /lib/lsb/init-functions
#####################################################
server_name="cs_27015"
screen_name="cs_27015"
use_user="serv"
path="/home/serv/servers/27015"
hlds_ip="ваш ип"
hlds_port="27015"
hlds_players="32"
hlds_map="de_dust2_2x2"
hlds_options="-norestart +sys_ticrate 1200 -pingboost 2 -condebug -debug"
usecore="0"
hlds_pid="${screen_name}.pid"
clear_logs="1"
checker_cmd="/usr/bin/quakestat"
#####################################################
if [ ! -x $path/hlds_run ]; then
printf "${title} Выставление ${BGreen}chmod +x ${NC}для ${BRed}hlds_run${NC}!\n"
chmod -R 777 $path
fi
NC='\e[0m'
BRed='\e[1;31m'
BGreen='\e[1;32m'
BYellow='\e[1;33m'
BPurple='\e[1;35m'
Cyan='\e[0;36m'
title="[${Cyan}${hlds_ip}${NC}:${Cyan}${hlds_port}${NC}]"
#####################################################
start() {
if [ "`ps -ef | grep ${screen_name} | grep hlds_linux | grep -v grep | wc -l`" -gt 0 ]; then
printf "${title} Сервер ${BYellow}${server_name} ${NC}уже запущен!\n"
exit 1
fi
cd ${path}
if [ ${clear_logs} == 1 ]; then
rm -f ${path}/debug.log
rm -f ${path}/checker.log
rm -f ${path}/cstrike/qconsole.log
rm -rf ${path}/cstrike/logs/*.log
#${start1} rm -fr ${path}/cstrike/addons/amxmodx/logs/*.log
printf "${title} Серверные логи успешно удалены!\n"
fi
printf "${title} Запуск ${BYellow}${server_name}${NC}!\n"
tmux new -d -s ${screen_name} ./hlds_run -game cstrike +ip ${hlds_ip} +port ${hlds_port} +map ${hlds_map} +maxplayers ${hlds_players} ${hlds_options} -pidfile ${hlds_pid}
sleep 1
if [ "`ps -ef | grep ${screen_name} | grep hlds_linux | grep -v grep | wc -l`" -gt 0 ]; then
if [ "`ps -ef | grep ${screen_name}| grep hlds_linux | grep -v grep | awk '{print $2}'`" = "`cat $path/$hlds_pid`" ]; then
printf "${title} Сервер успешно запущен! ${BPurple}:)${NC}\n"
sleep 1
taskset -pc ${usecore} `cat ${path}/${hlds_pid}` > /dev/null
fi
else
printf "${title} Произошла ошибка при старте сервера! ${BPurple}:(${NC}\n"
fi
}
kill_process() {
if [ "`ps -ef | grep ${screen_name} | grep hlds_linux | grep -v grep | wc -l`" -gt 0 ]; then
printf "${title} Kill: `ps -ef | grep ${screen_name} | grep hlds_linux | grep -v grep`\n"
tmux kill-session -t ${screen_name}
rm -f ${path}/${hlds_pid}
else
printf "${title} Не удается завершить ${BYellow}${server_name}${NC}!\n"
fi
}
stop() {
if [ "`ps -ef | grep ${screen_name} | grep hlds_linux | grep -v grep | wc -l`" -eq 1 ]; then
tmux send-keys -t ${screen_name} 'quit' Enter
sleep 1
rm -rf ${path}/${hlds_pid}
if [ "`ps -ef | grep ${screen_name} | grep hlds_linux | grep -v grep | wc -l`" -gt 0 ]; then
printf "${title} Сервер ${BRed}не остановлен${NC}!\n"
kill_process
else
printf "${title} Сервер ${BGreen}успешно остановлен${NC}!\n"
fi
else
printf "${title} Произошла ошибка при остановке ${BYellow}${server_name}${NC}, отутствует активная сессия!\n"
fi
}
status() {
printf "${title} Статус ${server_name}\n"
${checker_cmd} -retry 3 -interval 2 -a2s ${hlds_ip}:${hlds_port} | grep ${hlds_ip}
exit 1
}
console() {
if [ "`ps -ef | grep ${screen_name} | grep hlds_linux | grep -v grep | wc -l`" -gt 0 ] && [ "`ps -ef | grep ${screen_name} | grep hlds_linux | grep -v grep | awk '{print $2}'`" = "`cat ${path}/${hlds_pid}`" ]; then
printf "${title} Подключение к консоли ${BYellow}${server_name}${NC}!\n"
printf "${title} Для выхода используйте ${BGreen}Ctrl+B D${NC}!\n"
printf "${title} Не используйте ${BRed}Ctrl+C${NC}!\n"
sleep 3
tmux attach -t ${screen_name}
else
printf "${title} Произошла ошибка при подключении к ${BYellow}${server_name}${NC}, сервер не запущен!\n"
fi
}
checker() {
time=`date +%X`
date=`date +%D`
if [ -f ${checker_cmd} ]; then
if [ ! -x ${checker_cmd} ]; then
printf "${title} Проверка привилегий ${BYellow}${checker_cmd}${NC}\n"
exit 1
fi
else
printf "${title} Проверка qstat/quakestat\n"
fi
checknoresp=`${checker_cmd} -retry 5 -interval 2 -a2s ${hlds_ip}:${hlds_port} | grep response`
if [ -n "${checknoresp}" ]; then
printf "${title} Статус ${BYellow}${server_name}${NC}: [${BPurple}НЕ ОТВЕЧАЕТ${NC}]\n"
printf "[${date} - ${time}] *[НЕ ОТВЕЧАЕТ]* ${checknoresp}\n" >> $path/checker.log
kill_process
sleep 1
start
sleep 1
printf "Запуск ${title}:" >> ${path}/checker.log
if [ "`ps -ef | grep ${screen_name} | grep hlds_linux | grep -v grep | awk '{print $2}'`" = "`cat $path/$hlds_pid`" ]; then
printf " *[УСПЕШНО]* \n" >> ${path}/checker.log
else
printf " *[НЕУДАЧА]* \n" >> ${path}/checker.log
fi
exit 1
fi
checkdown=`${checker_cmd} -retry 5 -interval 2 -a2s ${hlds_ip}:${hlds_port} | grep DOWN`
if [ -n "${checkdown}" ]; then
printf "${title} Статус ${BYellow}${server_name}${NC}: [${BRed}НЕ РАБОТАЕТ${NC}]\n"
printf "[${date} - ${time}] *[НЕ РАБОТАЕТ$]* ${checkdown}\n" >> ${path}/checker.log
start
sleep 1
printf "Запуск ${title}:" >> ${path}/checker.log
if [ "`ps -ef | grep ${screen_name} | grep hlds_linux | grep -v grep | awk '{print $2}'`" = "`cat $path/$hlds_pid`" ]; then
printf " *[УСПЕШНО]* \n" >> ${path}/checker.log
else
printf " *[НЕУДАЧА]* \n" >> ${path}/checker.log
fi
exit 1
fi
checkup=`${checker_cmd} -retry 5 -interval 2 -a2s ${hlds_ip}:${hlds_port} | grep cstrike`
if [ -n "${checkup}" ]; then
printf "${title} Статус ${BYellow}${server_name}${NC}: [${BGreen}ЗАПУЩЕН${NC}]\n"
printf "[${date} - ${time}] *[ЗАПУЩЕН]* ${checkup}\n" >> ${path}/checker.log
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 2
start
;;
status)
status
;;
console)
console
;;
checker)
checker
;;
*)
printf "${title} Доступные команды: {${BGreen}start${NC}|${BGreen}stop${NC}|${BGreen}restart${NC}|${BGreen}status${NC}|${BGreen}console${NC}|${BGreen}checker${NC}}\n"
exit 1
esac
Из папки run вы можете:
./run_27015.sh start - Запустить.
./run_27015.sh stop - Остановить.
./run_27015.sh restart - Перезапустить.
./run_27015.sh console - Перейти в консоль. Внимание, отключение от консоли через ctrl+b+d. Если используете ctrl+c - выйдете полностью.
./run_27015.sh checker - Проверить работает ли сервер. Можно добавить в crontab для автоподнятия.
Вот и все, можно приступать к настройке самого сервера по ftp.
Спасибо за внимание.
Последнее редактирование модератором: