Як керувати VPS через командний рядок?
Привіт, колеги! Думаю, кожен із нас, хто хоч раз стикався з адмініструванням
VPS-хостинг, знає, що командний рядок – це наш найкращий друг, а іноді і найлютіший ворог. Але не бійтеся! У цій статті ми розберемо основні моменти управління VPS через консоль, щоб навіть лінуксоїд-початківець почувався впевнено. Я поділюся своїм досвідом, помилками, які я робив, і, звичайно ж, покажу найкорисніші команди та прийоми. Встановлюватимемо софт, налаштовуватимемо сервіси, моніторитимемо систему – загалом, зробимо все, щоб ваша VPS працювала як годинник. Цей setup буде *вогонь*! Погнали!
Зміст:
Основи підключення до VPS через SSH
Отже, перше, що нам потрібно зробити – це підключитися до нашої VPS. Найпоширеніший спосіб – це SSH (Secure Shell). Це зашифроване з'єднання, яке дозволяє безпечно керувати сервером. Чесно кажучи, без SSH нікуди. Я пам'ятаю, як на самому початку намагався працювати із сервером без шифрування… Не робіть так. Це небезпечно.
Щоб підключитися, нам знадобиться термінал (у Linux або macOS) або PuTTY (у Windows). Ну і, звичайно, IP-адреса VPS, логін та пароль (або SSH-ключ). Скажу чесно, краще використовувати SSH-ключі, ніж паролі. Це набагато безпечніше.
Ось команда для підключення через термінал:
ssh [email protected]
Де `user` – це ваше ім'я користувача, а `192.168.1.100` – IP-адреса VPS. Замініть їх на свої дані, очевидно. Якщо використовуєте нестандартний порт, то додайте `-p` з номером порту:
ssh -p 2222 [email protected]
Якщо ви використовуєте SSH-ключ, то потрібно вказати шлях до нього за допомогою опції `-i`:
ssh -i ~/.ssh/id_rsa [email protected]
Після підключення ви побачите привітання сервера і зможете вводити команди.
Налаштування SSH-ключів (для параноїків)
Скажу прямо, налаштування SSH-ключів – це трохи геморой, але воно того варте. Спочатку потрібно згенерувати пару ключів (публічний та приватний) на вашому локальному комп'ютері:
ssh-keygen -t rsa -b 4096
Ця команда створить два файли: `id_rsa` (приватний ключ, зберігайте його в секреті!) та `id_rsa.pub` (публічний ключ). Тепер потрібно скопіювати вміст `id_rsa.pub` на сервер. Є кілька способів це зробити. Найпростіший – використовувати команду `ssh-copy-id`:
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
Ця команда попросить вас ввести пароль від сервера, а потім скопіює публічний ключ у файл `~/.ssh/authorized_keys`. Якщо команди `ssh-copy-id` немає, можна зробити це вручну:
cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Після цього можна зайти на сервер без пароля. Готово! Ось і все! Тепер, щоб остаточно убезпечити себе, можна вимкнути вхід за паролем у файлі `/etc/ssh/sshd_config`. Відкрийте його в текстовому редакторі (наприклад, `nano` або `vim`):
sudo nano /etc/ssh/sshd_config
Знайдіть рядок `PasswordAuthentication yes` і змініть його на `PasswordAuthentication no`. Також можна змінити порт SSH на нестандартний (наприклад, 2222), щоб менше привертати увагу ботів. Після цього перезапустіть SSH-сервіс:
sudo systemctl restart sshd
*Важливе попередження*: Якщо ви накосячите з налаштуванням SSH, то можете втратити доступ до сервера. Тому завжди робіть бекапи і перевіряйте конфігурацію перед перезапуском сервісу. Я сам через це проходив...
| Метод аутентифікації | Безпека | Зручність |
|---|
| Пароль | Низька | Висока |
| SSH-ключ | Висока | Середня (потребує налаштування) |
Security is always excessive until it's not enough.
Rob Joyce, NSA
Управління пакетами та встановлення програм
Отже, давайте поговоримо про управління пакетами. Чесно кажучи, це одна з найважливіших речей, які потрібно вміти робити на сервері. Package managers дозволяють легко встановлювати, оновлювати та видаляти програми. Усі дистрибутиви Linux використовують свої package managers. На Debian та Ubuntu – це `apt`, на CentOS та Red Hat – `yum` або `dnf`. Справа в тому, що я показуватиму приклади для `apt`, тому що це найпоширеніший варіант. Але команди для `yum` або `dnf` зазвичай дуже схожі.
Насамперед потрібно оновити список доступних пакетів:
sudo apt update
Ця команда скачає списки пакетів із репозиторіїв. Потім можна оновити встановлені пакети:
sudo apt upgrade
Ця команда оновить усі пакети, для яких є оновлення. Якщо ви хочете оновити лише один пакет, то вкажіть його ім'я:
sudo apt upgrade nginx
Для встановлення нового пакета використовуйте команду `apt install`:
sudo apt install nginx
Ця команда встановить пакет `nginx` та всі його залежності. Для видалення пакета використовуйте команду `apt remove`:
sudo apt remove nginx
Ця команда видалить пакет `nginx`, але залишить його конфігураційні файли. Якщо ви хочете видалити і конфігураційні файли, то використовуйте команду `apt purge`:
sudo apt purge nginx
Робота з репозиторіями (коли стандартних мало)
Іноді вам може знадобитися встановити пакет, якого немає у стандартних репозиторіях. У цьому випадку потрібно додати новий репозиторій. Для цього потрібно додати його адресу до файлу `/etc/apt/sources.list` або створити окремий файл у директорії `/etc/apt/sources.list.d/`. Наприклад, щоб додати репозиторій Node.js, можна створити файл `/etc/apt/sources.list.d/nodesource.list` з таким вмістом:
deb https://deb.nodesource.com/node_16.x focal main
deb-src https://deb.nodesource.com/node_16.x focal main
Де `focal` – це кодове ім'я вашої версії Ubuntu. Дізнатися його можна командою `lsb_release -c`. Після додавання репозиторію потрібно оновити список пакетів і встановити ключ підпису репозиторію:
sudo apt update
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
Тепер можна встановити Node.js:
sudo apt install nodejs
*Порада профі*: Завжди перевіряйте справжність репозиторіїв і ключів підпису. Не довіряйте невідомим джерелам.
| Команда | Опис |
|---|
sudo apt update | Оновлює список пакетів |
sudo apt upgrade | Оновлює встановлені пакети |
sudo apt install <пакет> | Встановлює пакет |
sudo apt remove <пакет> | Видаляє пакет |
sudo apt purge <пакет> | Видаляє пакет і його конфігураційні файли |
Software is a great combination between artistry and engineering.
Готові застосовувати ці команди? Оберіть свій VPS-хостинг!
Почніть керувати своїм сервером з повним контролем. Наші VPS-плани пропонують гнучкість та продуктивність. — from €4.49/mo.
Обрати VPS-хостинг →
Bill Gates
rocket_launch
Quick pick
Looking for a server that just works?
Valebyte VPS — NVMe, 24/7 support, deploy in 60 seconds.
View VPS plans
arrow_forward
Налаштування та управління основними сервісами
Отже, тепер поговоримо про налаштування сервісів. Тут все стає трохи складніше, але не бійтеся, я допоможу вам розібратися. Справа в тому, що кожен сервіс має свій конфігураційний файл, в якому зберігаються його налаштування. Ці файли зазвичай знаходяться в директорії `/etc`. Давайте розглянемо налаштування декількох популярних сервісів.
Налаштування Nginx (веб-сервер)
Nginx – це дуже популярний веб-сервер. Його конфігураційний файл знаходиться в `/etc/nginx/nginx.conf`. У цьому файлі можна налаштувати основні параметри сервера, такі як кількість робочих процесів, ліміти з'єднань і т.д. Але основні налаштування для сайтів знаходяться в директорії `/etc/nginx/sites-available/`. Щоб створити новий сайт, потрібно створити файл конфігурації в цій директорії, наприклад, `/etc/nginx/sites-available/mysite.com`:
server {
listen 80;
server_name mysite.com www.mysite.com;
root /var/www/mysite.com;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
Ця настройка просто вогонь! Цей файл говорить Nginx слухати порт 80 (HTTP) і обслуговувати сайт `mysite.com` з директорії `/var/www/mysite.com`. Щоб активувати сайт, потрібно створити символічне посилання на цей файл в директорії `/etc/nginx/sites-enabled/`:
sudo ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/
Після цього потрібно перезапустити Nginx:
sudo systemctl restart nginx
Тепер ваш сайт повинен бути доступний за адресою `mysite.com`. Щоб перевірити, що Nginx працює, можна виконати команду:
sudo systemctl status nginx
Якщо все ок, ви побачите повідомлення `active (running)`.
Налаштування UFW (брандмауер)
UFW (Uncomplicated Firewall) – це простий і зручний брандмауер. Він дозволяє налаштувати правила для вхідного і вихідного трафіку. Щоб включити UFW, виконайте команду:
sudo ufw enable
Перед включенням потрібно дозволити вхідні з'єднання по SSH:
sudo ufw allow ssh
Також можна дозволити вхідні з'єднання по HTTP (порт 80) і HTTPS (порт 443):
sudo ufw allow 80
sudo ufw allow 443
Щоб подивитися поточні правила, виконайте команду:
sudo ufw status
*Важливе попередження*: Не забудьте дозволити вхідні з'єднання по SSH, інакше ви втратите доступ до сервера! Я сам через це проходив...
| Сервіс | Конфігураційний файл | Команда перезапуску |
|---|
| Nginx | /etc/nginx/nginx.conf, /etc/nginx/sites-available/* | sudo systemctl restart nginx |
| UFW | /etc/ufw/ufw.conf | sudo ufw enable, sudo ufw disable |
Simplicity is prerequisite for reliability.
Edsger W. Dijkstra
Моніторинг ресурсів VPS
Серйозно, моніторинг ресурсів – це необхідність для будь-якого адміністратора VPS. Без моніторингу ви не будете знати, що відбувається з вашим сервером, поки він не впаде. Чесно кажучи, я не розумію, як люди працюють без моніторингу. Це як їхати на машині з зав'язаними очима.
Використання командного рядка для моніторингу
В командному рядку є декілька корисних команд для моніторингу ресурсів. Найпростіша – це команда `top`:
top
Ця команда показує список процесів, відсортованих за використанням CPU. Ви побачите інформацію про CPU, пам'ять, swap і т.д. Щоб вийти з `top`, натисніть `q`. Інша корисна команда – це `htop`:
htop
`htop` – це покращена версія `top` з більш зручним інтерфейсом і можливістю сортування за різними параметрами. Якщо у вас немає `htop`, встановіть його:
sudo apt install htop
Для моніторингу використання диска можна використовувати команду `df -h`:
df -h
Ця команда показує інформацію про зайнятий і вільний простір на кожному диску. Для моніторингу використання пам'яті можна використовувати команду `free -m`:
free -m
Ця команда показує інформацію про зайняту і вільну пам'ять в мегабайтах. Щоб подивитися використання мережі, можна використовувати команду `iftop`:
iftop
Ця команда показує список з'єднань і їх швидкість. Якщо у вас немає `iftop`, встановіть його:
sudo apt install iftop
*Порада профі*: Налаштуйте автоматичний моніторинг за допомогою таких інструментів, як Grafana і Prometheus. Це дозволить вам відстежувати ресурси в реальному часі і отримувати повідомлення про проблеми.
Приклад скрипта для моніторингу навантаження
Ось простий скрипт, який показує поточне завантаження CPU, пам'яті і диска:
#!/bin/bash
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*id: \([0-9.]*\).*/\1/" | awk '{print 100 - $1}')
MEM_USAGE=$(free -m | awk 'NR==2{printf "%.2f%%", $3*100/$2 }')
DISK_USAGE=$(df -h / | awk '$NF=="/"{printf "%s", $5}')
echo "CPU Usage: $CPU_USAGE%"
echo "Memory Usage: $MEM_USAGE"
echo "Disk Usage: $DISK_USAGE"
Збережіть цей скрипт в файл, наприклад, `monitor.sh`, зробіть його виконуваним:
chmod +x monitor.sh
І запустіть його:
./monitor.sh
Цей скрипт покаже поточне завантаження CPU, пам'яті та диска.
| Команда | Опис |
|---|
top | Показує список процесів, відсортованих за використанням CPU |
htop | Покращена версія top |
df -h | Показує інформацію про зайнятий і вільний простір на диску |
free -m | Показує інформацію про зайняту і вільну пам'ять |
iftop | Показує використання мережі |
Without data, you're just another person with an opinion.
W. Edwards Deming
Управління файлами та правами доступу
Отже, тепер поговоримо про управління файлами та правами доступу. Чесно кажучи, це одна з найосновніших речей, які потрібно знати, щоб управляти сервером. Річ у тім, що все в Linux – це файл. Навіть директорії. Тому вміння працювати з файлами – це вкрай важливо.
Основні команди для роботи з файлами
Найбільш основна команда – це `ls` (list). Вона показує список файлів і директорій в поточній директорії:
ls
Щоб показати всі файли, включаючи приховані (що починаються з крапки), використовуйте опцію `-a`:
ls -a
Щоб показати детальну інформацію про файли, включаючи права доступу, використовуйте опцію `-l`:
ls -l
Команда `cd` (change directory) дозволяє перейти в іншу директорію:
cd /var/www/html
Щоб повернутися в попередню директорію, використовуйте `cd ..`:
cd ..
Щоб повернутися в домашню директорію, використовуйте `cd` без аргументів або `cd ~`:
cd
cd ~
Команда `mkdir` (make directory) створює нову директорію:
mkdir mydirectory
Команда `rm` (remove) видаляє файл:
rm myfile.txt
Щоб видалити директорію, використовуйте команду `rmdir` (remove directory):
rmdir mydirectory
Але `rmdir` видаляє тільки порожні директорії. Щоб видалити директорію з усім її вмістом, використовуйте команду `rm -r`:
rm -r mydirectory
*Важливе попередження*: Будьте обережні з командою `rm -r`. Вона може видалити все, що завгодно, без попередження. Я сам через це проходив...
Команда `cp` (copy) копіює файл:
cp myfile.txt mycopy.txt
Щоб скопіювати директорію, використовуйте опцію `-r`:
cp -r mydirectory mycopydirectory
Команда `mv` (move) переміщує файл або директорію:
mv myfile.txt /tmp
`mv` також можна використовувати для перейменування файлів:
mv myfile.txt newfile.txt
Права доступу (777 - зло!)
В Linux у кожного файлу є права доступу для власника, групи і решти користувачів. Права доступу позначаються трьома цифрами, кожна з яких представляє собою суму прав:
- 4 – право на читання (read)
- 2 – право на запис (write)
- 1 – право на виконання (execute)
Наприклад, права `755` означають:
- 7 – власник має права на читання, запис і виконання (4+2+1)
- 5 – група має права на читання і виконання (4+1)
- 5 – решта користувачів мають права на читання і виконання (4+1)
Щоб змінити права доступу, використовуйте команду `chmod` (change mode):
chmod 755 myfile.txt
*Порада профі*: Ніколи не давайте права `777` файлам або директоріям. Це небезпечно. Використовуйте мінімально необхідні права.
| Команда | Опис |
|---|
ls | Показує список файлів і директорій |
cd | Переходить в іншу директорію |
mkdir | Створює нову директорію |
rm | Видаляє файл |
cp | Копіює файл |
mv | Переміщує файл або перейменовує його |
chmod | Змінює права доступу |
Give a man a program, frustrate him for a day. Teach a man to program, frustrate him for a lifetime.
Muhammad Waseem
rocket_launch
Quick pick
Looking for a server that just works?
Valebyte VPS — NVMe, 24/7 support, deploy in 60 seconds.
View VPS plans
arrow_forward
Вирішення типових проблем і налагодження
Отже, давайте поговоримо про усунення неполадок. Чесно кажучи, це одна з найскладніших і важливих частин управління VPS. Річ у тім, що завжди щось ламається. І ваше завдання – знайти і виправити проблему.
Основні інструменти для налагодження
Перший і найважливіший інструмент – це логи. Більшість сервісів записують свої логи в файли. Зазвичай вони знаходяться в директорії `/var/log`. Наприклад, логи Nginx знаходяться в `/var/log/nginx/`. Щоб подивитися останні рядки логу, використовуйте команду `tail -f`:
tail -f /var/log/nginx/error.log
Ця команда покаже останні рядки файлу `error.log` і буде оновлювати їх в реальному часі. Щоб подивитися всі логи за певний період часу, використовуйте команду `grep`:
grep "error" /var/log/nginx/error.log
Ця команда покаже всі рядки, що містять слово "error". Для перегляду логів systemd сервісів можна використовувати команду `journalctl`:
journalctl -u nginx
Ця команда покаже логи сервісу `nginx`. Щоб подивитися логи за останні 10 хвилин, використовуйте опцію `--since`:
journalctl -u nginx --since "10 minutes ago"
Щоб подивитися логи в реальному часі, використовуйте опцію `-f`:
journalctl -u nginx -f
Якщо сервіс не запускається, перевірте його статус за допомогою команди `systemctl status`:
systemctl status nginx