VDS (Virtual Dedicated Server) — услуга, в рамках которой пользователь получает виртуальный выделенный сервер с максимальными привилегиями. Это эмуляция реального физического сервера, у него есть рутовый доступ, возможность установки произвольных операционных систем и любого софта. При этом он обходится значительно дешевле аренды сопоставимого по мощности физического сервера.
На сервер можно поставить ОС со своего образа или воспользоваться готовым образом в панели управления.

Предположим, мы поставили Debian 10 и веб-сервер Nginx, который идёт в стандартном репозитории (apt install nginx). Давайте посмотрим, какие полезные утилиты и команды помогут в управлении сервером под Linux. Рассмотрим и отдельно Nginx, и сам VDS-сервер в целом.
При работе с VPS можно столкнуться с проблемой нехватки места на сервере. Перед тем как приступить к её решению, проверьте, сколько дискового пространства файловой системы занято. Это можно сделать с помощью команды df -h*. В выводе вы увидите примерно следующее:
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 45G 10G 33G 23% /
Чтобы точно определить, сколько дискового пространства занято, добавьте 4-5% к данным в графе Used. Это пространство выделено под технические области файловой системы: журналы, структуры директорий, данные о размещении файлов на диске и другие. В примере занято 10 ГБ. К ним нужно добавить ещё 0.4-0.5 ГБ.
Ниже рассмотрим распространенные причины заполнения дискового пространства сервера и способы решения данной проблемы.
I have just setup a ubuntu 12.04.2 LTS server that serves a big number of quite large static files. The configuration is the same as on another machine which works great. The other machine uses Ubuntu 11.10 with nginx 1.0.5 . The machine with the problem uses nginx 1.1.19 and it can hardly push around 20MB/s (but is on a 1Gbit dedicated line) with the iotop showing high disk IO by nginx. This is from iotop:
So for some reason those processes that try to shutdown cause the IO and the server goes in a almost non-responsive state, with the load growing as high as 5-6 (this is a dual core machine). The CPU utilisation meanwhile is aroun 0.5%
After restarting nginx everything is fine for some time and then this happens again.
This is the latest from the error log of nginx:
and then this happens:
and this is the nginx.conf:
Any help will be highly appreciated!
Sendfile on and off makes no difference.
worker_rlimit_nofile == worker_connections makes no difference.
worker_processes changes nothing also.
smartctl shows no problems with the disk, however I tried with the second disk on this machine and still no difference.
- Управление сервером
- Установка супервизора
- Анализ свободного места на диске
- Поиск файлов командой find
- Тестирование TCP и UDP-соединений
- Сканирование портов
- Пересылка сообщений и файлов
- Добавление и удаление пользователей
- Как узнать, какие файлы занимают больше всего места на сервере
- Не происходит ротация логов
- Другие программы не очищают свои временные файлы в каталоге /tmp
- Закажите услугу «Сервер для бизнеса»
- Базовые команды по управлению Nginx
Управление сервером
Какие вопросы чаще всего возникают у пользователей при управлении Linux-сервером? Какие инструменты можно порекомендовать даже не очень опытным администраторам?
Установка супервизора
Supervisor — это система клиент/сервер, при помощи которой администратор контролирует процессы на сервере. Инструмент создает процессы в виде подпроцессов от своего имени.
Установка supervisord в Debian или Ubuntu предельно простая:
apt-get install supervisor
После этого демон супервизора уже запущен и будет запускаться при каждой загрузке системы.
Новые программы передаются в супервизор через конфигурационные файлы в директории /etc/supervisor/conf.d. Например, для скрипта long.sh конфигурационный файл может выглядеть следующим образом:
Соответственно, скрипт будет автоматически запускаться при каждой загрузке системы и автоматически перезапускаться в случае выхода. Это значение может быть ‘false’ (не перезапускаться) или ‘unexpected’ (перезапускаться только в случае выхода с неожиданным кодом ошибки, по умолчанию, с любым кодом, кроме 0 или 2).
Две последние строчки — адреса журналов. Это минимальный шаблон конфигурации для программы в супервизоре.
После создания файла конфигурации для конкретной программы запускаем две команды, чтобы супервизор перечитал и применил новые конфигурации:
На этом этапе наша программа или скрипт уже должны запуститься, что можно проверить по логам.
В утилите supervisorctl есть интерактивный режим, в котором она запускается без аргументов:
В этом режиме supervisorctl изначально выводит статус и время работы всех программ под управлением супервизора, а потом свю командную строку. Там можно ввести help — и увидеть список доступных команд:
Как видим, можно запускать, останавливать и перезапускать программы из командной строки с помощью команд start, stop и restart.
Выход из супервизорпа осуществляется по Ctrl-C или командой quit:
Анализ свободного места на диске
Стандартная утилита для просмотра информации о смонтированных разделах — это df. Она выводит список подключенных устройств и информацию о занятом месте.
df опции устройство
Параметр -h активирует режим читаемого человеком вывода (то есть в мегабайтах или гигабайтах):
Информация о конкретной директории (например, /home):
df -h /home
Информация о разделах с заданной файловой системой:
df -h -t ext4
Поиск файлов командой find
Поиск по названию файла:
find -name «query»
Поиск по названию без учёта регистра:
find -iname «query»
«Обратный» поиск файлов, которые не соответствуют указанному шаблону:
find -not -name «query_to_avoid»
find ! -name «query_to_avoid»
Поиск по типу файла
find -type дескриптор_типа запрос
Некоторые из распространённых дескрипторов::
Например, следующая команда выведет все устройства посимвольного ввода-вывода, установленные в системе:
find / -type c
/dev/parport0
/dev/snd/seq
/dev/snd/timer
/dev/autofs
/dev/cpu/microcode
/dev/vcsa7
/dev/vcs7
/dev/vcsa6
/dev/vcs6
/dev/vcsa5
/dev/vcs5
/dev/vcsa4
. . .
Есть фильтр по размеру и времени доступа/изменения. Например, вот команда для поиска всех файлов менее 50 байт:
find / -size -50c
Поиск всех файлов более 700 мегабайт:
find / -size +700M
Для поиска по времени доступа, модификации или изменения метаинформации файла используются параметры ‘-atime’, ‘-mtime’ и ‘-ctime’ с символами плюса и минуса для указания диапазона больше и меньше указанного, соответственно.
Поиск файлов, которые были модифицированы менее суток назад:
find / -mtime -1
Файлы с временем доступа более трёх суток назад:
find / -atime +3
Файлы, которые изменялись за последнюю минуту:
find / -mmin -1
Файлы, которые новее указанного файла:
find / -newer myfile
Тестирование TCP и UDP-соединений
В комплекте Linux идёт большое количество полезных утилит. Некоторые системные администраторы способны выполнять большинство задач, пользуясь только встроенным инструментарием, без установки дополнительных программ. Настоящий швейцарский нож среди встроенных инструментов Linux — сетевая утилита netcat. Общий синтаксис:
Эта команда инициирует TCP-соединение на заданный хост по указанному порту. Если вместо TCP нужно протестировать UDP-соединение, то указываем опцию -u:
netcat -u host port
netcat host startport-endport
В большинстве систем можно писать как netcat, так и nc.
Сканирование портов
Одно из типичных применений netcat — сканирование портов, опция -z означает сканирование вместо установления соединения. Используем её вместе с опцией -v для выдачи более детальной информации при сканировании портов с 1 до 1000:
netcat -z -v domain.com 1-1000
Выдача будет выглядеть примерно так:
Впрочем, для этой задачи имеется более продвинутая, специализированная программа nmap. Устанавливаем её:
apt-get update
apt-get install nmap
Не рекомендуется запускать сканирование портов чужого сервера, поскольку администратор системы может принять такие действия за враждебные. Nmap предназначен для исследования своего собственного сервера, а поэкспериментировать можно на специально предназначенном для тестовых целей сервере scanme.nmap.org.
Некоторые команды требует длительного времени для выполнения.
Сканирование операционной системы на хосте:
nmap -O хост
Сканирование диапазона хостов от xxx.xxx.xxx.xxx до yyy.yyy.yyy.yyy:
nmap -PN xxx.xxx.xxx.xxx-yyy.yyy.yyy.yyy
Сканирование сетевого диапазона с поиском доступных сервисов:
nmap -sP диапазон_адресов
Сканирование конкретного порта:
nmap -p номер_порта хост
Сканирование всех открытых портов TCP и UDP:
nmap -n -PN -sT -sU -p- хост
Изучение версий ПО, работающего на хосте:
nmap -PN -p номер_порта хост
Есть много других команд, параметров и вариантов использования nmap. Сканирование портов своего VDS-сервера позволяет определить потенциальные векторы атак и уязвимости, поскольку злоумышленник начнёт свои действия именно со сканирования.
Пересылка сообщений и файлов
С помощью ключа -l можно поставить на прослушивание конкретный порт на сервере:
netcat -l 5438
На другой машине мы указываем подключиться к машине по данному порту:
netcat domain.com 5438
Теперь между двумя системами установлен канал связи. По нему можно передавать текстовые сообщения.
Таким способом можно даже передать файл. Для этого команду прослушивания направляем сразу в файл:
На другом компьютере вместо текстового сообщения подаём на вход оригинальный файл:
netcat domain.com 5438 < оригинальный_файл
Аналогично можно передавать самые разные вещи, например, содержимое директорий, заархивированное на лету в tarball:
Таким же способом можно на одной стороне создать образ диска (dd), отправить его в указанный порт по созданному TCP-соединению — и принять на другой системе.
Добавление и удаление пользователей
Для добавления, удаления пользователей и выдачи им привилегий sudo нужно для начала подключиться к серверу как root:
После этого добавляем пользователя:
Изначально у него нет никаких привилегий. Но если это основной пользователь системы, то мы можем назначить ему административные привилегии, чтобы он мог выполнять рутинные задачи по обслуживанию и поддержке сервера.
Для назначения административных привилегий нужно добавить пользователя в группу sudo. Пользователям из этой группы разрешено запускать команду sudo с повышением своих привилегий до административных.
Имея такие права, этот пользователь может удалять других пользователей:
Опция —remove-home удаляет также и домашнюю директорию пользователя.
Конечно, здесь далеко не полный список полезных инструментов для управления VDS-сервером. Но эти вопросы часто возникают у начинающих системных администраторов, которые подняли свой первый сервер, поставили ОС и начинают разбираться в мире Linux-администрирования.

Как узнать, какие файлы занимают больше всего места на сервере
Узнать объём директорий и файлов в корне сервера можно при помощи команды du -sch /*. Если начать с корня сервера и проверять те директории, которые занимают больший объем, то в итоге можно найти самые большие файлы. Вместо / можно указать любую другую директорию, чтобы узнать информацию о её содержимом. Пример:
Подключитесь к серверу по SSH и введите следующую команду:
Вместо /path/ укажите путь к директории, файлы и папки которой вы хотите проанализировать. В результатах вывода вы увидите примерно следующее:
-bash-4.1# du -sch /var/log/nginx/*
657M /var/log/nginx/access.log
4.0K /var/log/nginx/access.log-20130929.gz
4.0K /var/log/nginx/access.log-20130930.gz
8.0K /var/log/nginx/access.log-20131001
120M /var/log/nginx/error.log
4.0K /var/log/nginx/error.log-20130929.gz
4.0K /var/log/nginx/error.log-20130930
24K total
В примере больше всего места в директории /var/log/nginx/ занимает файл access.log (полный путь /var/log/nginx/access.log). Чтобы удалить часть информации из файла, используйте команду:
В результате всё содержимое в файле будет заменено пустой строкой.
Если на сервере установлена система мониторинга atop, проверьте директорию /var/log/atop/ командой:
du -sch /var/log/atop/*
В ISPManager частой причиной нехватки дискового пространства является директория /var/www/httpd-logs/, в которой хранятся логи ошибок и запросов к сайтам. Проверьте размер командой:
du -sch /var/www/httpd-logs/*
Не происходит ротация логов
Как следствие, файлы журналов разрастаются до больших размеров. Для устранения проблемы:
Другие программы не очищают свои временные файлы в каталоге /tmp
Для решения этой проблемы проанализируйте содержимое каталога /tmp. Возможно, другие программы не удаляют свои временные данные и занимают дисковое пространство.
Закажите услугу «Сервер для бизнеса»
Сосредоточьтесь на вашем бизнесе, о хостинге позаботится REG. RU! Закажите мощный облачный сервер с круглосуточным администрированием.
Заказать «Сервер для бизнеса»
Базовые команды по управлению Nginx
Примечание. Если пользователь не имеет рутовых прав, то для выполнения каждой команды он должен получить рутовые привилегии с помощью команды sudo.
sudo systemctl stop nginx
В случае запуска от имени root, команда такая:
Запуск после остановки:
systemctl start nginx
Остановка и повторный запуск (перезапуск):
systemctl restart nginx
Если вы просто внесли некие изменения в конфигурацию, Nginx может перегрузиться без потери текущих соединений. Это делается следующей командой:
systemctl reload nginx
По умолчанию, Nginx сконфигурирован на автоматический запуск при загрузке сервера. Такое поведение можно изменить следующей командой:
systemctl disable nginx
Снова включить автозапуск Nginx при загрузке сервера:
systemctl enable nginx
Это делается следующими командами.
Сначала создаём нужную директорию на сервере.
mkdir -p /var/www/your_domain/html
Размещаем в указанной директории главную страничку index.html.
Потом нужно создать соответствующий набор правил для Nginx. В любом текстовом редакторе создаём файл /etc/nginx/sites-available/your_domain и копируем туда конфигурацию из файла по умолчанию, только с изменённым адресом и доменом:
В конце концов, активируем эту конфигурацию, прописав симлинк к новому конфигурационному файлу в директории sites-enabled, которую Nginx считывает при загрузке:
ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
После перезагрузки Nginx будет выдавать соответствующую страницу на запросы your_domain и www.your_domain.

