Меня зовут Илья Ушаков, я уже 7 лет работаю бэкенд-разработчиком. В статье расскажу про консольные команды и утилиты, которые использую в повседневной работе. Команды сгруппированы по областям применения, добавлено небольшое описание и ссылки для дальнейшего изучения. Будет полезно начинающим разработчикам.

Установка приложений

Когда я устроился на новую работу, мне выдали новый компьютер. Система только установлена, надо поставить IDE и софт для локальной разработки. Что-то можно ставить только через обычный пакетный менеджер apt, но это бывает неудобно: надо добавить репозиторий, обновиться, а потом только можно установить нужный пакет.

apt install nginx

Значительно легче ставить софт через snap. Snap — это особый вид пакетов, которые распространяются вместе со своими зависимостями, поэтому проблемы при установке быть не должно. В магазине приложений есть всё, что может пригодиться для разработки. Установка программы происходит в одну команду. Это удобно.

snap install docker
snap install sublime-text --classic
snap install phpstorm --classic

Работа с Git

Git в качестве системы управления версиями уже стал стандартом в индустрии.

Не забывайте любые результаты своей работы сразу отправлять (пушить) в репозитории в Github, Gitlab или Bitbucket. Если бы я придерживался этого правила с самого начала своей работы, я бы не потерял тонну полезных наработок, которые пропали вместе со старым ноутбуком. Кстати, не забывайте в репозиторий добавлять readme файл с коротким описанием проекта. Это сильно поможет через пару лет понять, что делает этот проект.

А еще, если перед собеседованием вас попросят показать примеры кода, можно будет отправить ссылки на свои репозитории.

git clone
git checkout -b feature-1
git add .
git commit -m "my changes"
git push

Когда только начинаешь учить новую тулзу, очень помогает cheatsheet с примерами команд.

Работа с удаленным сервером

В какой-то момент приходятся задеплоить свой проект на сервер. Здесь я подключаюсь к серверу по SSH, устанавливаю инфраструктурные зависимости, редактирую конфиги через nano, смотрю логи через tail.

ssh [email protected]
nano website.conf
tail -f logs/debug.log

Одно время работал с хостингом, где был лимит на количество запущенных процессов, после чего начинал отдавать 500 ошибку. А я хотел подключиться по SSH, запустить несколько команд и параллельно читать логи через tail. В то время меня спасала команда tmux. Она позволяет запускать несколько терминалов в рамках одного окна и в рамках одного подключения.

tmux
myalt
Как выглядит консоль после команды tmux

По-хорошему для деплоя приложений надо настраивать CI/CD процессы. Но в начале пути разработчика это может быть сложно, и тогда достаточно заливать проект через SCP. Эта команда может копировать файлы с локального компьютера на удаленный сервер через SSH.

scp -r /local/directory [email protected]:/remote/directory

Для мониторинга нагрузки на машину, я использую команду htop. Она показывает, как сейчас используются ресурсы по памяти, процессору и сети.

htop
Скриншот окна консоли после выполнения команды htop
htop

Развертывание проектов через Docker-compose

Для локальной разработки проектов удобно использовать docker-compose. С настроенным конфигом не надо беспокоиться об инфраструктуре, локальное поднятие проекта выполняется за одну команду.

Безусловно, все необходимое можно поднять вручную. Но бывает, что разные проекты требуют разных зависимостей. Например, в одном вам нужен mysql 5.7, в другом mysql 8, а в третьем вообще mongoDB. В таких случаях docker-compose спасает и сильно упрощает работу.

И если разворачивать небольшие проекты на сервере через Docker может быть чересчур, то для локальной разработки это очень удобно. Локально нет смысла углубляться в то, как написать лучший контейнер для вашего приложения. Достаточно использовать дефолтные образы.

docker-compose up
docker-compose logs -f
docker-compose exec -it bash myapp

Сheatsheet по docker-compose.

Работа с вебхуками через ngrok

Одно время я писал много интеграций между веб-сервисами. Единственный вариант, на что там обычно можно завязаться — вебхуки.

Вебхуки (webhooks) — это когда одно приложение отправляет HTTP-запросы другому при возникновении каких-либо событий. Например, если вы пишете своего телеграм-бота, то телеграм может отправлять вам вебхуки о новых сообщения. Так бот сможет отвечать на сообщения клиентов.

Стороннему сервису нужен URL, куда отправлять эти вебхуки. И тут 2 варианта, как получить этот URL:

  1. Дать свой URL от production
  2. Использовать ngrok

Если во время разработки вы будете получать запросы на вашем production-приложении, то и дебажить тоже придется там. Это неудобно.

Гораздо проще запустить приложение локально и через ngrok получить публичный адрес, куда сторонний сервис будет отправлять запросы.

myalt
Результат выполнения команды ngrok

Это основные случаи, когда мне, как бэкендеру, приходится использовать консоль. Конечно, бывают и другие ситуации, но знание этих команд помогает сэкономить много времени в работе.

Бэкенд-разработчики умеют много чего, но всегда можно больше

Мы расскажем, чему вы научитесь после профессии «Бэкенд-разработчик» в HTML Academy — просто заполните форму и мы перезвоним в удобное время.

Хочу консультацию

Нажатие на кнопку — согласие на обработку персональных данных