Введение
Для настройки практически любого сервера требуется выполнить ряд стандартных шагов, которые мало чем отличаются в различных ситуациях. Какой бы функционал вы не готовили, вам придется настроить правильное время и включить его автообновление. Без установки сетевых настроек я вообще не представляю работу современного сервера. В голову не приходит ни один пример. Один и тот же набор настроек практически на автомате выполняется после установки. Своими наработками по этой теме я хочу поделиться с вами — то, что я в первую очередь настраиваю на новоиспеченном сервере centos.
Еще раз обращаю внимание, что данные настройки я делаю на виртуальном сервере. Если у вас железный сервер, то рекомендуется выполнить еще некоторые настройки, о которых я здесь не упоминаю
К ним относится, к примеру, настройка и проверка отказоустойчивости при выходе одного из дисков. Отключение регулярной проверки массива mdadm и др.
Подключаем сторонний репозиторий
Если говорить о дистрибутивах, основанных на Red Hat Linux, самым популярным репозиторием, рекомендуемым для подключения, является Extra Packages for Enterprise Linux (EPEL). На CentOS-серверах, развернутых из наших шаблонов, этот репозиторий уже подключен. В случае, если операционная система установлена с нуля, подключить EPEL достаточно просто:
RPM-пакет с настройками EPEL уже содержится в составе официального репозитория CentOS, поэтому все необходимые файлы и GPG-ключи загрузятся автоматически. Если просмотреть содержимое файла /etc/yum.repos.d/epel.repo, то мы увидим уже знакомые параметры:
Скриншот №1. Параметры файла
Другой распространенный репозитарий — Remi`s RPM repository, содержащий актуальные версии пакетов PHP-стека. Репозиторий EPEL должен быть подключен в ОС, так как пакеты Remi зависят от пакетов репозитория EPEL. Детальную информацию можно найти на сайте https://rpms.remirepo.net/. Для подключения достаточно скачать RPM-пакет и запустить его установку:
Запустим yum repolist и убедимся, что репозитории зарегистрированы в операционной системе:
Скриншот №2. Yum repolist
По умолчанию включен только репозиторий remi-safe — он содержит пакеты, не замещающие пакеты дистрибутива операционной системы, чем минимизируются возможные конфликты и проблемы в работе. Если посмотреть список REPO-файлов, которые появились, увидим достаточно большой перечень:
Скриншот №3. Список REPO-файлов
Эти репозитории отключены и должны включаться администратором сервера в тех случаях, когда это требуется. Чтобы включить репозиторий на постоянной основе, устанавливаем параметр enabled=1 в соответствующем REPO-файле. Для разовых операций используем параметр —enablerepo=repo_name в соответствующей команде yum, например:
Одним из широко распространенных ранее сторонних репозиториев был RepoForge (RPMForge), но, к сожалению, на данный момент он уже не поддерживается. Хотя физически репозиторий доступен, пакеты в нем уже давно не обновляются, в связи с чем использовать его не рекомендуется. Если все же по каким-то причинам требуется им воспользоваться, подключить его тоже достаточно просто — на странице http://repoforge.org/use/ находим ссылку на требуемую версию, скачиваем пакет и устанавливаем. Например, для CentOS 7:
Скриншот №4. Версия для CentOS 7
191028
Санкт-Петербург
Литейный пр., д. 26, Лит. А
+7 (812) 403-06-99
700
300
ООО «ИТГЛОБАЛКОМ ЛАБС»
700
300
Происхождение пакета
Иногда хочется знать, где вы получили пакет или пакеты, сколько в вашей системе пакетов от конкретного репозитория или поставщика. Есть несколько параметров поиска, которые можно использовать. Хотя они не 100% совершенны, тем не менее они могут помочь. Большинство пакетов из репозиториев имеют теги с идентификатором в строке Release. Например rpmforge использует rf в качестве идентификатора. Вы можете использовать это, чтобы посмотреть, что у вас установлено оттуда:
rpm -qa release="*rf*"
а если вы хотите увидеть, как много пакетов у вас установлено от Johnny Hughes-а можно использовать:
rpm -qa packager="Johnny*"
Этот метод работает на большинстве категорий вида rpm -qi
rpm -qa
Данная команда выдаст весь список установленных пакетов.
SSH и передача файлов
SSH (Secure Shell) — защищенный протокол для удаленного доступа к компьютерам. В *nix-подобных системах (Linux, macOS) ssh-клиент обычно установлен по умолчанию и подключаться можно напрямую из терминала. Для подключения нужно указать адрес сервера и, опционально, имя пользователя и порт.
Простейший вариант — подключение по паролю. В таком случае система будет запрашивать пароль каждый раз при подключении.
Для подключения без ввода пароля можно использовать ключи: приватный (закрытый) и публичный (открытый). Эти ключи связаны друг с другом таким образом, что зашифровав информацию одним ключом, расшифровать ее можно только другим.
Для создания ключей необходимо выполнить команду:
Опционально можно ввести passphrase.
Будут созданы два файла:
~/.ssh/id_rsa — приватный ключ. Его нельзя никому передавать.
~/.ssh/id_rsa.pub — публичный ключ. Можно спокойно распространять.
Для загрузки публичного ключа на сервер нужно выполнить на локальной машине команду:
Другой вариант — добавить на удаленной машине в файл ~/.ssh/authorized_keys содержимое публичного ключа.
Для более удобной работы с ключами можно добавить ключ к ssh-агенту. После этого для него больше не будет спрашиваться passphrase (если был задан) и не нужно будет вводить ключ вручную — он будет автоматически использован при соответствующем подключении.
ssh-agent привязан к сессии. Поэтому, например, если перезагрузить компьютер, то ключи нужно будет добавлять в агент заново.
Протокол SSH можно использовать для передачи файлов на удалённый сервер и загрузки их оттуда.
Пользователи и группы
ОС UNIX предлагает базовые средства защиты и совместного использования файлов на основе отслеживания пользователя и группы, владеющих файлом, трех уровней доступа (для пользователя-владельца, для пользователей группы-владельца, и для всех остальных пользователей) и трех базовых прав доступа к файлам (на чтение, на запись и на выполнение). Базовые средства защиты процессов основаны на отслеживании принадлежности процессов пользователям.
Для отслеживания владельцев процессов и файлов используются числовые идентификаторы. Идентификатор пользователя и группы — целое число (обычно) в диапазоне от 0 до 65535. Присвоение уникального идентификатора пользователя выполняется при заведении системным администратором нового регистрационного имени. Среди пользователей системы выделяется один пользователь — системный администратор или суперпользователь, обладающий всей полнотой прав на использование и конфигурирование системы. Это пользователь с идентификатором 0 и регистрационным именем root.
Учетные записи пользователей, как и большинство другой информации о конфигурации системы UNIX, по традиции, представлена в виде текстовых файлов: /etc/passwd, /etc/group и /etc/shadow (в системах с теневым хранением паролей).
Основные команды для работы с пользователями и группами (часть команд указанных ниже будет требовать sudo для выполнения):
В современных дистрибутивах Linux вместо root аккаунта для администрирования как правило используется утилита sudo (substitute user and do), позволяющая выполнить команду от лица пользователя root.
Все настройки sudo находятся в файле /etc/sudoers. Здесь можно настроить очень много параметров, начиная от кому будет позволено выполнять команды от имени суперпользователя и заканчивая ограничением набора доступных команд. Неправильный синтаксис, добавленный в этот файл, может полностью нарушить распределение прав между пользователями. Потому для работы с этим файлом используется утилита visudo, которая открывает файл в обычном текстовом редакторе, но во время сохранения файла проверяет его синтаксис. Это позволяет избежать ошибок в конфигурации.
System config network tui
Для управления сетевыми настройками в CentOS можно воспользоваться графической утилитой nmtui. Проверить ее наличие в системе очень просто. Достаточно запустить ее в консоли:
Если она у вас не установлена, то исправить это очень просто. Устанавливаем в CentOS system config network tui:
С помощью tui можно указать любые сетевые настройки, которые мы делали раньше через командную строку и редактирование конфигурационных файлов network-scripts. Давайте сделаем это. Вызываем программу:
Выбираем первый пункт Edit a connection, затем выбираем сетевой интерфейс и жмем «Edit»:
Здесь мы можем изменить имя сетевой карты, mac адрес, указать тип сетевых настроек — ручной или dhcp, указать вручную ip адрес, адрес шлюза, днс сервера, добавить маршруты и некоторые другие настройки:
После завершения редактирования сохраняем настройки, нажимая ОК.Если в первом экране утилиты выбрать пункт Set System Hostname, то можно быстро указать имя хоста. Результат будет такой же, как мы делали раньше в консоли.
Если вы будете готовиться к сдаче сертификации по RHEL, то везде будете видеть рекомендацию использовать nmtui для настройки сети. Суть в том, что на экзамене время ограничено, а с помощью network manager его можно и нужно экономить. Считается, что так настраивать сеть быстрее.
Подключение репозиториев EPEL и Remi в CentOS
При установке операционной системы (в нашем примере это CentOS 7), по умолчанию устанавливаются базовые репозитории. Посмотреть их список можно следующей командой:
Как можно увидеть на скриншоте в системе установлено 3 репозитория — base, extras, updates.
Этих основных репозиториев хватит, чтобы начать вашу работу по установке базового ПО и установке дополнительных репозиториев.
Рассмотрим, как добавить дополнительные репозитории в CentOS.
Пожалуй, самый популярный на данный момент репозиторий — это EPEL.
EPEL (Extra Packages for Enterprise Linux) — это открытый и бесплатный проект репозитория, предоставляемый командой Fedora. Он содержит в себе высококачественные пакеты дополнительного ПО для Linux дистрибутивов. В данном репозитории размещается огромное количество пакетов начиная с ftp-серверов, заканчивая php и утилитами мониторинга системы. Это самый популярный дополнительный репозиторий
Важно отметить, что пакеты из EPEL не конфликтуют с родными пакетами CentOS/RHEL и не заменяют их.
Репозиторий EPEL в CentOS 7 устанавливается очень просто (в отличии от CentOS 6) через RPM пакет (это самый простой способ добавления репозитория):
После установки данный репозиторий отображается в списке, даже без дополнительных манипуляций (очистка кэша yum не требуется).
Чтобы подключить репозиторий Remi, выполните команду:
Remi — еще один популярный репозиторий для CentOS. Содержит в себе самые новейшие версии php, а так же mysql. Был создан человеком по имени Remi Collet. Чтобы использовать данный репозиторий, в системе должен быть установлен Epel
Обратите внимание, что могут быть конфликты пакетов из этого репозитория с пакетами из базовых репозиториев
Если RPM пакета для нужного репозитория нет, вы можете добавить его, вручную создав конфигурационный .repo файл в каталоге /etc/yum.repos.d (см. следующий раздел).
Чтобы понять из каких репозиториев установлены конкретные пакеты в вашей систему, вы можете вывести полный список пакетов:
Как вы видите, для каждого пакета указано из какого репозитория он установлен (на скрипншоте есть репозитории base, update, epel и anaconda).
Вы можете вывести список пакетов, доступных для установки в конкретном репозитории:
Работа с текстовыми файлами, find и grep
less — программа для просмотра содержимого текстовых файлов с возможностью его прокрутки. Умеет искать текст по шаблону и подсвечивать результат. Быстро работает с файлами больших размеров, т.к. не нуждается в чтении всего файла перед стартом.
После открытия текстового файла внутри утилиты можно набирать разные команды (они отображаются в левом нижнем углу), рассмотрим некоторые из них.
Для вызова справки внутри утилиты воспользуйтесь клавишей h.
Поиск внутри утилиты:
В режиме поиска:
tail — утилита, выводящая несколько последних строк файла, head — несколько первых строк.
Отображение последних 10 строк файла:
По умолчанию tail выводит именно 10 последних строк.
iconv — преобразование кодировки файла
Find — команда для поиска файлов и каталогов на основе специальных условий.
Команда grep — поиск по шаблону в файле.
Настройка системной почты
В завершение настройки сервера CentOS 7 сделаем так, что бы почта, адресованная локальному root, отправлялась через внешний почтовый сервер на выбранный почтовый ящик. Если этого не сделать, то она будет локально складываться в файл /var/spool/mail/root. А там может быть важная и полезная информация. Настроим ее отправку в ящик системного администратора.
Здесь кратко только команды и быстрая настройка. Ставим необходимые пакеты:
# yum install mailx cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain
Рисуем примерно такой конфиг для postfix.
cat /etc/postfix/main.cf
## DEFAULT CONFIG BEGIN ###################### queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix mail_owner = postfix inet_interfaces = localhost inet_protocols = all unknown_local_recipient_reject_code = 550 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = no manpage_directory = /usr/share/man sample_directory = /usr/share/doc/postfix-2.10.1/samples readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES ## DEFAULT CONFIG END ###################### # Имя сервера, которое выводит команда hostname myhostname = centos7-test.xs.local # Здесь по логике нужно оставлять только домен, но в данном случае лучше оставить полное имя сервера, чтобы в поле отправитель # фигурировало полное имя сервера, так удобнее разбирать служебные сообщения mydomain = centos7-test.xs.local mydestination = $myhostname myorigin = $mydomain # Адрес сервера, через который будем отправлять почту relayhost = mailsrv.mymail.ru:25 smtp_use_tls = yes smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = may
Создаем файл с информацией об имени пользователя и пароле для авторизации.
# mcedit /etc/postfix/sasl_passwd
mailsrv.mymail.ru:25 [email protected]:password
Создаем db файл.
# postmap /etc/postfix/sasl_passwd
Теперь можно перезапустить postfix и проверить работу.
# systemctl restart postfix
К стандартному алиасу для root в /etc/aliases, добавьте внешний адрес, куда будет дублироваться почта, адресованная root. Для этого редактируем указанный файл, изменяя последнюю строку.
Было:
#root: marc
Стало
root: root,[email protected]
Обновляем базу сертификатов:
# newaliases
Отправим письмо через консоль локальному руту:
# df -h | mail -s "Disk usage" root
Письмо должно уйти на внешний ящик. На этом настройка локальной почты закончена. Теперь все письма, адресованные локальному root, например, отчеты от cron, будут дублироваться на внешний почтовый ящик, причем с отправкой через нормальный почтовый сервер. Так что письма будут нормально доставляться, не попадая в спам (хотя не обязательно, есть еще эвристические фильтры).
Получение и пересборка пакета, не будучи при этом root-ом
Иногда вам просто необходимо пересобрать определенный пакет — возможно, лишь добавить конфигурационные опции, которые просто не существуют в основном пакете. Или потому, что вы нашли необходимый пакет, который отсутствует в репозитории, а на сайте разработчика RPMs для другого дистрибутива. Таким образом, вы должны получить src.rpm и востановить его под себя. Но в действительности вы не хотите делать этого в качестве суперпользователя. Итак, как пересобрать свои пакеты в вашей домашней директории под собственной учетной записью.
13.1 Метод А
Для начало необходимо настроить каталог для работы. Он имеет довольно полное сходство по структуре с каталогом /usr/src/redhat:
$ cd $ mkdir -p redhat/{SRPMS,RPMS,SPECS,BUILD,SOURCES} $ ls redhat/ BUILD RPMS SOURCES SPECS SRPMS $
С помощью rpm макроса произведем подмену, для того чтобы rpmbuild узнал о нас и о том что нужно собрать:
$ echo "%_topdir /home/testuser/redhat" >> .rpmmacros $ echo "%packager Test User " >> .rpmmacros $ cat .rpmmacros %_topdir /home/testuser/redhat %packager Test User $
Именно так. Следующее действие — задание rpmbuild-у —rebuild foo.src.rpm, результат работы будет в файле ~/redhat/RPMS/i386 (или та архитектура с которой вы строили пакет).
13.2 Метод Б
Для CentOS-4, настроить репозиторий kbs-Extras repo (опционально добавить kbs-Misk) со страницы репозиториев и ‘yum install fedora-rpmdevtools’ под root-ом используя ‘sudo’ или ‘su -‘. Завести юзера (возможно вы захотите использовать специальный аккаунт для того, чтобы избежать проблем в своей обычной домашней директории) и выполнить «fedora-buildrpmtree» и ~/rpmbuild/…в дереве каталогов и ~/.rpmmacros файл будет автоматически создан. (Примечание «rpmbuild» против «RedHat» в методе А.)
Для CentOS-5 — пакет rpmdevtools отсутствует в наличии. В FC6 SRPM rpmdevtools-5.3-1.fc6.src.rpm собирается и работает.
Ниже представлен макрос для получения надлежащих имен некоторых пакетов (замените соответствующую версию дистрибутива для «el4» на свою):
$ echo "%dist .el4" >> .rpmmacros
Установка ifconfig
yum provides ifconfig
или
yum whatprovides ifconfig
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.funet.fi
* epel: www.nic.funet.fi
* extras: ftp.funet.fi
* updates: ftp.funet.fi
base/7/x86_64/filelists_db | 7.2 MB 00:00:01
epel/x86_64/filelists_db | 12 MB 00:00:03
extras/7/x86_64/filelists_db | 224 kB 00:00:00
ssh-products/x86_64/filelists_db | 89 kB 00:00:00
updates/7/x86_64/filelists_db | 3.4 MB 00:00:01
net-tools-2.0-0.25.20131004git.el7.x86_64 : Basic networking tools
Repo : base
Matched from:
Filename : /sbin/ifconfig
ifconfig входит, например, в состав net-tools
Установим net-tools
sudo yum install net-tools
Что представляет собой репозиторий CentOSPlus?
CentOSPlus репозиторий содержит пакеты, которые обновляют те, что входят в состав основного репозитория. Эти пакеты не являются частью базового набора и расширяют функциональность CentOS в ущерб предшествующей его совместимости с дистрибутивом основного поставщика. Подключение этого репозитория приведет в дальнейшем к изменению CentOS. Дополнительную информацию вы можете получить в файле Readme для CentOS 4 и CentOS 5. Так же просмотрите каталог CentOSPlus для CentOS 4 или CentOS 5 на наших зеркалах для той архитектуры которую вы собираетесь использовать.
Репозиторий CentOSPlus содержит группы пакетов, все из которых являются обновлениями. Может стать так, что вы не захотите использовать CentOSPlus целиком, а будете выбирать только те пакеты, которые вы хотите использовать. |
CentOSPlus репозиторий содержит также CentOS Web Stack. Если вы заинтересованы в обновлении до CentOS Web Stack см. на этой странице. CentOS Web Stack содержит обновления для Apache (httpd) 2.0.58, MySQL 5.0, PostgreSQL 8.1, Perl 5.88, mod_perl 2, PHP 5.1.6, and ODBC. |
Перед тем как подключать репозиторий CentOSPlus вы должны ознакомится с применением опций в yum, таких как includepkgs= и/или exclude=. Чтобы прочитать об этих возможностях используйте следующую команду в терминале:
man yum.conf
Включение репозитория CentOSPlus
Чтобы включить репозиторий CentOSPlus, отредактируйте файл /etc/yum.repos.d/CentOS-Base.repo в секции . Вот как это выглядит по умолчанию:
#additional packages that extend functionality of existing packagesname=CentOS-$releasever - Plusmirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/gpgcheck=1enabled=0gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4 <== -CentOS-5 in CentOS5
Пример 1: Мы хотим, чтобы новый Postfix из CentOSPlus имел поддержку mysql_pgsql. Вот как настроить /etc/yum.repos.d/CentOS-Base.repo:
#additional packages that extend functionality of existing packagesname=CentOS-$releasever - Plusmirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/gpgcheck=1enabled=1gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4includepkgs=postfix-*exclude=postfix-*plus*
Примечание: если вы хотите использовать postfix, скомпилированнный для версии CentOs Web Stack c поддержкой pgsql и mysql, вам не придется использовать строку — «exclude=postfix-*plus*».
Вы также можете добавить в секциях и в файле /etc/yum.repos.d/CentOS-Base.repo следующую строку, чтобы не получать оттуда больше postfix пакеты:]
exclude=postfix-*
Пример 2: Мы хотим использовать ядро CentOSPlus чтобы иметь возможность использовать JFS или ReiserFS файловую систему и сопутствующий инструментарий. Для этого мы отредактируем файл /etc/yum.repos.d/CentOS-Base.repo и внесем изменения в секции :
enabled=1includepkgs=kernel* jfsutils reiserfs-utils
В секциях и внесите следующие добавления:
exclude=kernel kernel-devel kernel-smp-* kernel-hugemem* kernel-largesmp* (только для CentOS 4)exclude=kernel kernel-devel kernel-PAE-* (только для CentOS 5)
Пример 3: Мы хотим использовать файловую систему XFS c регулярным ядром … Это не требует использования полностью CentOSPlus репозитория, вы просто сделайте следующее:
yum list available kmod-xfs\*
Результат будет примерно таким (пример для CentOS-5 x86_64):
Available Packageskmod-xfs.x86_64 0.4-2 extraskmod-xfs-xen.x86_64 0.4-2 extras
Затем вы должны выбрать модуль который вам нужен и установить с помощью команды:
yum install kmod-xfs xfsdump xfsprogs
Примечание: вы также должны добавить в строку выше и установку модуля ядра для поддержки интерфейса dmapi, если вы хотите его использовать. Подробное описание использования XFS выходит за рамки этой страницы.
Пример 4: У нас уже есть ядро CentOSPlus (или по другой причине … иначе см. пример 3), и мы хотим добавить поддержку файловой системы XFS. Отредактируем файл /etc/yum.repos.d/CentOS-Base.repo и внесем в секции добавления:
enabled=1includepkgs=kernel* xfs* kmod-xfs* dmapi*
В секциях и добавим тоже:
exclude=kernel kernel-devel kernel-smp-* kernel-hugemem* kernel-largesmp* (только для CentOS 4)exclude=kernel kernel-devel kernel-PAE-* (только для CentOS 5)
В секции можно сделать следующее:
exclude=xfs* kmod-xfs* dmapi*