- управління контентом
- управління сервером
- налагодження скриптів
- Авторизація методом RSA-ключів
- Корисні посилання
Наша взаимовыгодная связь https://banwar.org/
SSH (Secure Shell) - захищений мережевий протокол, який дозволяє працювати безпосередньо на майданчику віртуального хостингу або виділеного сервера VPS / VDS.
Використовуючи консоль SSH, можна проводити операції з файлами (копіювання, переміщення, видалення, архівацію і т.д.), бачити запущені процеси, підключатися до баз даних, виробляти налагодження скриптів і багато іншого.Всі ці операції, реалізуються за допомогою стандартних утиліт операційної системи FreeBSD (або Linux), які викликаються в консолі SSH.
Працюючи в Unix-shell, Ви керуєте сервером через віддалений термінал: на своєму комп'ютері Ви бачите інтерфейс командного рядка, для якої всі надіслані команди виконуються на сервері, а результат виводиться Вам.Всі тарифні плани (крім ТП "Вільний") на хостингу "Зенон НСП" підтримують протокол SSH.
У середовищі Windows для роботи з SSH-протоколу ми рекомендуємо використовувати утиліту PuTTY .
Дані для авторизації по SSH Ви можете знайти в розділі " логіни-паролі "В Панелі управління.
управління контентом
Розглянемо для початку список команд, які можуть Вам знадобитися, а потім опишемо практичні приклади.
- ls - ця команда відображає вміст директорії
- rm - видаляє файли
- mv - переміщує файли
- cp - копіює файли
- mkdir - створює директорію
- joe - редактор текстових файлів
- tar, gzip, gunzip - ці команди найчастіше застосовуються спільно і дозволяють працювати з архівами: створювати їх, витягувати файли з архівів
- zip, unzip - команди для роботи з zip-архівами
Тепер розглянемо кілька практичних прикладів.
Припустимо, Вам потрібно скопіювати файли з розширеннями. html і. jpg в папку "images", яка повинна бути в свою чергу в папці "www", а Ви, закачуючи файли на сервер, помилково записали всі файли кореневу папку на майданчику, тобто на рівень вище, ніж "www". Вирішується дана ситуація досить просто:
cd www mkdir images mv ~ / *. html ~ / www / mv ~ / *. jpg ~ / www / images /Ви "заходите" в директорію "www", в ній створюєте директорію "images", потім переносите всі файли з розширенням. html (по масці "* .html") в директорію "www" (шлях "~ /" позначає шлях до Вашої домашньої директорії), а всі файли. jpg - в "www / images".
У наступному прикладі Вам, припустимо, потрібно видалити резервні копії файлів, які залишилися після застосування редактора "joe" (імена таких файлів закінчуються символом "~"):
rm * ~Будьте гранично обережні, застосовуючи команду "rm" з ключами "-r" і "-f". Перший ключ "говорить" про те, що задані файли потрібно видаляти рекурсивно по всьому піддиректоріях. Другий - відключає запит будь-яких підтверджень.
Працюючи з архівами, можна значно мінімізувати трафік, а, отже, і час завантаження Ваших файлів на сервер.
Припустимо, що у Вас є готовий проект, який займає досить значний обсяг. Замість того, щоб закачувати всі файли на сервер окремо, можна упакувати їх на локальній машині в один архів, зберігши всю структуру директорій, записати на майданчик хостингу один файл, а потім просто розпакувати його:
якщо це zip-архів:
unzip імя_архіваякщо це tar.gz-архів:
tar -zxf імя_архіваЦе буде значно швидше.
Точно так само і в зворотний бік. Більш того, розширивши завдання, уявімо, що потрібно перенести весь контент з одного сервера на інший:
1. спакуємо весь сайт в один архів:
tar -czf archive.tar.gz "www"або, якщо потрібен zip-архів:
zip -r archive.zip "www"2. за допомогою команди "ftp адрес_другого_сервера", авторизувавшись і виконавши команду "put archive.tar.gz", Ви закачаєте архів на інший сервер і, зайшовши в Unix-shell вже нового сервера, розпакуєте архів там:
tar -zxf archive.tar.gzабо, якщо zip-архів:
unzip archive.zipЯкщо Ви хочете підвищити рівень безпеки, не передаючи паролі ftp у відкритому вигляді, можна скористатися програмою "scp". Вона дозволяє копіювати файли з одного комп'ютера на інший, використовуючи для шифрування даних протокол SSH. Наприклад, команда:
scp login @home. domain_name: ~ / www / index.html index.htmlспочатку запросить пароль. Якщо введений пароль співпаде з паролем логіна доступу (login) на сервері "home.domain_name", то Ви скопіювали до себе в поточну директорію файл 'index.html' з директорії "www" домашнього каталогу користувача "login".
Більш докладно про командах "ftp" і "scp" можна дізнатися, виконавши
man ftp man scpуправління сервером
Найчастіше єдиним інструментом для виконання тих чи інших дій з сервером є доступ в Unix-shell. Серйозно займаючись веб-програмуванням або дизайном, рано чи пізно Ваш рівень стає настільки високим, що виникає необхідність опановувати і деякими навичками адміністрування unix-систем. Розглянемо ті команди, які можуть Вам знадобитися:
- ps - ця команда відображає список поточних процесів
- kill - дозволяє відправити процесу певний сигнал, в тому числі і припинити виконання процесу
- du - відображає інформацію про споживання дискових ресурсів
Звичайно ж, і для цієї групи команд вірно те, що детальну інформацію про них можна отримати, виконавши "man імя_команди".
Команда "du -sh ~ /" "розповість" про те, який обсяг займає Ваш сайт. Якщо будь-які процеси "зависли" і вимагають перезапуску, то можна за допомогою команди "ps x" отримати числове значення PID необхідного процесу, після чого виконати команду "kill значеніе_PID_процесса".
Далі, розглядаючи управління своїм веб-сервером, не можна не згадати про адміністрування баз даних. Одними з найпоширеніших серверів баз даних в рамках хостингу на платформі Unix є MySQL і PostgreSQL. Скажімо про те, що основним інструментом для управління ними є утиліти адміністрування, які запускаються з Unix-shell. Саме для MySQL - це програми mysql, mysqladmin і mysqldump.При використанні загального MySQL доступ надається тільки до однієї бази даних, а не до всього сервера. У такому випадку для Вас буде актуальним використання mysqldump і mysql. Перша утиліта служить для створення дампа бази або окремих таблиць у вигляді текстового файлу. Детальніше про це можна прочитати в нашій статті " Імпорт / експорт даних з MySQL ". Mysql - це працюючий в текстовому режимі клієнт для сервера баз даних, що дозволяє виконувати різні SQL-запити.
Для початку розглянемо ключі, які можуть Вам знадобитися при запуску MySQL:
- "-H адрес_хоста" (або "--host = адрес_хоста") - задає адресу хоста для підключення
- "-U ім'я_користувача" (або "--user = имя_пользователя") - ім'я користувача, який підключається до сервера
- "-P пароль" (або "--password = пароль") - пароль, з яким Ви підключаєтеся до сервера. Якщо Ви не введете пароль, а тільки задасте ключ "-p", то пароль буде запитано після виконання команди.
- "-P порт" (або "--port = порт") - порт, який використовується для підключення
Крім того, після всіх ключів можна вказати назву бази даних, з якою Ви збираєтеся працювати. наприклад:
mysql XX --user = base_login --host = baze. domain_name --port = 64000 -p base_nameДе XX - версія використовуваної бази даних, base_login - ім'я користувача бази даних (на загальному MySQL збігається з ім'ям бази даних), domain_name - Ваш домен, base_name - ім'я бази даних.
Звичайно ж, отримати доступ до потрібної базі можна і в інтерактивному режимі, виконавши команду "use названіе_бази;". Запит "show tables;" покаже Вам список таблиць в даній базі, "desc названіе_табліци;" відобразить структуру заданої таблиці. Детально про інших командах, таких як створення таблиць (create table ...), вибірка за заданими умовами (select ...), зміна даних (update ...), видалення (delete ...), Можна прочитати в документації по MySQL .
Якщо Ви використовуєте персональний MySQL-сервер, Вам знадобиться утиліта mysqladmin. За допомогою неї можна створювати і видаляти бази даних, оновлювати дані про права доступу користувачів, якщо Ви вносили зміни, відображати список виконуваних сервером процесів. Крім того, за допомогою клієнта mysql можна буде виконувати необхідні дії з таблицями в базі mysql ( "use mysql;", "show tables"). Наприклад, вносити зміни в таблицю користувачів ( "user").
Як завжди, Вам допоможуть команди:
man mysql man mysqldump man mysqladminналагодження скриптів
Як завжди, почнемо зі списку корисних команд:
- less - ця команда дозволяє переглядати вміст файлу
- grep - шукає задану послідовність у файлі
- tail - відображає вміст кінця файлу
- chmod - зміна атрибутів файлу
Звичайно ж, і для цієї групи команд вірно те, що детальну інформацію про них можна отримати, виконавши "man імя_команди".
У процесі налагодження роботи скриптів, додатків, сервісів дуже важливим фактором є можливість аналізу файлів протоколів. Найчастіше саме в протоколах помилок містяться відповіді на питання "чому скрипт не працює / не працює належним чином?" Найпростіше дію - звичайний перегляд такого файлу:
less file.logСтрілки "вгору" і "вниз" дозволять "гортати" файл, клавіша "H" відобразить екран з текстом підказки, "Q" - закінчить роботу з файлом.
Однак, можна зіткнутися з такою проблемою. Файли протоколів часто оновлюються дуже активно, і вся нова інформація дописується в кінець файлу. Таким чином, щоб отримати дані, що цікавлять, необхідно завантажити файл протоколу до себе на комп'ютер або "перегорнути" його до самого кінця. Що з точки зору передачі деякого об'єму даних рівнозначно. Ось, саме в таких випадках допоможе команда:
tail імя_файла_протоколаВи побачите останні 10 рядків файлу (за замовчуванням). Це значення можна змінити за допомогою ключа "-n", де n - число рядків, яке Ви хочете побачити. Наприклад, "tail -30 file.txt" - показати 30 останніх рядків файлу "file.txt".
Ще одним дуже зручним засобом діагностики помилок є запуск команди "tail" з ключем "-f":
tail -f імя_файла_протоколаУ цьому випадку виконання даної команди не припиняється при досягненні кінця файлу, а триває і відображає знову додається інформацію. При цьому можна запустити ssh-клієнт і, наприклад, виконувати паралельно інші завдання.
Якщо ж файл протоколів досить великий і досить активно оновлюється, то, можливо, допоможе пошук по даному файлу по заданих параметрах. Найпростіший варіант:
grep "ключевая_фраза" імя_файла_протоколаНаприклад, потрібно знайти в файлі "file.txt" все рядки, в яких міститься слово "web". Для цього використовуємо команду:
grep "web" file.txtА якщо Ви хочете, щоб команда "grep" шукала без урахування регістру і знаходила в тому числі і "Web" або "WEB", використовуйте ключ '-i':
grep -i "web" file.txtЩе корисні ключі команди grep:
- "grep -r" - пошук і в підкаталогах поточного каталогу
- "grep -v" - показати ті рядки, які не задовольняють умовам пошуку
Детальніше про застосування "grep":
man grepНе можна не згадати про такі корисні можливості Unix, як перенаправлення стандартного введення і виведення, а також об'єднання команд за допомогою каналів. Покажемо на прикладах, що це таке.
команда
ls -laвиводить на екран вміст поточної директорії. Припустимо, що ці дані Вам потрібно якимось чином зберегти.
команда
ls -la> file.txtзробить те ж саме, що і попередня, але результат буде збережений у файлі "file.txt". Якщо такого файлу не було, він буде створений заново. В іншому випадку він буде перезаписано.
При використанні команди
ls -la >> file.txtрезультат буде збережений у файлі "file.txt" з тією лише відмінністю, що якщо файл з таким ім'ям вже існував, нові дані будуть дописані в кінець наявного файлу.
Дані приклади ілюструють перенаправлення стандартного виводу. Перенаправлення стандартного введення - відповідно, зворотну дію: якщо будь-яка команда в процесі виконання вимагає деякі дані в інтерактивному режимі, то їх можна вводити не вручну, а отримати з файлу. Наприклад, команда
sort <file1.txtвідсортує за алфавітом рядки з текстового файлу "file1.txt" і виведе результат на екран. А, наприклад
sort <file1.txt> file2.txtзробить те ж саме, але збереже отримані дані в "file2.txt". Даний приклад показує, що перенаправлення стандартного введення і виведення можна застосовувати одночасно. Крім того, висновок однієї команди може бути введенням для іншої. Це об'єднання команд каналами. наприклад:
grep "web" file.txt | grep "site"знайде всі рядки в файлі "file.txt", в яких одночасно зустрічаються слова "web" і "site", а
grep "web" file.txt | grep "site" | wc -lвважатиме кількість таких рядків.
І на закінчення потрібно сказати про те, що найпростішим, але досить ефективним засобом діагностики є простою запуск скрипта в командному рядку. Якщо Ви просто десь опечатали при написанні скрипта або помилилися в синтаксисі, то Ви відразу ж зрозумієте це за повідомленням про помилку.
Авторизація методом RSA-ключів
Спочатку потрібно виставити правильні права на домашню директорію на майданчику. Тут важливо прибрати sgid -біт на домашній директорії, що ставлять у нас по-замовчуванню.
chmod 750.Після чого в домашній директорії має бути наступне:
ls -la drwxr-xr-x 9 your_login sadmin 512 7 Березня 8:01. drwxrws - x 716 root admin 44032 18 Червня 3:08 .. ... ... ...Далі, якщо Ви генеруєте ключі командою (ми описуємо так, як якщо б генерація була б на нашому сервері, але Ви можете це робити, або в іншого провайдера, або вдома, так що можливі зміни):
ssh-keygen -t rsaЗалишайте запропоновані імена файлів.
Далі, оскільки Ви будете підключатися до нашого хосту, Ви кладете файл id_rsa.pub в директорії ~ / .ssh і перейменовувати в authorized_keys.
На директорію .ssh повинні бути права 700. На фото - права встановлені при генерації.
Далі, підключаєтеся командою:
ssh login @ host_nameЯкщо Ви при генерації використовуєте команду:
ssh-keygen -t rsa1то при підключенні необхідно використовувати команду:
ssh -1 login @ host_nameУ нас підтримується і ssh1 і ssh2.