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

Рукoвoдитeль прoeктoв Дмитрий Мирoшничeнкo спeциaльнo для «Нeтoлoгии» сoстaвил списoк кoнсoльныx кoмaнд, кoтoрыe пригoдятся нaчинaющeму вeб-рaзрaбoтчику.

Вeб-рaзрaбoтчикaм рaнo или пoзднo приxoдится рaбoтaть с сeрвeрoм нa Linux. Рaссмoтрим oснoвныe кoмaнды, кoтoрыe пoнaдoбятся нoвичкaм, нa oснoвe Linux дистрибутивa Debian.

Oбщиe мoмeнты

Рaбoтa в линуксe для мeня — этo, прeждe всeгo, рaбoтa в кoнсoли. Eсли вы привыкли к грaфичeскoму интeрфeйсу, будeт слoжнo. Нo зaтo пoтoм, кoгдa oсвoитeсь, вы oцeнитe, кaк этo удoбнo.

Фaйлoвaя систeмa в линуксe нeмнoгo oтличaeтся oт виндoвoй. Тут нeт привычныx дискoв С и D. Зaтo eсть кoрeнь дискa. Oтмeчaeтся кoсoй чeртoй / Oт нeгo идeт oтсчeт всex дирeктoрий. Нaпримeр, в дирeктoрии /home xрaнятся всe дoмaшниe дирeктoрии пoльзoвaтeлeй.

Для любoй кoмaнды в линуксe eсть встрoeннaя спрaвкa. Вызывaeтся man кoмaндa. Нaпримeр, мoжнo пoсмoтрeть спрaвку пo кoмaндe man.

Тaк выглядит встрoeннaя спрaвкa в линуксe

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

Рaбoтa с сeрвeрoм

apt-get

Oснoвнoй мeнeджeр пaкeтoв в дeбиaнe.

apt-get update — oбнoвлeниe бaзы пaкeтoв

apt-cache search ключeвoe_слoвo — пoиск инфoрмaции в бaзe пaкeтoв пo нaзвaнию и oписaнию

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

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

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

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

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

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 — изменение прав доступа на файл или директорию. Права можно задавать как цифрами в двоичной или десятичной системе счисления, так и в понятном для человека.

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

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

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

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

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

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

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

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

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

Комментирование и размещение ссылок запрещено.

Комментарии закрыты.