CentOS 7.2: Установка и настройка

Содержание

Предисловие

Совсем недавно вышла новая версия CentOS 7.2.1511 и обновились установочные диски. Интерфейс инсталлятора был немного изменён, была добавлена возможность настраивать kdump во время установки. Выход новой версии почти совпал с переездом на новый хостинг, поэтому я решил заново описать процесс установки. Предыдущую заметку с информацией об установке CentOS 7.0.1503 можно прочитать здесь.

 

Прежде чем устанавливать CentOS 7.2, я как и раньше предлагаю прочитать эту брошюру RHEL 7: Installation Guide. По ссылке её можно скачать целиком или в виде .pdf-файла, или в виде .epub-файла, кому как будет удобно. Это официальное руководство по установке RHEL 7.2 (при чём на русском языке). А т.к. RHEL практически то же самое что и CentOS – всё описанное в брошюре применимо и к CentOS.

 

Загрузка образа CentOS

Для установки CentOS первым делом нужно скачать образ установочного диска в виде iso-файла. Для этого заходим в раздел Downloads на сайте CentOS – http://www.centos.org/download/, а там находим раздел «Minimal Install Images» и нажимаем на ссылку «Download the Minimal ISO» – http://isoredirect.centos.org/centos/7/isos/x86_64/. Дальше выбираем ближайшее к нам зеркало и скачиваем файл CentOS-7-x86_64-NetInstall-1511.iso (в моём случае до сервисов Яндекса у меня 100Мбит, поэтому качаю с его зеркала).

 

Создание установочных носителей

Для установки CentOS в виртуальной машине – достаточно указать iso-образ в качестве диска для виртуального привода. Если установка будет производиться с CD-диска – запишите iso-образ на компакт-диск любой имеющейся в наличии программой. Так же можно, записать iso-образ на USB-диск и загрузиться для установки с неё. Сделать это в Linux можно следующей командой:

$ dd if=/%filepath%/image.iso of=/dev/%devname% bs=512k

Вместо %filepath% нужно указать полный путь к iso-файлу, а вместо %devname% нужно указать название устройства под которым Linux видит наш USB-диск. Имейте в виду что USB-диск в этот момент не должен быть примонтирован.
В Windows для записи iso-образа на USB-диск можно воспользовавшись программой Fedora LiveUSB Creator (https://fedorahosted.org/liveusb-creator/). Необходимо скачать и установить эту программу. Имейте в виду, для её работы запускать её нужно с правами администратора. После запуска выберите iso-образ для записи нажав на кнопку Browse, затем в пункте Target Device выберите USB-диск для записи и нажмите на кнопку «Create Live USB».

Fedora LiveUSB Creator

 

Подготовка виртуальной машины

В Parallels Desktop нажимаем на кнопку «Создать…» для создания новой виртуальной машины, затем в мастере Parallels выделяем пункт «Установить Windows или другую ОС с DVD или из образа» и нажимаем на кнопку «Продолжить». В новом окне мастера Parallels выбираем пункт «Образ» и перетягиваем наш iso-образ на окошко мастера. Мастер будет ругаться сообщением «Не удалось определить операционную систему», не будем обращать на это внимание и нажмём на кнопку «Продолжить». Мастер предложит выбрать операционную систему из списка, выберем в нём «CentOS Linux» в группе «Другие версии Linux» и нажмём на кнопку «OK». Выбираем имя виртуальной машины, выбираем расположение виртуальной машины, ставим галочку напротив пункта «Настроить параметры до начала установки» и нажимаем на кнопку «Продолжить». Расписывать все настройки Parallels для виртуальной машины смысла нет, отмечу только что лучше бы оперативной памяти указать не менее 1Гб, количество процессоров можно увеличить до максимума, а вот жёсткий диск можно и урезать до 16Гб (по умолчанию Parallels делает 64Гб). Для минимальной установки и настройки основных сетевых сервисов 16Гб вполне должно хватить. Так же обратите внимание на настройки сети виртуальной машины, для установки нам необходимо чтобы в виртуальной машине был доступен Интернет (можно вместо общей сети указать мостовую, тогда виртуальная машина будет в локальной сети). Я ещё во вкладке «Безопасность» в настройках виртуальной машины ставлю галочки напротив пунктов «Интеграция: Изолировать Linux от Mac» и «Time Machine: Отключить» (так как виртуальная машина тестовая). Теперь закрываем настройки и опять нажимаем на кнопку «Продолжить».

Parallels VM Status

 

Запуск установки CentOS

Загружаем компьютер (или виртуальную машину) с носителя, который мы подготовили (или напрямую из iso-образа). После загрузки появится меню установщика CentOS 7, которое предлагает запустить процесс установки (пункт «Install CentOS 7» или выполнить диагностику носителя с последующим запуском процесса установки (пункт «Test this media & Install CentOS 7»). Выбираем второй пункт и нажимаем «Enter».

centos72_01_install_grubmenu

По умолчанию графический установщик будет запущен с разрешением 1024×768. Но есть возможность это разрешение изменить. Для этого выбираем опять-таки выбираем пункт «Test this media & install CentOS 7», но нажимаем не «Enter», а «Tab». У нас появится строка загрузки ядра, дописываем в неё «driver=vesa resolution=1280×1024» и нажимаем на «Enter». Также возможны следующие разрешения: 1024×768, 1280×1024, 1680×1050, 1600×1200, 1920×1080, но я считаю что разрешение 1280×1024 оптимальное.

Запуск установщика CentOS

После проверки носителя будет запущен установщик CentOS 7. В самом первом окне установщика нам предлагают выбрать язык используемый при установке CentOS 7. Выбираем из списка слева «Русский» язык, в списке справа оставляем выбранным «Русский (Россия)» и нажимаем на кнопку «Продолжить».

centos72_02_install_language

После выбора языка нам откроется основное меню установщика CentOS 7.2. Выбор часового пояса и установку времени с датой пока пропустим, всё равно до настройки сети NTP-клиент доступен не будет.

centos72_03_install_mainmenu

Настройка клавиатуры

Начнём с настроек клавиатуры, для этого нажмём на кнопку «Клавиатура» и поменяем приоритет у раскладок, передвинув английскую раскладку наверх. Так же, нажав на кнопку «Параметры» можно поменять комбинацию для переключения раскладок (например на Ctrl+Shift). После чего нажмём на кнопку «ОК».

centos72_04_install_keyboard

Теперь можно попробовать в поле справа ввести что-нибудь используя национальную раскладку. Если всё нормально – нажимаем на кнопку «Готово».

centos72_05_install_keyboard2

Настройка сети

Для настройки сети нажимаем на кнопку «Сеть и имя узла» в группе настроек «Система». По умолчанию сеть отключена, для её включения необходимо нажать на переключатель, который находится в верхнем правом углу экрана. Если в вашей сети есть DHCP-сервер, то все сетевые настройки подхватятся из него, также из DNS определится имя хоста. Если же DHCP-сервера нет, то сеть опять перейдёт в состояние «Отключено», в таком случае все сетевые настройки необходимо будет вводить вручную.

centos72_06_install_network

Для начала, в поле «Имя узла» впишем полное название нашего сервера, далее нажмём на кнопку «Настроить…». У нас откроется окно для изменений сетевых настроек, в открывшейся вкладке «Ethernet» в поле Device выберем второй пункт, где eth0 прописано вместе с MAC-адресом.

centos72_07_install_network_ethernet

Во вкладке «Общий» ставим галочку напротив пункта «Автоматически подключаться к этой сети, когда она доступна».

centos72_08_install_network_general

Во вкладке «Параметры IPv4» в пункте «Способ настройки» либо оставляем выбранным «Автоматически (DHCP)», если в локальной сети используется DHCP, либо меняем на «Вручную» и заполняем все оставшиеся поля.
Если необходимо добавить какие-нибудь специальные маршруты, это можно сделать нажав на кнопку «Маршруты…».

centos72_09_install_network_ipv4

Если у нас в сети не используется IPv6, тогда во вкладке «Параметры IPv6» в пункте «Способ настройки» выбираем «Игнорировать», в противном случае вводим необходимые данные. После чего нажимаем на кнопку «Сохранить».

centos72_10_install_network_ipv6

Ещё раз проверяем введёные сетевые настройки и если всё правильно, нажимаем на кнопку «Готово» в верхнем левом углу.

centos72_11_install_network2

После настройки сети мы опять вернёмся в основное меню инсталлятора CentOS 7.2.

centos72_12_install_mainmenu2

Настройка даты и времени

Теперь можно вернуться к пропущенному шагу и настроить часовой пояс и дату. Для этого нажимаем на кнопку «Дата и время» в блоке «Региональные настройки». Сначала выбираем регион и город, а затем в правом верхнем углу выключаем переключатель «Сетевое время» и снова его включаем. После этого время должно синхронизироваться с NTP-сервером. Можно нажать на кнопку «Готово» для возвращения в главное меню установщика.

centos72_13_instal_timezone

Настройка репозитария и выбор программ для установки

Сейчас укажем репозитарий из которого будем устанавливать CentOS, для этого нажимаем на кнопку «Источник установки» в блоке «Программное обеспечение». В поле источника установки указываем путь к основному репозиторию CentOS (в моём случае я указываю mirror.yandex.ru/centos/7/os/x86_64/). В случае если доступ к Интернету у вас осуществляется через прокси – самое время это указать, нажав на кнопку «Настроить прокси…». Далее нажимаем на кнопку «Готово».

centos72_14_install_repository

Если адрес репозитория указан верно, то теперь под названием кнопки «Источник установки» появится адрес репозитория, а с иконки кнопки уберётся оранжевый треугольник. Если это произошло – нажимаем на кнопку «Выбор программ» в блоке «Программное обеспечение». Во время первоначальной установки я устанавливаю только минимальный набор программ, а все сервисы, которые будут работать на сервере устанавливаю и настраиваю позже. Так что оставляю выбранным пункт «Минимальная установка» и нажимаю на кнопку «Готово».

centos72_15_install_packageroles

Опять возвращаемся в основное меню инсталлятора CentOS 7.2.

centos72_16_install_mainmenu3

Настройка дисковой подсистемы

Теперь настало время настроить диск для установки CentOS, для чего нажмём на кнопку «Расположение установки» во вкладке «Система». В появившемся окне смотрим чтобы галочкой был выделен нужный нам жёсткий диск, отмечаем пункт «Я настрою разделы» в блоке «Разбиение» и нажимаем на кнопку «Готово».

centos72_17_install_storage_menu

У нас откроется мастер разметки жёсткого диска. Если диск был прежде пустым, то Вы увидите такую картинку.

centos72_18_install_storage_manual_clear

Как видно, здесь количество свободного места равно количеству всего места. Если так, то следующий шаг нужно пропустить. Если же на диске уже что-то было записано, то Вы увидите такую картинку.

centos72_19_install_storage_manual

Как видно, наш диск уже разбит на разделы. Для того чтобы их удалить, разворачиваем пункт «CentOS Linux Linux 7.2.1511 for x86_64» (у Вас название пункта может быть другим), выделяем верхний раздел и нажимаем на кнопку удаления раздела.

centos72_20_install_storage_manual2

Когда появятся вопрос «Удалить все данные с vdaX?», нужно будет поставить галочку напротив пункта «Удалить все остальные файловые системы» и нажать на кнопку «Удалить».

centos72_21_install_storage_manual2_del

После удаления разделов нажимаем на кнопку «Создать их автоматически».

centos72_18_install_storage_manual_clear

Нашему взору откроется такая вот картина автоматического разбиения:

centos72_22_install_storage_default

Не сказал бы, что это оптимальный вариант. Поэтому немного изменим конфигурацию дисков. Для этого сначала выделим корневой раздел «/» и изменим требуемый размер на 16 GiB (не смотря на то, что в русском инсталляторе размерность пишется по-русски – МиБ и ГиБ, инсталлятор их не принимает. т.е. если написать «16 ГиБ», а потом нажать на «Применить» – размер не сохранится, нужно писать именно «16 GiB»). Тип устройства LVM и файловую систему xfs оставим без изменения, но вот название «Volume Group» изменим, для чего нажмём на кнопку «Изменить…». По умолчания установщик называет группу томов LVM как centos_hostname, заменим это на vg_hostname (вместо hostname подставьте название вашего хоста). После чего нажимаем на кнопку «Сохранить».

centos72_24_install_storage_root_change

Теперь поменяем имя раздела, вместо root напишем lv_root и нажмём на кнопку «Применить».

centos72_23_install_storage_root

Для ровного числа заменим размер раздела «/boot» – вместо «500 МиБ» укажем «0,5 GiB». Тип устройства раздела «/boot» оставляем стандартным, файловую систему так же оставляем xfs, но в поле «Метка» прописываем «boot» после чего нажимаем на кнопку «Применить».

centos72_25_install_storage_boot

Далее изменим настройки раздела для свопа. Выделим этот раздел и изменим имя на «lv_swap», после чего нажмём на кнопку «Применить». Как видим, установщик CentOS нам ещё создал раздел для домашних папок пользователей размером почти 20 гигабайт. Нам такой раздел не нужен, поэтому удалим его.

centos72_26_install_storage_delhome

Итак, у меня осталось неразмеченным около 45 гигабайт. Для хранения данных различными сервисами, я использую специальный раздел «/srv», поэтому создадим его. Для этого нажимаем на кнопку «+», вводим вручную точку монтирования «/srv» и указываем размер 32 GiB, после чего нажимаем на кнопку «Добавить».

centos72_27_install_storage_addsrv

После добавления раздела «/srv», исправим его имя на «lv_srv», после чего нажмём на кнопку «Применить».

centos72_28_install_storage_srv

Необходимые разделы созданы. У меня осталось около 13 гигабайт. Оставлю их резервными, а в случае необходимости, расширю любой из имеющихся разделов. Но теперь очень важно выделить корневой раздел «/», нажать на кнопку «Изменить…» и выбрать в поле «Выбор размера» значение «Как можно больше», вместо «Автоматически».

centos72_24_install_storage_root_change

Если этого не сделать, то в случае если сумма всех ваших создаваемых разделов будет меньше размера диска – инсталлятор создаст раздел для LVM’а размером аккурат в сумму размеров ваших разделов. Если же выбрать значение «Как можно больше», то раздел будет создан максимального размера, а оставшееся свободное место будет свободным в нашем LVM’е. Если же так случилось, что у вас уже свободное место оказалось не в LVM’е, а просто является неразмеченной областью на диске, и Вы хотите раздел с LVM’ом увеличить, то прочитав «эту» статью, Вы поймёте как это сделать.
После создания разделов на диске нажимаем на кнопку «Готово». Нам будет представлен список изменений, которые будут проделаны с нашим диском. Здесь нам нужно нажать на кнопку «Принять изменения».

centos72_29_install_storage_status

Итак, все необходимые действия для установки CentOS произведены. В принципе, можно уже нажимать на кнопку «Начать установку» для установки CentOS.

centos72_30_install_mainmenu4

Настройка политики безопасности и kdump

Но, начиная с версии CentOS 7.2 у нас появился ещё один пункт настроек в инсталляторе. Появилась группа «Security», а в ней пункт «Security Policy». Как видно на картинке, сейчас там светится надпись «No profile selected». Нажмём на этот пункт. Для настройки «security policy» выбираем пункт «Standard System Security Profile» и нажимаем на кнопку «Select profile». Затем нажимаем на кнопку «Готово».

centos72_31_install_security_policy

Так же, начиная с версии CentOS 7.2 в блоке «Система» появился пункт «KDUMP». Это возможность включения/выключения механизма сбора статистики о сбоях ядра. Нажмём на этот пункт и уберём галочку с пункта «Включить kdump» (тому кому действительно необходим kdump, галочку убирать не нужно 🙂 ). Это позволит сэкономить около 128 мегабайт оперативной памяти. Далее нажимаем на кнопку «Готово».

centos72_32_install_kdump

Вот теперь все необходимые настройки в инсталляторе выполнены, нажимаем на кнопку «Начать установку» для установки CentOS 7.2.

centos72_33_install_mainmenu_ok

Запуск процесса установки

Первым делом установщик произведёт разбиение диска на разделы, как мы указали ранее. Затем разделы будут отформатированы и начнётся установка пакетов. В минимальной установке этих пакетов 303. После установки пакетов будет произведена их первоначальная настройка.

centos72_34_install_process

В то время пока пакеты устанавливаются и настраиваются – мы зададим пароль для пользователя root и создадим пользователя для повседневной работы (во время установки создание пользователя шаг не обязательный, его можно будет в любой момент создать позже).

centos72_35_install_password

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

centos72_36_install_process2

Так же можно создать пользователя для повседневной работы. Если поставить галочку напротив пункта «Сделать этого пользователя администратором», то пользователь после создания будет добавлен в группу «wheel».

centos72_37_install_adduser

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

centos72_38_install_finish

Поздравляем! Установка CentOS 7.2 завершена.

 

Прежде чем перейти к настройке CentOS 7.2, советую прочитать вот эту вот брошюру RHEL 7: System Administrators Guide. Это официальное руководство по настройке RHEL 7 (на русский язык эта брошюра пока что не переведена).

 

Первый запуск CentOS

После загрузки загрузчика появится меню выбора загрузки, в котором можно ничего не нажимать, по умолчанию запустится первый вариант «CentOS Linux, with Linux 3.10.0-327.el7.x86_64».

centos72_39_centos_grubmenu

Загрузка по умолчанию достаточно молчаливая, не показывается ровным счётом ничего. А после загрузки нас ждёт стандартное приглашение ввода имени пользователя и пароля.

centos72_40_centos_login

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

После того как залогинились в CentOS первый раз – нужно выполнить ряд дополнительных настроек. Первым делом устанавливаем редактор nano, и делаем так, чтобы вся почта отправляемая пользователю root – форвардилась на ваш почтовый адрес.

$ yum -y install nano
$ echo %email% >~/.forward
$ chcon -u system_u ~/.forward

В CentOS 6 после этого необходимо было ещё восстанавливать заданный по умолчанию SELinux-контекст для файла .forward командой:

$ restorecon -v /root/.forward

А в CentOS 7 файл создаётся сразу с нормальным контекстом.

 

Настраиваем локаль и русскую раскладку

$ localectl set-locale LANG="ru_RU.UTF-8" LC_NUMERIC="C" LC_TIME="POSIX" LC_MESSAGES="POSIX"
$ localectl set-keymap us ru --no-convert
$ localectl set-x11-keymap us,ru pc105 grp:ctrl_shift_toggle --no-convert
$ localectl status
   System Locale: LANG=ru_RU.UTF-8
                  LC_NUMERIC=C
                  LC_TIME=POSIX
                  LC_MESSAGES=POSIX
       VC Keymap: us
VC Toggle Keymap: ru
      X11 Layout: us,ru
       X11 Model: pc105
     X11 Variant: grp:ctrl_shift_toggle

Теперь мы сможем в консоли переключать раскладку нажимая на Ctrl+Shift.

 

Настройка менеджера пакетов

Ограничиваем количество установленных версий пакетов до 3-х (например количество версий установленного ядра):

$ nano -w /etc/yum.conf
installonly_limit=3
$ yum -y install yum-cron yum-utils

Включаем проверку новых версий пакетов (информация о новых версиях будет приходить по почте, сами пакеты обновляться автоматически не будут):

$ nano -w /etc/yum/yum-cron.conf
download_updates = no
$ systemctl enable yum-cron.service
$ systemctl start yum-cron.service

 

Обновление базовой системы после установки

$ yum -y update

 

Установка необходимых утилит и программ

Теперь подключаем EPEL-репозиторий (Extra Packages for Enterprise Linux) и доустанавливаем необходимые пакеты, отсутствующие в базовой установке:

$ yum -y install epel-release
$ yum -y install bash-completion logwatch lsscsi mc mlocate mtr nfs-utils parted pciutils \
         pinfo policycoreutils-python rsync screen sysstat telnet unzip usbutils wget

Есть ещё интересный пакет atop, в котором можно посмотреть статистику загрузки сервера в реальном времени с разбивкой по процессам и устройствам, устанавливается он следующей командой:

$ yum -y install atop

Статистика выглядит примерно таким образом:

ATOP - centos            2014/09/14  15:12:22            ---------             12h1m4s elapsed
PRC |  sys   37.23s   |  user  12.51s   |  #proc    194  |   #zombie    0  |   #exit      0  |
CPU |  sys       0%   |  user      0%   |  irq       0%  |   idle    400%  |   wait      0%  |
cpu |  sys       0%   |  user      0%   |  irq       0%  |   idle    100%  |   cpu002 w  0%  |
cpu |  sys       0%   |  user      0%   |  irq       0%  |   idle    100%  |   cpu001 w  0%  |
cpu |  sys       0%   |  user      0%   |  irq       0%  |   idle    100%  |   cpu003 w  0%  |
cpu |  sys       0%   |  user      0%   |  irq       0%  |   idle    100%  |   cpu000 w  0%  |
CPL |  avg1    0.00   |  avg5    0.01   |  avg15   0.05  |   csw  1279901  |   intr 4020376  |
MEM |  tot   990.6M   |  free  538.6M   |  cache 198.1M  |   buff    0.7M  |   slab  136.9M  |
SWP |  tot     3.8G   |  free    3.8G   |                |   vmcom 309.8M  |   vmlim   4.3G  |
LVM |  ntos-lv_root   |  busy      0%   |  read    5419  |   write   5933  |   avio 0.65 ms  |
LVM |  ntos-lv_swap   |  busy      0%   |  read     216  |   write      0  |   avio 0.07 ms  |
DSK |           sda   |  busy      0%   |  read    6164  |   write   6056  |   avio 0.61 ms  |
NET |  transport      |  tcpi 6376629   |  tcpo 6373269  |   udpi    2957  |   udpo    2966  |
NET |  network        |  ipi  6439613   |  ipo  6376153  |   ipfrw      0  |   deliv 6380e3  |
NET |  eth0    ----   |  pcki 6443870   |  pcko 6377318  |   si   75 Kbps  |   so   77 Kbps  |
NET |  lo      ----   |  pcki       6   |  pcko       6  |   si    0 Kbps  |   so    0 Kbps  |
                        *** system and process activity since boot ***
  PID   TID  THR SYSCPU USRCPU  VGROW  RGROW  RDDSK  WRDSK ST EXC S CPUNR  CPU CMD        1/10
  704     -    5  0.76s  7.78s 537.1M 16096K  2784K    16K N-   - S     3   0% tuned
   41     -    1  7.72s  0.00s     0K     0K     0K     0K N-   - S     2   0% rcu_sched
   44     -    1  6.17s  0.00s     0K     0K     0K     0K N-   - S     3   0% rcuos/2
  467     -    1  4.50s  0.00s     0K     0K     0K     0K N-   - S     0   0% xfsaild/dm-0
  705     -    1  3.67s  0.69s 19112K  1172K   144K     0K N-   - S     3   0% irqbalance
    1     -    1  1.45s  0.54s 50028K  6624K 45321K    84K N-   - S     0   0% systemd
  549     -    1  1.36s  0.37s 54308K  6544K   584K     0K N-   - S     2   0% systemd-journa
   43     -    1  1.23s  0.00s     0K     0K     0K     0K N-   - S     3   0% rcuos/1
  709     -    2  0.33s  0.54s 34996K  2072K   612K     0K N-   - S     2   0% dbus-daemon
  712     -    1  0.78s  0.08s 123.4M  1728K 14104K 15356K N-   - S     2   0% crond
  827     -    3  0.26s  0.49s 441.1M  8900K  9640K     0K N-   - S     3   0% NetworkManager
   75     -    1  0.75s  0.00s     0K     0K     0K     0K N-   - S     1   0% watchdog/1
  698     -    2  0.37s  0.33s 319.6M 20924K 11148K     4K N-   - S     0   0% firewalld
   45     -    1  0.69s  0.00s     0K     0K     0K     0K N-   - S     2   0% rcuos/3
   74     -    1  0.67s  0.00s     0K     0K     0K     0K N-   - S     0   0% watchdog/0
   80     -    1  0.62s  0.00s     0K     0K     0K     0K N-   - S     2   0% watchdog/2
   85     -    1  0.60s  0.00s     0K     0K     0K     0K N-   - S     3   0% watchdog/3
 2373     -    1  0.41s  0.09s 130.3M  4956K   268K     4K N-   - S     3   0% sshd
  738     -    1  0.46s  0.00s     0K     0K     0K     0K N-   - S     0   0% kworker/0:3
 2378     -    1  0.14s  0.31s 113.5M  3092K 76272K 27208K N-   - S     1   0% bash
 1836     -    1  0.36s  0.06s 91528K  2200K   284K     8K N-   - S     2   0% master

 

Отключение IPv6

Есть два варианта отключения IPv6 в CentOS 7.x, первый вариант жёсткий:

$ sed -i --follow-symlinks 's/^GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="ipv6.disable=1 /g' \
	/etc/sysconfig/grub
$ grub2-mkconfig --output=/boot/grub2/grub.cfg

он запрещает ядру грузить модули связанные с IPv6. Этот вариант плох тем, что если включен SELinux (а зачем ставить CentOS и отключать SELinux?!), то мы будем периодически получать ругань в логах типа:

type=AVC msg=audit(1410648780.359:195): avc:  denied  { module_request } for  pid=727 comm="chronyd" kmod="net-pf-10" scontext=system_u:system_r:chronyd_t:s0 tcontext=system_u:system_r:kernel_t:s0 tclass=system

Поэтому есть более мягкий вариант отключения IPv6:

$ nano -w /etc/sysctl.d/98-disable-ipv6.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
$ dracut -f
$ systemctl restart systemd-sysctl.service

А для того чтобы после отключения IPv6 не было лишней ругани от разных сервисов в логах – нужно подправить конфиги postfix, демона синхронизации времени chrony и sshd:

$ sed -i 's/inet_protocols = [^ ]*/inet_protocols = ipv4/g' /etc/postfix/main.cf
$ systemctl restart postfix.service
$ sed -i 's/^\(bindcmdaddress ::1\)/#\1/' /etc/chrony.conf
$ nano -w /etc/sysconfig/chronyd
OPTIONS="-4"
$ chcon -u system_u /etc/sysconfig/chronyd
$ systemctl restart chronyd.service
$ sed -i s/udp6/#udp6/ /etc/netconfig
$ sed -i s/tcp6/#tcp6/ /etc/netconfig
$ nano -w /etc/ssh/sshd_config
AddressFamily inet
ListenAddress 0.0.0.0

$ systemctl restart sshd.service

 

Настройка демона sshd

На новом сервере я сразу отключаю авторизацию по паролю, оставляю только авторизацию по ключу. А авторизацию по паролю разрешаю только определённым IP-адресам:

$ nano -w /etc/ssh/sshd_config
PasswordAuthentication no
...
Match address 1.2.3.4/32
	PasswordAuthentication yes
Match address 2.3.4.5/32
	PasswordAuthentication yes

$ systemctl restart sshd.service

Note: используйте это только если знаете что делаете!

 

Настройка рабочего окружения

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

$ rm -f ~/.bashrc
$ nano -w ~/.bash_profile
#----------------------------------------------------------------------------
# ~/.bash_profile: executed by bash(1) for login shells.
# $Revision: 2.20 (CentOS/OS X Edition by Wakko Warner) $
# $Comment: Any comments please send to wakko@acmelabs.spb.ru $
#----------------------------------------------------------------------------

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

# Test for an interactive shell. There is no need to set anything
# past this point for scp and rcp, and it's important to refrain from
# outputting anything in those cases.
if [[ $- != *i* ]] ; then
	# Shell is non-interactive.  Be done now!
	return
fi

# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi

# Include ~/.config/bashrc.d/* if it exists
if [ -d ~/.config/bashrc.d ]; then
	for i in `ls ~/.config/bashrc.d/` ; do
		if [[ -f ~/.config/bashrc.d/${i} ]]; then
			. ~/.config/bashrc.d/${i}
		fi
	done
	unset i
fi

$ nano -w ~/.bash_logout
#----------------------------------------------------------------------------
# ~/.bash_logout: executed by bash(1) when login shell exits.
# $Revision: 2.10 (CentOS Edition by Wakko Warner) $
# $Comment: Any comments please send to wakko@acmelabs.spb.ru $
#----------------------------------------------------------------------------
 
# When leaving the console clear the screen to increase privacy
if [ "$SHLVL" = 1 ]; then
	[ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
	[ -x /usr/bin/clear ] && /usr/bin/clear -q
fi

$ mkdir -p ~/.config/bashrc.d

$ nano -w ~/.config/bashrc.d/00-aliases
#----------------------------------------------------------------------------
# ~/.config/bashrc.d/00-aliases: executed by .bash_profile for aliases
# $Revision: 2.20 (CentOS/OS X Edition by Wakko Warner) $
# $Comment: Any comments please send to wakko@acmelabs.spb.ru $
#----------------------------------------------------------------------------

# Alias definitions.
alias cp='cp -i'
alias df='df -h'
alias du='du -h'
alias flushdns='sudo discoveryutil udnsflushcaches'
alias less='less -r'
alias ll='ls -lp'
#alias ls='ls --color=auto'
alias md='mkdir'
alias mtr='mtr -o "LRSD NBAWV"'
alias mv='mv -i'
alias pman='pinfo -m'
alias px='ps xa'
alias rd='rmdir'
alias rm='rm -i'
alias scp='scp -p -r'
alias screen='[ -z "$HUSHLOGIN" ] && TERM=xterm screen -D -RR || TERM=linux screen -D -RR'
alias su='su -'
alias sudo='sudo -s'
alias showextip='curl http://ipecho.net/plain; echo'
alias watch='watch '
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
alias who='who -HuT'

$ nano -w ~/.config/bashrc.d/01-locale
#----------------------------------------------------------------------------
# ~/.config/bashrc.d/01-locale: executed by .bash_profile for locale settings
# $Revision: 2.20 (CentOS/OS X Edition by Wakko Warner) $
# $Comment: Any comments please send to wakko@acmelabs.spb.ru $
#----------------------------------------------------------------------------

# Locale definitions.
#export LC_ALL=""
#export LANG="ru_RU.UTF-8"
#export LC_NUMERIC="C"
#export LC_TIME="POSIX"

# Set english messages for root.
[ ${EUID} == 0 ] && export LC_MESSAGES="POSIX"

$ nano -w ~/.config/bashrc.d/02-terminal
#----------------------------------------------------------------------------
# ~/.config/bashrc.d/02-terminal: executed by .bash_profile for terminal settings
# $Revision: 2.20 (CentOS/OS X Edition by Wakko Warner) $
# $Comment: Any comments please send to wakko@acmelabs.spb..ru $
#----------------------------------------------------------------------------

# Set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
	debian_chroot=$(cat /etc/debian_chroot)
fi

# Set colorful PS1 only on colorful terminals.
# dircolors --print-database uses its own built-in database
# instead of using /etc/DIR_COLORS or /etc/dircolors.
# Try to use the external file first to take advantage of user additions.
use_color=false
safe_term=${TERM//[^[:alnum:]]/.}	# sanitize TERM

if [ -f /etc/DIR_COLORS ]; then
	grep -q "^TERM ${safe_term}" /etc/DIR_COLORS && use_color=true
elif [ -f /etc/dircolors ]; then
	grep -q "^TERM ${safe_term}" /etc/dircolors && use_color=true
elif type -p dircolors >/dev/null ; then
	if dircolors --print-database | grep -q "^TERM ${safe_term}" ; then
		use_color=true
	fi
fi

if ${use_color} ; then
	if [ ${EUID} == 0 ]; then
		PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
	else
		PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
	fi
#	PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
	eval "`dircolors -b`"
	alias ls='ls --color=auto'
	alias dir='ls --color=auto --format=vertical'
	alias vdir='ls --color=auto --format=long'
	alias less='less -r'
else
	if [ ${EUID} == 0 ]; then
		PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
	else
		PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
	fi
fi

$ nano -w ~/.config/bashrc.d/03-userfiles
#----------------------------------------------------------------------------
# ~/.config/bashrc.d/03-userfiles: executed by .bash_profile for user files
# $Revision: 2.00 (CentOS/OS X Edition by Wakko Warner) $
# $Comment: Any comments please send to wakko@acmelabs.spb..ru $
#----------------------------------------------------------------------------

# User specific environment and startup programs
if [ -d $HOME/bin ]; then
	PATH=$PATH:$HOME/bin
	export PATH
fi
# do the same with MANPATH
if [ -d $HOME/man ]; then
	MANPATH=${MANPATH:-:}:$HOME/man
	export MANPATH
fi

$ nano -w ~/.config/bashrc.d/99-other
#----------------------------------------------------------------------------
# ~/.config/bashrc.d/99-other: executed by .bash_profile for other settings
# $Revision: 2.20 (CentOS/OS X Edition by Wakko Warner) $
# $Comment: Any comments please send to wakko@acmelabs.spb.ru $
#----------------------------------------------------------------------------

# Don't put duplicate and garbage lines from Midnight Commander to the history.
export HISTCONTROL="ignoreboth"

# Check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# Make less more friendly for non-text input files, see lesspipe(1)
#[ -x /usr/bin/lesspipe ] && eval "$(lesspipe)"

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

Настройка утилиты screen

Я люблю работать в screen, во-первых если, вдруг отвалится связь до удалённого сервера – сеанс не завершится, а продолжит своё выполнение. Особенно это актуально если удалённо был запущен какой-нибудь длительный процесс, который не желательно прерывать.
Ну и плюс, я настроил screen таким образом, что при его запуске – у нас сразу же создаются 10 консолей, и переключаться между ними так же удобно как если бы вы сидели за рельной консолью Linux, по Alt+F1, Alt+F2 и т.д. до Alt+F10. Можно ещё нажимая клавиши Ctrl+Alt+Left/Right переключаться между консолями влево-вправо.

$ nano -w ~/.screenrc
#----------------------------------------------------------------------------
# ~/.screenrc: executed by screen for user settings
# $Revision: 2.10 (CentOS Edition by Wakko Warner) $
# $Comment: Any comments please send to wakko@acmelabs.spb.ru $
#----------------------------------------------------------------------------

  hardstatus string "[screen %n%?: %t%?] %h"
  defshell -bash
  shell -$SHELL

# VARIABLES
# ===============================================================
# Automatically detach on hangup. 
  autodetach on				# default: on
# Don't display the copyright page
  startup_message off			# default: on
# Affects the copying of text regions
  crlf off				# default: off
# Change default scrollback value for new windows
  defscrollback 1000			# default: 100
# Define the time that all windows monitored for silence should 
# wait before displaying a message. Default 30 seconds.
  silencewait 15			# default: 30
# UTF-8 support
  defutf8 on
# PuTTY tweaks
  termcapinfo xterm* ti@:te@
  termcapinfo xterm ti@:te@

# KEYBINDINGS
# ==============================================================
# Alt+Fn keys.
  bindkey "^[^[OC" next
  bindkey "^[^[OD" prev
  bindkey "^[^[OP" select 0
  bindkey "^[^[OQ" select 1
  bindkey "^[^[OR" select 2
  bindkey "^[^[OS" select 3
  bindkey "^[^[[15~" select 4
  bindkey "^[^[[17~" select 5
  bindkey "^[^[[18~" select 6
  bindkey "^[^[[19~" select 7
  bindkey "^[^[[20~" select 8
  bindkey "^[^[[21~" select 9

# STARTUP SCREENS
# ===============================================================
# Uncomment one/some following lines to automatically let
# SCREEN start some programs in the given window numbers:
# screen -t IRC         1 irssi
# screen -t EDIT        1 vim
# screen -t GOOGLE      2 links http://www.google.com
# screen -t NEWS        3 slrn
# screen -t WWW         4 links http://rt.com
  screen -t F1		0
  screen -t F2		1
  screen -t F3		2
  screen -t F4		3
  screen -t F5		4
  screen -t F6		5
  screen -t F7		6
  screen -t F8		7
  screen -t F9		8
  screen -t F10		9
  select 0

Note: Если запускать Midnight Commander в screen, то у него не работал subshell (не работал шелл в mc). Для того чтобы починить, добавьте в файл .screenrc строчку «shell -$SHELL«.

 

Настройка редактора nano

nano – отличный маленький редактор. Но многие его почему-то незаслуженно не любят. Это зря. С небольшими донастройками nano умеет даже подсветку синтаксиса. Не так круто как тот же vim, но в целом всё равно получается лучше чем чёрно-белый.

$ nano -w ~/.nanorc
#----------------------------------------------------------------------------
# ~/.nanorc: executed by nano for user settings
# $Revision: 2.10 (CentOS Edition by Wakko Warner) $
# $Comment: Any comments please send to wakko@acmelabs.spb.ru $
#----------------------------------------------------------------------------

## Constantly display the cursor position in the status bar.
  set const

## Enable mouse support, so that mouse clicks can be used to set the
## mark and run shortcuts.
  set mouse

## Don't wrap text at all.
  set nowrap

## Use smooth scrolling as the default.
  set smooth

## -----------------------------------------------------------------------------
## *conf-files
#
  syntax "configfiles" "\/etc" "(\.|/|)ini$" "(\.|/|)cf$" "(\.|/|)conf$" "(\.|/|)cnf$" "(\.|/|)include$" "(\.|/|)ample$" "(\.|/|)globals$" "xfce.*$" "syslog-ng" "sudoers" "(\.|/|)config$" "(\.|/|)COLORS$" "(\.|/|)colors$"
  color red "/.*$" "TERM" "\..*$" "=.*$" "\*.*$"
  color brightgreen ":unscaled" "[0-9]"
  color brightwhite "setenv|export" "\;"
  color brightwhite "\<(alias)\>"
  color brightgreen "<(\\.|[^'])*>"
  color magenta "[a-zA-Z_0-9\-\ \	]+(	| |)+="
  color brightwhite ">(\\.|[^'><])*" "\<(logfile)\>" "\<(driftfile)\>" "\<(restrict)\>"
  color brightwhite ":unscaled" "http\:\/\/" "ftp\:\/\/" "rsync\:\/\/"
  color magenta "'(\\.|[^'])*'"
  color brightwhite "[0-9]"
  color brightwhite "[<>]"
  color brightgreen "\[[a-zA-Z_0-9\ \-]+\]"
  color magenta "Section" "EndSection" "SubSection" "EndSubSection"
  color red "\<(root)\>"
  color brightred,blue "^.*-->" start="<!--.*" end="$"
## strings
  color brightyellow "\"(\\.|[^\"])*\"" "'(\\.|[^'])*'" "`(\\.|[^'])*`" "\{(\\.|[^'])*\}"
## comments
  color green "^( *|	*)#.*$" start="<!--" end="-->"
  color green ";.*$"
## header
  color brightgreen "^( *|	*)[#;]+ *\/etc\/[a-zA-Z_0-9]+.*$"
  color brightgreen "^( *|	*)[#;]+ *\$[a-zA-Z_0-9]+:.*$"

## -----------------------------------------------------------------------------
## /etc/group, /etc/passwd, /etc/shadow
#
  syntax "passwd" "(\.|/|)group(.*)$" "(\.|/|)passwd(.*)$" "(\.|/|)shadow(.*)$"
  color white ".*$"
  color green "\:.*$"
  color yellow "\:*\:"
  color cyan "/.*$"
  color red "/bin/false"
  color red "/sbin/nologin"
  color brightred "root"
  color brightgreen "/bin/.*sh"
  color white "[0-9]"
  color magenta "\:\/.*\:"

## -----------------------------------------------------------------------------
## *tab-files ( e.g. fstab, crontab, inittab )
#
  syntax "fstab" "(\.|/|)tab$"
  color brightwhite "[0-9,\*]"
  color yellow "-([a-z])\>"
  color magenta "\<(none)\>.*$" "\<(wait)\>" "\<(respawn)\>"
  color red "/dev/hd.*$" "\<(ctrlaltdel)\>" "\<(initdefault)\>"
  color brightgreen "/dev/sr.*$" "/dev/cd.*$" "\/sbin.*$"
  color cyan "/dev/sd.*$"
  color brightcyan "^.*(nfs|smbfs|tmpfs).*$"
  color yellow "/dev/fd.*$"
  color red "root"
  color cyan "\<(rm|test)\>"
  color cyan "((\/|\/usr\/|\/usr\/local\/)(bin\/|sbin\/)[a-zA-Z_0-9,-]+)"
  color magenta "(\$|)[a-zA-Z_0-9]+( |)="
  color red "\$\{?[a-zA-Z_0-9]+\}?"
## comments
  color green "^( *|	*)#.*$"
## header
  color brightgreen "^( *|	*)[#]+ *\$[a-zA-Z_0-9]+:.*$"

## Color setup
  include "/usr/share/nano/asm.nanorc"
  include "/usr/share/nano/awk.nanorc"
  include "/usr/share/nano/cmake.nanorc"
  include "/usr/share/nano/c.nanorc"
  include "/usr/share/nano/css.nanorc"
  include "/usr/share/nano/debian.nanorc"
  include "/usr/share/nano/fortran.nanorc"
  include "/usr/share/nano/gentoo.nanorc"
  include "/usr/share/nano/groff.nanorc"
  include "/usr/share/nano/html.nanorc"
  include "/usr/share/nano/java.nanorc"
  include "/usr/share/nano/lua.nanorc"
  include "/usr/share/nano/makefile.nanorc"
  include "/usr/share/nano/man.nanorc"
  include "/usr/share/nano/mgp.nanorc"
  include "/usr/share/nano/mutt.nanorc"
  include "/usr/share/nano/nanorc.nanorc"
  include "/usr/share/nano/objc.nanorc"
  include "/usr/share/nano/ocaml.nanorc"
  include "/usr/share/nano/patch.nanorc"
  include "/usr/share/nano/perl.nanorc"
  include "/usr/share/nano/php.nanorc"
  include "/usr/share/nano/pov.nanorc"
  include "/usr/share/nano/python.nanorc"
  include "/usr/share/nano/ruby.nanorc"
  include "/usr/share/nano/sh.nanorc"
  include "/usr/share/nano/spec.nanorc"
  include "/usr/share/nano/tcl.nanorc"
  include "/usr/share/nano/tex.nanorc"
  include "/usr/share/nano/xml.nanorc"

 

Финиш

И, наконец, перезагружаем наш сервер:

$ reboot

 

Настройка различных сервисов

Так же, можно прочитать следующие заметки по настройке различных сервисов в CentOS/RHEL:


Comments

  1. Eugene Taradayko
    21.01.2016 - 18:41

    Не смог удержаться чтобы не поделиться только что случано найденными ну очень удобными фичами для первоначальной настройки. Из-за лени переводить не буду (сегодня каждый админ должен знать английский) 🙂 :

    Change the default network interface name to “eth0”

    CentOS7 has a default nic name as “en016…..”, as we can see in above screenshoot. To change it back to the default network device name like “ethX”, edit the grub file:
    vi /etc/default/grub
    Search for the line “GRUB_CMDLINE_LINUX” and append the following: “net.ifnames=0 biosdevname=0″
    Will look like this:

    GRUB_CMDLINE_LINUX=»rd.lvm.lv=rootvg/usrlv rd.lvm.lv=rootvg/swaplv crashkernel=auto
    vconsole.keymap=usrd.lvm.lv=rootvg/rootlv vconsole.font=latarcyrheb-sun16 rhgb
    quiet net.ifnames=0 biosdevname=0″

    потом grub2-mkconfig -o /boot/grub2/grub.cfg
    затем
    Rename the interface files by renaming the file “/etc/sysconfig/network-scripts/ifcfg-en01…”

    mv /etc/sysconfig/network-scripts/ifcfg-eno16777736 /etc/sysconfig/network-scripts/ifcfg-eth0
    Reboot the system:
    и… мы вернули наш любимый eth0

    Может это не совсем по семерошому но я считаю, что новое именование интерфейсов привносит в жизнь админа гораздо больше вреда чем пользы. IMHO конечно 🙂

  2. Артём Авдеев
    16.02.2016 - 20:06

    Что там с профилями безопасности, на что влияют и с чем есть? Что-то не совсем врубился и в русском руководстве не описано =)

  3. Артем
    14.04.2016 - 12:06

    Зачем у вас в .bash_profile выполняется . /etc/bashrc, bash и так его выполняет при каждом запуске

    • Погуглите различия между login shells и non-login shells.

      • Артем
        14.04.2016 - 12:42

        а зачем переопределять заново системные псевдонимы при каждом login-shell? На это есть другой файл /etc/profile где пользовательские переменные

        • /etc/profile – это системная штука, влияющая на всех пользователей. Я предпочитаю чтобы этот файл оставался неизменным. А всё пользовательское – в его домашней папке. Что касается первого вопроса, по-моему я это сделал для того, чтобы в shell’е Midnight Commander’а работали мои алиасы и т.д. и т.п.

          • Артем
            14.04.2016 - 13:01

            Я и не предлагаю менять файл /etc/profile для этого как раз и есть файлы ~/.bash_profile и ~/.bashrc последний как раз и нужно использовать для определения пользовательских алиасов тогда они и будут работать в mc и т.д. А ваше решение немного костыльное на мой взгляд

          • Последний у меня и используется дла определения пользовательских алиасов. Претензию чётче сформулируйте?
            .bashrc для non-login, т.е. для mc;
            .bash_profile для login, т.е. для bash. Если из .bash_profile убрать вызов .bashrc, то при обычном логине не будет никаких алиасов.

          • Артем
            14.04.2016 - 13:25

            Вы ~/.bashrc удаляете вот — $ rm -f ~/.bashrc, а вместо этого можно было бы использовать его для вызова например ~/.bashrc.d/aliases и ~/.bashrc.d/paths это было бы правильнее чем вы вызываете /etc/bashrc из ~/.bash_profile при этом вообще я не понимаю что при этом происходит но так никто не делает ну это дело ваше конечно

  4. Алексей Куп
    21.02.2017 - 07:56

    Доброго времени суток. Претворяя в жизнь Ваши наработки по центос столкнулся с проблемой отсуствующих репозиториев в установленной из коробки центос7. Т.е. все закачки и установки по вашему мануалу заканчиваются repo — Faild, открыл файл nano -w /etc/yum.repos.d/ а он пустой! команда repolist проказывает status 0. Я правильно понимаю что где что-то у меня не подключено и по всей видимости репозитории? Подскажите пожалуйста как грамотно это настроить?

    Спасибо.

  5. Подскажи плиз. При установке nfs-utils служба rpcbind вешается на ipv6 ::111 порт и слушает. В /etc/netconfig ipv6 закоменчен. Как мне убрать использование ipv6 в nfs?

  6. Полезно! Спасибо вам за проделанную работу!
    После выполнения тюнинга редактора nano, невозможно из PuTTY выполнить вставку текста в файл кликом правой кнопки. В shell_e работает, а в файле — нет.

    • Можно в файле .nanorc закомментировать строчку set mouse. Тогда мышкой нельзя будет передвигать курсор в nano, но должен заработать Copy/Paste.

  7. Да, так работает. Кому как удобней) Спасибо.

Добавить комментарий