Основные Linux-команды для веб-разработчика

Руководитель проектов Дмитрий Мирошниченко специально для «Нетологии» составил список консольных команд, которые пригодятся начинающему веб-разработчику.

Веб-разработчикам рано или поздно приходится работать с сервером на Linux. Рассмотрим основные команды, которые понадобятся новичкам, на основе Linux дистрибутива Debian.

Общие моменты

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

Файловая система в линуксе немного отличается от виндовой. Тут нет привычных дисков С и D. Зато есть корень диска. Отмечается косой чертой / От него идет отсчет всех директорий. Например, в директории /home хранятся все домашние директории пользователей.

Для любой команды в линуксе есть встроенная справка. Вызывается man команда. Например, можно посмотреть справку по команде man.

man man.jpg
Так выглядит встроенная справка в линуксе

В линуксе есть много способов сделать какое-либо действие. Можно пользоваться разными программами. Я рассмотрю лишь те, которыми пользуюсь сам и которые мне удобны. Для вас набор может быть другой. Помните, что это всего лишь один из вариантов.

Работа с сервером

apt-get

Основной менеджер пакетов в дебиане.

apt-get update - обновление базы пакетов

apt-cache search ключевое_слово - поиск информации в базе пакетов по названию и описанию

apt-get install пакет - установка пакета из репозитория, зависимости также подтянутся

apt-get remove пакет - удаление пакета из системы

service

Команда работы с сервисами. Их можно запускать, останавливать, перезапускать и смотреть статус работы.

service nginx restart - перезапуск Nginx

service nginx reload - применение новых конфигов без перезапуска сервера

service php7.0-fpm restart - перезапуск php-fpm обработчика

service php7.0-fpm reload - аналогично Nginx.

PHP

Php-интерпретатор, консольная версия. Полезна для запуска различных скриптов в кроне (Cron). Например, парсеров.

python

Интерпретатор для Python-скриптов. Аналогично PHP.

mc

Менеджер для работы с файлами. Идеологически противоречит работе в голой консоли, но с ним новичкам проще работать.

mc1.jpg
Классический двухпанельный midnight commander в действии

mc2.jpg
Можно в одной панели подключиться к удалённому серверу и перекидывать файлы. Работает медленно, но хорошо видно что происходит

Cron

Запуск заданий по расписанию. Незаменимая вещь при автоматизации.

Nginx

Быстрый веб-сервер. Я использую его на своих проектах.

В директории /etc/nginx/sites-available находятся конфигурационные файлы для сайтов.

service nginx restart перезапуск Nginx

service nginx reload - применение новых конфигов без перезапуска сервера

service nginx stop - остановка веб-сервера

Apache

Веб-сервер чуть медленнее, чем Nginx. Один из самых популярных в интернете.

Одна из ключевых особенностей — .htaccess файлы дополнительной конфигурации. Можно управлять отдельными папками. Размещаете этот файл в папке и прописываете в нём правила.

Этим хорош и плох Apache одновременно. Хорош, тем что можно гибко настраивать каждую папку, плох тем, что конфигурационные файлы разбросаны по разным местам.

service apache2 restart - перезапуск Apache

service apache2 reload - применение новых конфигов без перезапуска сервера.

service apache2 stop - остановка веб-сервера

git

Популярная система контроля версий. Без неё невозможна современная разработка. Базовые команды можно освоить за 15 минут прямо на сайте.

Перенос данных

rsync

Синхронизирует две директории. Можно синхронизировать директории на разных серверах через SSH.

Аналог push в git (закачать изменения на удалённый сервер):

rsync -aP ~/dir1 username@remote_host: destination_directory

-aP - архивация трафика плюс показывать прогресс работы

~/dir1 - директория, откуда нужно залить изменения

username - имя пользователя на удалённом сервере

remote_host — ip или hostname удалённого сервера

destination_directory - директория, куда нужно залить изменения

Аналог pull в git (закачать изменения на наш сервер):

sync -aP username@remote_host: destination_directory place_to_sync_on_local_machine

-aP - архивация трафика плюс показывать прогресс работы

username - имя пользователя на удалённом сервере

remote_host - ip или hostname удалённого сервера

destination_directory - директория откуда нужно залить изменения

place_to_sync_on_local_machine - директория, куда нужно залить изменения

Чтобы исключить какие-либо директории:

--exclude=pattern_to_exclude source destination …

Нестандартный порт можно указать через параметр -e:

-e «ssh -p11111»

lftp

Перенос файлов между серверами по протоколу ftp.

Копирование всех файлов без исключений директорий:

lftp -u name -e 'mirror to from' server

name — имя пользователя на удалённом сервере

to - директория, куда надо копировать файлы

from - директория, откуда надо копировать на удалённом сервере

server - адрес или хостнейм удалённого сервера с которого нужно получить данные

Копирование всех файлов, исключая директорию tmp:

lftp -u name -e 'mirror --exclude tmp to from' server

name - имя пользователя на удалённом сервере

to - директория, куда надо копировать файлы

from - директория, откуда надо копировать на удалённом сервере

server - адрес или хостнейм удалённого сервера с которого нужно получить данные

Копирование файлов по одному между серверами:

lftp -u name -e «get tmp/tm.sql» server

name - имя пользователя на удалённом сервере

tmp/tm.sql - путь к файлу, который нужно скопировать

server - адрес или хостнейм удалённого сервера с которого нужно получить данные


Работа с базами данных

mysql

Команда для работы с базами данных. Например, можно развернуть бекап:

mysql -u username -p dbname filename.sql

username - имя пользователя базы данных

-p - требовать ввести пароль

dbname - название базы данных

filename.sql - дамп базы данных

mysqldump

Создаёт дамп базы данных.

mysqldump --add-drop-table --default-character-set=utf8 -u username -p dbname filename.sql

--add-drop-table - удалять таблицы, если существуют с таким-же именем

--default-character-set=utf8 - кодировка utf8

username - имя пользователя базы данных

-p - требовать ввести пароль

dbname - имя базы данных

filename.sql - файл с дампом базы

Работа с архивами

tar

Создаёт и распаковывает тар архивы.

Сделать архив:

tar -cvf archive.tar file1.txt file2.jpg

-cvf - создать новый архив в файл

archive.tar - название архива

file1.txt file2.jpg - файлы, которые будут упакованы. Если нужно упаковать все файлы в директории нужно указать *

Для распаковки архива:

tar -xvf archive.tar

-xvf - распаковать архив из файла

archive.tar - название архива

unzip

unzip archive.zip - распакует архив archive.zip в текущую директорию

Работа с файлами

cp - копирование файлов и директорий.

mv - перенос файлов и директорий.

rm - удаление файлов и директорий.

chmod - изменение прав доступа на файл или директорию. Права можно задавать как цифрами в двоичной или десятичной системе счисления, так и в понятном для человека.

chmod.jpg
Три вариант записи прав пользователя

chown - изменение владельца файла или директории.

Правка файлов

nano — простой текстовый редактор. Идёт по умолчанию в куче дистрибутивов. В большинстве случаев его хватает для правки конфигов.

vim — «православный» текстовый редактор. Сложный для восприятия новичками. Но если если изучить, вы будете неудержимы и вас будут уважать все линкусоиды.

Автоматизация

bash — популярная командная оболочка. Можно писать последовательные команды для выполнения. Часто повторяемые рутинные операции хорошо писать в баш скрипты. Пусть за вас потеет машина. Основные возможности описаны на bash.im.

Python — простой и понятный язык программирования на котором можно писать всё что угодно, включая скрипты для администрирования.

Если вкратце, то это минимально необходимый набор. Буду рад вашим дополнениям в комментариях.

Полный текст статьи читайте на Нетология