Архив метки: сервер

Администрирование Linux

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

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

Администрирование Linux

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

  • Удаленный доступ;
  • Диагностика сети;
  • Мониторинг ресурсов системы;
  • Проверка работоспособности сервисов;
  • Просмотр логов;
  • Установка программного обеспечения.

Мы не будем рассматривать очень подробно каждую из тем, возможно, некоторые основы администрирования Linux были более детально рассмотрены в предыдущих записях, тогда на них будет ссылка. С первоначальной настройкой сервера обычно проблем не возникает. Можно использовать одну из известных панелей управления, например, панель управления VestaSP, которая позволяет все установить и настроить автоматически, но вам нужно следить за показателями системы и перенести на сервер файлы.

Удаленный доступ к серверу Linux

Чаще всего веб-мастера и администраторы используют для удаленного доступа и загрузки файлов на сервер протокол SSH и FTP. По SSH вы не только передавать файлы, но и выполнять на сервере различные команды Linux. Протокол FTP позволяет лишь загружать файлы на сервер, перемещать и переименовывать их. Если кратко, то, например, чтобы перенести файлы сайта с одного сервера на другой, сначала мы создаем архив с помощью tar:

tar cvzf backup.tar.gz /папка/с/файлами

Обратите внимание, что опцию p передавать не нужно, чтобы права на файлы не сохранились, затем, вам нужно будет установить права вручную. Когда архив готов, используем копирование scp для передачи его на сервер:

scp backup.tar.gz user@ip_сервера:/var/www/public_html/

Затем авторизуемся на сервере и распаковываем архив:

ssh user@ip_сервера

$ cd /var/www/public_html/

$ tar xvzf backup.tar.gz

После этого останется сменить владельца для распакованных данных на имя пользователя веб-сервера:

chown -R www-data /var/ww/public_html/project/

Большинство действий по администрированию сервера вам придется выполнять так что лучше понять как пользоваться ssh.

Диагностика сети Linux

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

ping ya.ru

Если команда правильно отрабатывает, и вы видите передачу пакетов на удаленный узел, значит все хорошо. Если же нет, хотелось бы понять причину. Проверьте, указан ли ip адрес и маска сети для этого подключения:

ifconfig

Убедитесь, что правильно задан шлюз доступа к сети:

ip route

Обычно, это может подсказать вам, что конфигурация сети выполнена неверно, например, компьютер не получает нужные данные по протоколу DHCP или заданы неправильные статические настройки. Также проблема может быть в DNS. Возможно, сеть есть, но сервер не может получить ip адрес на основе доменного имени, для проверки вы можете выполнить ping какого-либо внешнего ip:

ping 8.8.8.8

Если же сеть не работает, и она настроена правильно, то можно еще попытаться узнать на каком узле обрывается соединение. Для этого используется команда traceroute:

traceroute 8.8.8.8

Все эти данные помогут понять в чем была ошибка и как ее решить.

Мониторинг ресурсов системы

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

free -h

Естественно, что если свободно только 40-50 Мб, то этого системе очень мало и все будет работать очень медленно. Следующим шагом будет выяснить какой процесс потребляет больше всего памяти, для этого можно использовать команду htop:

htop

В утилите вы можете сортировать процессы по загрузке процессора, колонка %CPU% или по потреблению памяти %MEM%. Так вы можете очень просто понять в чем проблема и кто перегружает систему. Например, веб-сервер Apache потребляет слишком много памяти, поэтому, возможно, будет эффективнее использовать Nginx.

Также в некоторых случаях нас может интересовать загрузка диска Linux и какие именно процессы перегружают жесткий диск. Для этого применяется утилита iotop. Просто выполните утилиту без параметров:

iotop

Проверка работоспособности сервисов

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

sudo systemctl status httpd

В многочисленном выводе утилиты вы должны увидеть сообщение Active (running), это означает, что все хорошо и служба работает так как нужно. Возможно, также вам придется перезапустить службу:

sudo systemctl restart httpd

Или запустить ее, если она не была запущена до этого:

sudo systemctl start httpd

Если служба не запустилась, то вы можете посмотреть информацию об этом с помощью команды status или же выполнить:

journalctl -xe

Просмотр логов

Если какой-либо сервис или системный компонент не работает, то первое что нужно сделать — это смотреть логи. Если не помогает — включить режим отладки и смотреть логи. В 90% вы найдете ответ почему ничего не работает в логах программы. Логи всех служб и системные логи находятся в папке /var/log/. Некоторые службы создают отдельные папки для своих файлов, например, /var/log/nginx или /var/log/apache.

Если в обычном логе вы не нашли решение, то можно переключить программу в режим отладки или включить отображение максимально подробной информации. Обычно это дается в конфигурационном файле программы. Приводить конкретные примеры нет смысла, поскольку у каждого сервиса все по-другому. Но рассмотрим несколько команд, которые вы можете использовать:

tail -f /путь/к/лог/файлу

С помощью этой команды вы можете в реальном времени просматривать изменения в конце лог файла. Если опцию -f не указывать, то команда tail покажет десять последних строк из лога:

tail /путь/к/лог/файлу

Также для просмотра лог файла вы можете использовать любой текстовый редактор или утилиту cat.

Установка программного обеспечения

Установка программного обеспечения, одна из распространенных задач администрирования. В Linux большинство программ можно установить из официальных или сторонних репозиториев. Некоторые программы нужно собирать из исходников. Для установки софта из репозиториев используется пакетный менеджер. Существуют два основных пакетных менеджера, которые применяются на серверах, это yum, который используется в CentOS и apt, который применяется в Ubuntu. Работают пакетные менеджеры похожим образом и все их мы рассматривали в отдельных статьях, смотрите установка программ CentOS и установка программ Ubuntu. Например, чтобы установить пакет в Ubuntu используйте такую команду:

sudo apt install имя_пакета

А в CentOS/RedHat:

sudo yum install имя_пакета

Для удаления программы используется команда remove вместо install. Но что еще более важно для серверов обновление программ. Никогда не отключайте автоматическое обновление, и старайтесь следить, чтобы система была в самом актуальном состоянии. Нужно обновлять все программные продукты, поскольку в них постоянно обнаруживаются новые уязвимости и следует получить вовремя исправления для них.

Выводы

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



2017-03-12T19:00:23
Сервер

Установка FTP на Ubuntu 20.04

FTP или File Transfer Protocol — это достаточно древний, но в то же время надёжный и проверенный протокол выгрузки файлов на удалённый сервер или их скачивания. Также иногда этот протокол применяется веб-мастерами для управления файлами или организации хранилища данных.

В этой статье мы рассмотрим, как выполняется установка FTP на Ubuntu 20.04, как настроить все необходимые компоненты, в том числе и защищённое соединение. Мы будем использовать FTP-сервер VSFTPD или Very Secure FTP Daemon, который обеспечивает самую надёжную защиту от уязвимостей.

Читать

Установка LAMP в CentOS 7

Ни для кого не секрет, что в наше время большинство сайтов интернета работают на основе веб-сервера Apache, абазы данных MySQL и серверного языка программирования — PHP. Эту группу программного обеспечения принято называть аббревиатурой LAMP (Linux Apache, MySQL, PHP).

CentOS — это серверная операционная система, поэтому она устанавливается на множество VPS, поддерживающих сайты, поэтому часто бывает необходимость установить LAMP CentOS. Это совсем не сложно, но требует определенных знаний. В этой статье мы очень подробно рассмотрим как выполняется установка Lamp CentOS 7, а также как выполнить минимальную настройку сервера для работы.

Читать

Авторизация по ключу SSH

SSH или Secure Shell — это зашифрованный протокол, который часто используется для взаимодействия и удаленного управления серверами. Если вы захотите что-либо сделать на удаленном сервере, скорее всего, вам придется воспользоваться SSH и работать через терминал.

В SSH существует несколько способов авторизации. Вы можете каждый раз вводить пароль пользователя или использовать более безопасный и надежный способ — ключи SSH. Что самое интересное, он более удобен для применения, вам даже не нужно будет вводить пароль. В этой статье мы рассмотрим как настраивается авторизация по ключу SSH.

Как работают ключи SSH?

SSH сервер может выполнять аутентификацию пользователей с помощью различных алгоритмов. Самый популярный — это аутентификация по паролю. Он достаточно прост, но не очень безопасный. Пароли передаются по безопасному каналу, но они недостаточно сложны для противостояния попыткам перебора. Вычислительная мощность современных систем в сочетании со специальными скриптами делают перебор очень простым. Конечно, существуют другие способы дополнительной безопасности, например, fail2ban, но аутентификация по ключу SSH более надежна.

Каждая пара ключей состоит из открытого и закрытого ключа. Секретный ключ сохраняется на стороне клиента и не должен быть доступен кому-либо еще. Утечка ключа позволит злоумышленнику войти на сервер, если не была настроена дополнительная аутентификация по паролю.

Открытый ключ используется для шифрования сообщений, которые можно расшифровать только закрытым ключом. Это свойство и используется для аутентификации с помощью пары ключей. Открытый ключ загружается на удаленный сервер, к которому необходимо получить доступ. Его нужно добавить в специальный файл ~/.ssh/authorized_keys.

Когда клиент попытается выполнить проверку подлинности через этот ключ, сервер отправит случайное сообщение для проверки, клиент шифрует его с помощью закрытого ключа и отправляет обратно. Дальше сервер проверяет получится ли его расшифровать с помощью открытого ключа и если да — аутентификация пройдена.

Как создать ключи SSH?

Сначала необходимо создать ключи ssh для аутентификации на локальном сервере. Для этого существует специальная утилита ssh-keygen, которая входит в набор утилит OpenSSH. По умолчанию она создает пару 2048 битных RSA ключей, которая подойдет не только для SSH, но и для большинства других ситуаций.

Итак, генерация ключей ssh выполняется командой:

ssh-keygen

Утилита предложит вам выбрать расположение ключей. По умолчанию ключи располагаются в папке ~/.ssh/. Лучше ничего не менять, чтобы все работало по умолчанию и ключи автоматически подхватывались. Секретный ключ будет называться id_rsa, а публичный id_rsa.pub.

Затем утилита предложит ввести пароль для дополнительного шифрования ключа на диске. Его можно не указывать, если не хотите. Использование дополнительного шифрования имеет только один минус — необходимость вводить пароль, и несколько преимуществ:

  • Пароль никогда не попадет в сеть, он используется только на локальной машине для расшифровки ключа. Это значит что перебор по паролю больше невозможен.
  • Секретный ключ хранится в закрытом каталоге и у клиента ssh нет к нему доступа пока вы не введете пароль;
  • Если злоумышленник хочет взломать аутентификацию по ключу SSH, ему понадобится доступ к вашей системе. И даже тогда ключевая фраза может стать серьезной помехой на его пути.

Но все же, это необязательное дополнение и если не хотите, то вы можете просто нажать Enter. Тогда доступ по ключу ssh будет выполняться автоматически и вам не нужно будет что-либо вводить.

Теперь у вас есть открытый и закрытый ключи SSH и вы можете использовать их для проверки подлинности. Дальше нам осталось разместить открытый ключ на удаленном сервере.

Загрузка ключа на сервер

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

Самый простой способ скопировать ключ на удаленный сервер — это использовать утилиту ssh-copy-id. Она тоже входит в пакет программ OpenSSH. Но для работы этого метода вам нужно иметь пароль доступа к серверу по SSH. Синтаксис команды:

ssh-copy-id username@remote_host

При первом подключении к серверу система может его не распознать, поэтому вам нужно ввести yes. Затем введите ваш пароль пользователя на удаленном сервере. Утилита подключится к удаленному серверу, а затем использует содержимое ключа id.rsa.pub для загрузки его на сервер в файл ~/.ssh/authorized_keys. Дальше вы можете выполнять аутентификацию с помощью этого ключа.

Если такой способ по какой-либо причине для вас не работает, вы можете скопировать ключ по ssh вручную. Мы создадим каталог ~/.ssh, а затем поместим наш ключ в файл authorized_keys с помощью символа >>, это позволит не перезаписывать существующие ключи:

cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Здесь вам тоже нужно набрать yes, если вы подключаетесь к новому серверу, а затем ввести пароль. Теперь вы можете использовать созданный ключ для аутентификации на сервере:

 ssh username@remote_host

Если вы не захотели создать ssh ключ с доступом по паролю, то вы сразу же будете авторизованы, что очень удобно. Иначе, сначала вам придется ввести фразу-пароль для расшифровки ключа.

Отключение проверки пароля

Если пароль больше не будет использоваться, то для увеличения безопасности системы лучше его вовсе отключить. Но убедитесь, что ключ надежно сохранен и вы его не потеряете, потому что по паролю вы больше не войдете. Авторизуйтесь на сервере, затем откройте конфигурационный файл /etc/ssh/sshd_config и найдите там директиву PasswordAuthenticatin. Нужно установить ее значение в No:

sudo vi /etc/ssh/sshd_config

PasswordAuthentication no

Теперь сохраните файл и перезапустите службу ssh:

sudo service ssh restart

Дальше будет возможно только подключение по ключу ssh, пароль не будет приниматься.

Выводы

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



2017-02-08T17:59:19
Сервер

Установка MySQL CentOS 7

MySQL — это одна из самых популярных систем управления базами данных, используемых как на производстве, так и для хранения данных веб-сайтов и приложений. Однако после перехода MySQL в собственность Oracle, вместо нее везде по умолчанию используется MariaDB. Это достойная замена, если вам нужна только базовая функциональность, но если вы хотите получить все тонкости и возможности MySQL, вам нужна именно версия от Oracle.

Но из официальных репозиториев MySQL была удалена. Поэтому вам придется искать другие источники. В этой статье мы рассмотрим как выполняется установка MySQL CentOS 7. Причем в версии от Oracle, а не MariaDB.

Подготовка системы

Перед тем как перейти к установке MySQL в CentOS нужно выполнить несколько настроек и проверить все ли правильно в вашей системе. Сначала убедитесь, что у вас установлено имя хоста. Для этого выполните команду:

hostname

$ hostname -f

Первая команда покажет короткое имя хоста, вторая выведет полное имя FQDN. Если все правильно, осталось обновить систему до самой последней версии:

sudo yum update

Установка MySQL в CentOS 7

Как я уже сказал, в официальных репозиториях пакета нет, поэтому вам придется добавить репозиторий сообщества. Вам нужно открыть сайт repo.mysql.com и скачать самую последнюю версию файла репозитория. Например, на данный момент это mysql57-community-release-el7.rpm.

Для установки этой версии вы можете использовать команду:

wget http://repo.mysql.com/mysql57-community-release-el7.rpm

sudo rpm -ivh mysql57-community-release-el7.rpm

Дальше обновите список репозиториев:

sudo yum update

Теперь вам осталось осталась установка mysql centos 7 и запуск самой службы:

sudo yum install mysql-server

$ sudo systemctl start mysqld

Настройка MySQL CentOS 7

По умолчанию MySQL будет слушать локальный хост 127.0.0.1. Если вы хотите, чтобы сервер был доступен из интернета, необходимо изменить несколько настроек в файле /etc/my.cnf. Однако, не рекомендуется делать сервер баз данных доступным через интернет. Чтобы указать внешний ip адрес, который нужно прослушивать используется опция bind_address:

sudo vi /etc/my.cnf

bind_address = 192.168.1.58

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

mysql_secure_installation

Сначала нужно ввести пароль суперпользователя. По умолчанию система генерирует случайный пароль во время установки. Чтобы его посмотреть откройте еще один терминал и выполните:

grep 'temporary password' /var/log/mysqld.log

Затем система сообщит, что ваш пароль устарел и нужно его поменять, введите два раза новый пароль:

Затем укажите что пароль менять не нужно. Отключите анонимных пользователей. Запретите удаленный вход от имени пользователя root:

Удалите тестовые таблицы:

И обновите таблицы привелегий:

Не рекомендуется постоянно работать с базами данных от имени пользователя root. Поэтому нужно создать обычного пользователя. Для этого сначала войдите в консоль управления с правами root:

 mysql -u root -p

Утилита, запросит пароль, введите пароль root, который задали на предыдущем этапе, дальше вы сможете выполнять команды mysql:

mysql>

Давайте создадим пользователя dbuser для базы данных dbase, с паролем password. Вам нужно заменить эти значения на свои. Сначала создаем базу данных:

mysql> create database dbase;

mysql> create user 'dbuser'@'localhost' identified by 'password';

mysql> grant all on dbase.* to dbuser' identified by 'password';

Дальше создадим первую таблицу в нашей новой базе данных, но перед этим войдем от имени  только что созданного пользователя:

mysql -u testuser -p

Переключите на новую базу данных:

mysql> use dbase

Затем создайте таблицу:

create table customers (customer_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, first_name TEXT, last_name TEXT);

Готово. Теперь вы знаете как выполняется установка MySQL CentOS 7. Давайте еще рассмотрим как сбросить пароль в MySQL.

Сброс пароля пользователя root в MySQL

Иногда может случиться что вы забудете пароль пользователя root. Его можно очень просто сбросить. Сначала остановите запущенный экземпляр программы:

sudo systemctl stop mysqld

Затем запустите сервис в безопасном режиме, для этого нужно установить специальную опцию запуска:

systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"

В этом режиме программа не будет запрашивать пароль для подключения. Подключитесь от имени суперпользователя и измените пароль:

mysql -u root

mysql> use mysql;

mysql> update user SET PASSWORD=PASSWORD("пароль") WHERE USER='root';

mysql> flush privileges;

Затем удалите эту переменную:

sudo systemctl unset-environment MYSQLD_OPTS

Осталось снова запустить сервер в обычном режиме:

sudo systemctl start mysqld

Улучшение производительности mysql

Настройка mysql по умолчанию не всегда оптимальна. Учитывая ваши особенности использования баз данных, можно улучшить ее производительность. Скрипт MySQL Tuner написанный на Perl и предоставляет рекомендации по настройке MySQL в зависимости от вашей нагрузки. Перед тем как запускать скрипт, дайте серверу поработать не менее чем 24 часа. Чем дольше будет время работы, тем точнее инструкции.

Скачайте скрипт:

wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl

Затем запустите:

perl ./mysqltuner.pl

После запуска вам будет предложено ввести пароль суперпользователя, а затем выведен список рекомендаций по настройке и замечания по безопасности. Это отличная точка для оптимизации сервера.

Удаление mysql

Если вы хотите удалить MySQL CentOS 7, достаточно выполнить такую команду:

sudo yum remove mysql-server

Выводы

В этой статье мы рассмотрели как установить mysql centos 7. Теперь вы можете установить эту программу на своем сервере или домашнем компьютере. Также мы поговорили как выполняется базовая настройка mysql centos 7, поэтому теперь вы сможете получить полностью рабочую систему. Если у вас остались вопросы, спрашивайте в комментариях!



2017-02-01T13:25:57
Сервер

Установка VestaCP на Ubuntu

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

В этой статье мы рассмотрим как выполняется начальная настройка и установка VestaCP на Ubuntu. Панель позволяет в автоматическом режиме установить все программное обеспечение и подготовить его к работе. Но сначала давайте разберем системные требования программы.

Читать