Основные Linux-команды для веб-разработчика
Руководитель проектов Дмитрий Мирошниченко специально для «Нетологии» составил список консольных команд, которые пригодятся начинающему веб-разработчику.
Веб-разработчикам рано или поздно приходится работать с сервером на Linux. Рассмотрим основные команды, которые понадобятся новичкам, на основе Linux дистрибутива Debian.
Общие моменты
Работа в линуксе для меня — это, прежде всего, работа в консоли. Если вы привыкли к графическому интерфейсу, будет сложно. Но зато потом, когда освоитесь, вы оцените, как это удобно.
Файловая система в линуксе немного отличается от виндовой. Тут нет привычных дисков С и D. Зато есть корень диска. Отмечается косой чертой / От него идет отсчет всех директорий. Например, в директории /home хранятся все домашние директории пользователей.
Для любой команды в линуксе есть встроенная справка. Вызывается man команда. Например, можно посмотреть справку по команде man.
Так выглядит встроенная справка в линуксе
В линуксе есть много способов сделать какое-либо действие. Можно пользоваться разными программами. Я рассмотрю лишь те, которыми пользуюсь сам и которые мне удобны. Для вас набор может быть другой. Помните, что это всего лишь один из вариантов.
Работа с сервером
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
Менеджер для работы с файлами. Идеологически противоречит работе в голой консоли, но с ним новичкам проще работать.
Классический двухпанельный 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 — простой и понятный язык программирования на котором можно писать всё что угодно, включая скрипты для администрирования.
Если вкратце, то это минимально необходимый набор. Буду рад вашим дополнениям в комментариях.
Полный текст статьи читайте на Нетология