Наш блог
Показать рубрики

10 самых часто используемых команд на удаленном сервере в веб-разработке

Назад к списку статей
10 самых часто используемых команд на удаленном сервере в веб-разработке
Рассказываем про основные команды, которые могут понадобиться при работе с удаленным сервером в командной строке. Как подключиться к удаленному серверу из терминала, как передвигаться по папкам, как сделать архив и распаковать его, как сделать бекап базы данных в sql-файл, как искать по содержимому файлов, как удалить папку, как работать с cron, и многое другое в этом посте.

Оглавление

Вступление

Предлагаем вашему вниманию 10 команд, которые ежедневно используют веб-разработчики при работе с удаленным веб-сервером. Веб-разработчики, зачастую, не производят настройку параметров сервера, но нередка ситуация, когда нужно подключиться к удаленному серверу, просмотреть файлы, заархивировать/разрархивировать папку, сделать дамп базы данных и так далее. В описанных случаях уже будет недостаточно пользоваться FTP-менеджером типа FileZilla или TotalCommander, нужно использовать командную строку.

Начинающие разработчики часто испытывают трудности при работе с командной строкой, так как большинство из нас пользуется ей довольно редко, ведь по распространенному мнению, пользоваться графической оболочкой на много удобнее и нагляднее, но это далеко не всегда так. Веб-серверы практически никогда не имеют графическую оболочку, где можно открыть несколько окон и пользоваться мышью, как в привычной многим Windows. В большинстве случаев, на веб-серверах, на которых хостятся сайты, работают под управлением Linux и работать с ними нужно с помощью командной строки выполняя определенные команды. Ниже мы расскажем какими командами ежедневно пользуются наши разработчики в решении поставленных им задач.

1. ssh

Первое что нужно сделать, чтоб начать работать с уделенным сервером - это, конечно же, подключиться к нему. Пользователи Windows обычно пользуются программой Putty, но пользователю же Unix-систем типа Mac OS X или Ubuntu, нужно открыть Terminal и выполнить команду ssh. Для подключения к серверу нам нужно знать его IP-адрес, логин и пароль. Подключение состоит из двух шагов - ввода логина и IP-адреса, а второй, если был найден нужны сервер и указан верный логин, - ввод пароля. Вот как выглядит первый шаг, логин и IP-адрес указываются через "собаку":

ssh root@111.111.111.111

Если сервер использует нестандартный 22й порт для подключения по SSH, то команду ssh можно вызвать с параметром p и указать нужный порт:

ssh -p222 root@111.111.111.111

Далее должна появиться хитрая строка для ввода пароля. В первый раз может показаться, что что-то пошло не так, ведь когда вставить туда скопированный пароль или начать что-то писать, то не появятся даже привычные нам точечки при вводе пароля где-то на сайтах, например. Но на самом деле все в порядке, политика безопасности операционной системы сервера желает, чтоб пароль вводился, так сказать "вслепую", даже не отображая количество введенных символов пароля. Вводите пароль, нажимайте Enter и если введены правильные доступы, то вы подключитесь к серверу и начнете работу в его командной строке.

2. pwd

Команда pwd выводит абсолютный путь до вашего текущего "местоположения" на сервере - вашей рабочей директории. Если вы подключаетесь под пользователем root, то вы можете оказаться в папке /root/, но можете оказаться и в домашней директории вашей учетной записи на сервере. Поэтому бывает очень полезно выполнить команду pwd и увидеть на экране где вы на самом деле оказались.

В этот же пункт логически отнести и команду ls, которая выводит на экран список файлов и папок вашей рабочей директории. Вызов команды ls выглядит, например, так:

Это список файлов и папок директории /bitrix/ установленного сайта. Можно также отсортировать вывод, например по дате последнего изменения:

ls -G -t

Где -G - параметр, который красит директории другим цветом, а -t - параметр, который сортирует вывод по дате изменения (последние изменившиеся вверху)

3. cd

Команда cd это аналог перехода между папками в Проводнике Windows, только в командной строке. Допустим, на сервере установлена виртуальная машина 1С-Битрикс, корень сайта в ней обычно располагается по такому пути - /home/bitrix/www/. Как сделать папку www своей рабочей директорией, как в нее перейти? Вызвать команду cd и указать ей путь нужной папки. Вот так:

cd /home/bitrix/www

Вы окажитесь в папке www. Ок, как теперь перейти на уровень вверх, в папку bitrix? Можно выполнить команду cd /home/bitrix, а можно еще проще, просто указать две точки после самой команды - вот так:

cd ..

Эта команда поднимет вас на уровень вверх по дереву каталогов.

Еще пример - вы находитесь в папке /home/bitrix/www, как перейти на два уровня вверх? Вызвать команду cd и два раза написать в ней две точки, вот так:

cd ../..

Две точки ".." можно повторять столько раз, на сколько уровней вы хотите подняться вверх. На данном примере это может показаться глупо, ведь можно просто вызвать cd /home, но, поверьте, когда вы глубоко в папках - намного проще пользоваться двойными точками для поднятия на несколько уровней вверх, чем писать полный путь от корня сервера.

Что еще интересного в этой команде, это то, что вам не обязательно писать полные названия папок для перехода по ним - можно использовать маску. В нашем примере можно не писать полностью, например, название папки bitrix, можно написать так:

cd /home/bit*/www

Команда сама поймет, что bit* это папка bitrix и подставит туда полное название, а нам меньше писать. Очень удобно, когда работа идет с длинным названиями папок. Если же на одном уровне будет лежать несколько папок, которые подходят под указанную нами маску, то будет подставлена та, что идет первее по алфавиту, две одинаковые папки рядом быть не может.

4. tar

Команда tar позволяет работать с архивированием файлов и папок на сервере. Рассмотрим такой пример: вы производите доработку интеренет-магазина на 1С-Битрикс с использованием системы контроля версий у себя локально на компьютере. Обычно, ядро битрикса не версируют, поэтому вы сделали "checkout" рабочей копии и получили все файлы кроме ядра системы - папки bitrix, ее нужно забрать с удаленного сервера. Подключаться по FTP и скачивать ее пофайлово - это совсем не вариант, такой случай займет несколько часов как минимум. На много проще будет создать архив этой папки и скачать его по тому же FTP, например. Это займет в десятки раз меньше времени. В этом нам поможет команда tar.

Вот как можно создать архив папки bitrix. Используя командную строку убедитесь, что вы находитесь в корневой папке сайта и выполните эту команду:

tar --exclude="bitrix/backup/*" --exclude="bitrix/cache/*" --exclude="bitrix/managed_cache/*" --exclude="bitrix/stack_cache/*" --exclude="bitrix/html_pages/*" -zcvf bitrix.tar.gz ./bitrix

Да, великовата, но очень проста. Что делает эта команда - создает архив папки bitrix исключая из архива папки кеша и всего, что не нужно вам в тестовом окружении. Разберем команду более детально

tar - вызов самой команды
--exclude="bitrix/backup/*" - исключает из архива папку с резервными копиями сайта
--exclude="bitrix/cache/*",
--exclude="bitrix/managed_cache/*",
--exclude="bitrix/stack_cache/*",
--exclude="bitrix/html_pages/*" - исключает из архива папки с кешем
-zcvf - набор параметров для создания архива
bitrix.tar.gz - название конечного архива
./bitrix - это путь начиная с котрого нужно архивировать файлы и папки.

Распаковать такой архив с помощью командной строки можно выполнив такую команду:

tar -zxvf bitrix.tar.gz

5. mysqldump/mysql

Продолжаем тему скачивания сайта себе локально "по кусочкам", мы уже обзавелись полной копией файловой системы - осталась база данных. Как можно сделать дамп базы данных сайта из командной строки? Нужно выполнить команду mysqldump, понадобятся логин пользователя БД, название БД и пароль пользователя БД. Команду выполнять нужно вот так:

mysqldump --opt -u USER -p DBNAME > dbname.sql

Где USER - это пользователь базы данных, не операционный системы; DBNAME - это название базы данных, которой нужно сделать резервную копию.

Далее нужно будет указать пароль, строка ввода пароля такая же хитрая, как и при вводе пароля при подключении командной ssh, так что будьте готовы. После этого будет произведена операция резервного копирования и на выходе мы получим файлик dbname.sql с дампом нашей базы данных.

Распаковать такой дамп обратно в вид базы данных можно с помощью такой команды:

mysql -u USER -p DBNAME < dbname.sql

Параметры похожие: логин, название базы данных, указать путь к файлу и после - ввести пароль от пользователя БД.

6. grep

Команду grep используют для поиска по содержимому файлов. Самый распространенный вариант использования этой команды у наших разработчиков - это поиск BOM в файлах, который может приносить кучу проблем с выводом результатов скриптов. Вот этот пример, команда выводит список файлов, в которых был найден BOM:

grep -rl $'\xEF\xBB\xBF' .

7. rm

Еще одна полезная команда - rm. Эта команда удаляет папку на сервере, вот как можно ее вызывать:

rm -rf mydir

Где r - это параметр, который будет удалять все, что найдет внутри этой папки, включая другие папки и файлы, рекурсивно;
а f - это параметр, который позволяет отключить подтверждение удаления каждого файла. Если выполнить команду без него, придется для каждого файла подтверждать свое желание удалить его написав "Y" в командной строке и нажав "Enter";
mydir - это путь к папке, которую нужно удалить.

8. crontab

Очень часто перед веб-разработчиком стоит задача поставить на регулярное выполнение разные скрипты на сервере. Например, ночью, когда нагрузка на сервер минимальная, нужно произвести какую-то тяжелую операция на сервере или нужно в определенное время сделать рассылку клиентам или сделать импорт товаров из внешнего источника или каждые 2 минуты проверять какое-то событие, да примеров миллион. Все это можно сделать с помощью утилиты "cron" и настраивается она командой crontab.

Проверить какие команды в настоящее время стоят "на кроне", можно выполнив команду:

crontab -l

А добавить свою новую команду на выполнение в определенное время можно выполнив команду:

crontab -e

Последняя команда вызовет редактор, писать текст в котором можно нажав клавишу "i" (если ваш редактор по умолчанию - vi). У вас появится курсор, который можно двигать стрелками и писать в нем новую или редактировать написанную инструкцию для крона. Синтаксис у такой инструкции довольно простой: перед командой, которую нужно выполнить на сервере, нужно указать время выполнения. Время задается пятью параметрами: минуты, часы, дни месяца, месяцы, годы. Примеры:

*/2 * * * * command - выполнять команду "command" каждые 2 минуты

0 12 * * * command - каждый день в 12 часов дня

0 0 * * * command - каждый день в 12 часов ночи

0 0 1 1 * command - каждый новый год :)

15 * * * * command - каждый час в 15 минут этого часа

После вводу нужных инструкций нужно нажать Esc и написать такое ":wq", это сохранит записи и закроет редактор вернув вас обратно в командную строку.

9. tail

Команда tail вообще просто волшебная! Она выводит 10 последних строк файла указанного файла, просто в терминал с командной строкой. При этом файл, естественно, никуда себе скачивать не нужно. Вот как можно ее применить:

tail log.txt

Эта команда выведет 10 последних строк файла log.txt, который находится в вашей рабочей директории. Или еще пример, находясь в корневой папке сайта выполните эту команду, чтоб поспотреть 10 последних строк файла dbconn.php:

tail bitrix/php_interface/dbconn.php

Но это еще не все - tail умеет "следить" за файлом в режим реального времени. Зачем это нужно, например, вы запустили на кроне скрипт, который результаты своей работы складывает в лог-файл. Как узнать продолжает ли скрипт рабату? Можно "следить" за лог-файлом и сразу увидеть, что в нем появляются новые строки. Вот так это можно сделать, передав команде параметр -F:

tail -F log.txt

Теперь вы в реальном времени будете видеть новые строки, добавляемые в лог вашим скриптом. Как только в файле появляется новая строка - все прежнее выведенное содержимое подвигается вверх и внизу появляется содержимое новой последней строки. Прервать выполнение этой и большинства других команд можно комбинацией клавиш Ctrl + Z

10. top

Представьте, ваш менеджер проектов говорит: "Мне звонил клиент и говорил, что его сайт подтормаживает". Что делать? Первым делом посмотреть, какие же процессы на сервере его так сильно нагружают. В этом как раз и будет полезна команда top. Она выводит список из отсортированных по "прожорливости" процессов на сервере. Вывод этот сделан в виде таблички. Каждый процесс имеет свой идентификатор (PID), создавшую этот процесс команду, сколько он выполняется времени, сколько % CPU он "ест", ну и другие данные.

Полезно узнать более подробно, какие команды выполняются в данный момент. Проблема в том, что если, например, сервер нагружает php-скрипт, то в табличке вы увидите просто команду /usr/bin/php в колонке COMMAND, но какой именно скрипт выполняется этой командой по умолчанию не выводится.

Для включения отображения более подробного вывода нужно жать кнопку "C" на клавиатуре и тогда, например, надпись /usr/bin/php развернется в /usr/bin/php -f /home/bitrix/www/bitrix/php_interface/full_catalog_export.php. Это будет знак того, что нужно оптимизировать работу скрипта full_catalog_export.php, чтоб он снизил нагрузку на сервер во время своего выполнения.

Выводы

Этот пост не претендует на развернутую документацию по описанным командам или какое-то подробное руководство. В первую очередь его цель - дать реальные кейсы работы с командной строкой удаленного сервера начинающим разработчикам, так как подобного материала в интернете мало или он написан на иностранном языке. Естественно, это не исчерпывающий список команд, которые могут понадобиться в работе, но описанные команды точно есть одними из самых часто используемых. Поэтому, спасибо за прочтение и желаем успехов в своих начинаниях!

Назад к списку статей
Подпишись на наш блог: