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».
Подготовка виртуальной машины
В Parallels Desktop нажимаем на кнопку «Создать…» для создания новой виртуальной машины, затем в мастере Parallels выделяем пункт «Установить Windows или другую ОС с DVD или из образа» и нажимаем на кнопку «Продолжить». В новом окне мастера Parallels выбираем пункт «Образ» и перетягиваем наш iso-образ на окошко мастера. Мастер будет ругаться сообщением «Не удалось определить операционную систему», не будем обращать на это внимание и нажмём на кнопку «Продолжить». Мастер предложит выбрать операционную систему из списка, выберем в нём «CentOS Linux» в группе «Другие версии Linux» и нажмём на кнопку «OK». Выбираем имя виртуальной машины, выбираем расположение виртуальной машины, ставим галочку напротив пункта «Настроить параметры до начала установки» и нажимаем на кнопку «Продолжить». Расписывать все настройки Parallels для виртуальной машины смысла нет, отмечу только что лучше бы оперативной памяти указать не менее 1Гб, количество процессоров можно увеличить до максимума, а вот жёсткий диск можно и урезать до 16Гб (по умолчанию Parallels делает 64Гб). Для минимальной установки и настройки основных сетевых сервисов 16Гб вполне должно хватить. Так же обратите внимание на настройки сети виртуальной машины, для установки нам необходимо чтобы в виртуальной машине был доступен Интернет (можно вместо общей сети указать мостовую, тогда виртуальная машина будет в локальной сети). Я ещё во вкладке «Безопасность» в настройках виртуальной машины ставлю галочки напротив пунктов «Интеграция: Изолировать Linux от Mac» и «Time Machine: Отключить» (так как виртуальная машина тестовая). Теперь закрываем настройки и опять нажимаем на кнопку «Продолжить».
Запуск установки CentOS
Загружаем компьютер (или виртуальную машину) с носителя, который мы подготовили (или напрямую из iso-образа). После загрузки появится меню установщика CentOS 7, которое предлагает запустить процесс установки (пункт «Install CentOS 7» или выполнить диагностику носителя с последующим запуском процесса установки (пункт «Test this media & Install CentOS 7»). Выбираем второй пункт и нажимаем «Enter».
По умолчанию графический установщик будет запущен с разрешением 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. Выбираем из списка слева «Русский» язык, в списке справа оставляем выбранным «Русский (Россия)» и нажимаем на кнопку «Продолжить».
После выбора языка нам откроется основное меню установщика CentOS 7.2. Выбор часового пояса и установку времени с датой пока пропустим, всё равно до настройки сети NTP-клиент доступен не будет.
Настройка клавиатуры
Начнём с настроек клавиатуры, для этого нажмём на кнопку «Клавиатура» и поменяем приоритет у раскладок, передвинув английскую раскладку наверх. Так же, нажав на кнопку «Параметры» можно поменять комбинацию для переключения раскладок (например на Ctrl+Shift). После чего нажмём на кнопку «ОК».
Теперь можно попробовать в поле справа ввести что-нибудь используя национальную раскладку. Если всё нормально – нажимаем на кнопку «Готово».
Настройка сети
Для настройки сети нажимаем на кнопку «Сеть и имя узла» в группе настроек «Система». По умолчанию сеть отключена, для её включения необходимо нажать на переключатель, который находится в верхнем правом углу экрана. Если в вашей сети есть DHCP-сервер, то все сетевые настройки подхватятся из него, также из DNS определится имя хоста. Если же DHCP-сервера нет, то сеть опять перейдёт в состояние «Отключено», в таком случае все сетевые настройки необходимо будет вводить вручную.
Для начала, в поле «Имя узла» впишем полное название нашего сервера, далее нажмём на кнопку «Настроить…». У нас откроется окно для изменений сетевых настроек, в открывшейся вкладке «Ethernet» в поле Device выберем второй пункт, где eth0 прописано вместе с MAC-адресом.
Во вкладке «Общий» ставим галочку напротив пункта «Автоматически подключаться к этой сети, когда она доступна».
Во вкладке «Параметры IPv4» в пункте «Способ настройки» либо оставляем выбранным «Автоматически (DHCP)», если в локальной сети используется DHCP, либо меняем на «Вручную» и заполняем все оставшиеся поля.
Если необходимо добавить какие-нибудь специальные маршруты, это можно сделать нажав на кнопку «Маршруты…».
Если у нас в сети не используется IPv6, тогда во вкладке «Параметры IPv6» в пункте «Способ настройки» выбираем «Игнорировать», в противном случае вводим необходимые данные. После чего нажимаем на кнопку «Сохранить».
Ещё раз проверяем введёные сетевые настройки и если всё правильно, нажимаем на кнопку «Готово» в верхнем левом углу.
После настройки сети мы опять вернёмся в основное меню инсталлятора CentOS 7.2.
Настройка даты и времени
Теперь можно вернуться к пропущенному шагу и настроить часовой пояс и дату. Для этого нажимаем на кнопку «Дата и время» в блоке «Региональные настройки». Сначала выбираем регион и город, а затем в правом верхнем углу выключаем переключатель «Сетевое время» и снова его включаем. После этого время должно синхронизироваться с NTP-сервером. Можно нажать на кнопку «Готово» для возвращения в главное меню установщика.
Настройка репозитария и выбор программ для установки
Сейчас укажем репозитарий из которого будем устанавливать CentOS, для этого нажимаем на кнопку «Источник установки» в блоке «Программное обеспечение». В поле источника установки указываем путь к основному репозиторию CentOS (в моём случае я указываю mirror.yandex.ru/centos/7/os/x86_64/). В случае если доступ к Интернету у вас осуществляется через прокси – самое время это указать, нажав на кнопку «Настроить прокси…». Далее нажимаем на кнопку «Готово».
Если адрес репозитория указан верно, то теперь под названием кнопки «Источник установки» появится адрес репозитория, а с иконки кнопки уберётся оранжевый треугольник. Если это произошло – нажимаем на кнопку «Выбор программ» в блоке «Программное обеспечение». Во время первоначальной установки я устанавливаю только минимальный набор программ, а все сервисы, которые будут работать на сервере устанавливаю и настраиваю позже. Так что оставляю выбранным пункт «Минимальная установка» и нажимаю на кнопку «Готово».
Опять возвращаемся в основное меню инсталлятора CentOS 7.2.
Настройка дисковой подсистемы
Теперь настало время настроить диск для установки CentOS, для чего нажмём на кнопку «Расположение установки» во вкладке «Система». В появившемся окне смотрим чтобы галочкой был выделен нужный нам жёсткий диск, отмечаем пункт «Я настрою разделы» в блоке «Разбиение» и нажимаем на кнопку «Готово».
У нас откроется мастер разметки жёсткого диска. Если диск был прежде пустым, то Вы увидите такую картинку.
Как видно, здесь количество свободного места равно количеству всего места. Если так, то следующий шаг нужно пропустить. Если же на диске уже что-то было записано, то Вы увидите такую картинку.
Как видно, наш диск уже разбит на разделы. Для того чтобы их удалить, разворачиваем пункт «CentOS Linux Linux 7.2.1511 for x86_64» (у Вас название пункта может быть другим), выделяем верхний раздел и нажимаем на кнопку удаления раздела.
Когда появятся вопрос «Удалить все данные с vdaX?», нужно будет поставить галочку напротив пункта «Удалить все остальные файловые системы» и нажать на кнопку «Удалить».
После удаления разделов нажимаем на кнопку «Создать их автоматически».
Нашему взору откроется такая вот картина автоматического разбиения:
Не сказал бы, что это оптимальный вариант. Поэтому немного изменим конфигурацию дисков. Для этого сначала выделим корневой раздел «/» и изменим требуемый размер на 16 GiB (не смотря на то, что в русском инсталляторе размерность пишется по-русски – МиБ и ГиБ, инсталлятор их не принимает. т.е. если написать «16 ГиБ», а потом нажать на «Применить» – размер не сохранится, нужно писать именно «16 GiB»). Тип устройства LVM и файловую систему xfs оставим без изменения, но вот название «Volume Group» изменим, для чего нажмём на кнопку «Изменить…». По умолчания установщик называет группу томов LVM как centos_hostname, заменим это на vg_hostname (вместо hostname подставьте название вашего хоста). После чего нажимаем на кнопку «Сохранить».
Теперь поменяем имя раздела, вместо root напишем lv_root и нажмём на кнопку «Применить».
Для ровного числа заменим размер раздела «/boot» – вместо «500 МиБ» укажем «0,5 GiB». Тип устройства раздела «/boot» оставляем стандартным, файловую систему так же оставляем xfs, но в поле «Метка» прописываем «boot» после чего нажимаем на кнопку «Применить».
Далее изменим настройки раздела для свопа. Выделим этот раздел и изменим имя на «lv_swap», после чего нажмём на кнопку «Применить». Как видим, установщик CentOS нам ещё создал раздел для домашних папок пользователей размером почти 20 гигабайт. Нам такой раздел не нужен, поэтому удалим его.
Итак, у меня осталось неразмеченным около 45 гигабайт. Для хранения данных различными сервисами, я использую специальный раздел «/srv», поэтому создадим его. Для этого нажимаем на кнопку «+», вводим вручную точку монтирования «/srv» и указываем размер 32 GiB, после чего нажимаем на кнопку «Добавить».
После добавления раздела «/srv», исправим его имя на «lv_srv», после чего нажмём на кнопку «Применить».
Необходимые разделы созданы. У меня осталось около 13 гигабайт. Оставлю их резервными, а в случае необходимости, расширю любой из имеющихся разделов. Но теперь очень важно выделить корневой раздел «/», нажать на кнопку «Изменить…» и выбрать в поле «Выбор размера» значение «Как можно больше», вместо «Автоматически».
Если этого не сделать, то в случае если сумма всех ваших создаваемых разделов будет меньше размера диска – инсталлятор создаст раздел для LVM’а размером аккурат в сумму размеров ваших разделов. Если же выбрать значение «Как можно больше», то раздел будет создан максимального размера, а оставшееся свободное место будет свободным в нашем LVM’е. Если же так случилось, что у вас уже свободное место оказалось не в LVM’е, а просто является неразмеченной областью на диске, и Вы хотите раздел с LVM’ом увеличить, то прочитав «эту» статью, Вы поймёте как это сделать.
После создания разделов на диске нажимаем на кнопку «Готово». Нам будет представлен список изменений, которые будут проделаны с нашим диском. Здесь нам нужно нажать на кнопку «Принять изменения».
Итак, все необходимые действия для установки CentOS произведены. В принципе, можно уже нажимать на кнопку «Начать установку» для установки CentOS.
Настройка политики безопасности и kdump
Но, начиная с версии CentOS 7.2 у нас появился ещё один пункт настроек в инсталляторе. Появилась группа «Security», а в ней пункт «Security Policy». Как видно на картинке, сейчас там светится надпись «No profile selected». Нажмём на этот пункт. Для настройки «security policy» выбираем пункт «Standard System Security Profile» и нажимаем на кнопку «Select profile». Затем нажимаем на кнопку «Готово».
Так же, начиная с версии CentOS 7.2 в блоке «Система» появился пункт «KDUMP». Это возможность включения/выключения механизма сбора статистики о сбоях ядра. Нажмём на этот пункт и уберём галочку с пункта «Включить kdump» (тому кому действительно необходим kdump, галочку убирать не нужно 🙂 ). Это позволит сэкономить около 128 мегабайт оперативной памяти. Далее нажимаем на кнопку «Готово».
Вот теперь все необходимые настройки в инсталляторе выполнены, нажимаем на кнопку «Начать установку» для установки CentOS 7.2.
Запуск процесса установки
Первым делом установщик произведёт разбиение диска на разделы, как мы указали ранее. Затем разделы будут отформатированы и начнётся установка пакетов. В минимальной установке этих пакетов 303. После установки пакетов будет произведена их первоначальная настройка.
В то время пока пакеты устанавливаются и настраиваются – мы зададим пароль для пользователя root и создадим пользователя для повседневной работы (во время установки создание пользователя шаг не обязательный, его можно будет в любой момент создать позже).
После установки пароля администратора оранжевый треугольнички с пунктов меню исчезнут.
Так же можно создать пользователя для повседневной работы. Если поставить галочку напротив пункта «Сделать этого пользователя администратором», то пользователь после создания будет добавлен в группу «wheel».
Последним шагом перед перазагрузкой установщик настроит загрузчик операционной системы. После чего нужно будет нажать на кнопку «Перезагрузка», для того чтобы загрузился свежеустановленный CentOS.
Не забудьте отключить ISO-образ, иначе виртуальная машина загрузится с образа.
Поздравляем! Установка 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».
Загрузка по умолчанию достаточно молчаливая, не показывается ровным счётом ничего. А после загрузки нас ждёт стандартное приглашение ввода имени пользователя и пароля.
Дальше кому как удобно – можно либо подключаться через 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:
- Настройка syslog-ng
- Настройка DNS-сервера (bind)
- SSL/TLS-сертификаты для лентяев
- Настройка VPN-сервера (OpenVPN)
- Настройка LAMP-сервера (Linux, Apache, MariaDB/MySQL, PHP)
- Настройка почтового сервера (Postfix, Dovecot, MariaDB/MySQL)
- Настройка спам-фильтра DSpam (dspam, dspam-web, dovecot-antispam)
- Настройка почтового веб-интерфейса (RoundCube)
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 конечно 🙂
Артём Авдеев
16.02.2016 - 20:06
Что там с профилями безопасности, на что влияют и с чем есть? Что-то не совсем врубился и в русском руководстве не описано =)
Артем
14.04.2016 - 12:06
Зачем у вас в .bash_profile выполняется . /etc/bashrc, bash и так его выполняет при каждом запуске
Wakko
14.04.2016 - 12:08
Погуглите различия между login shells и non-login shells.
Артем
14.04.2016 - 12:42
а зачем переопределять заново системные псевдонимы при каждом login-shell? На это есть другой файл /etc/profile где пользовательские переменные
Wakko
14.04.2016 - 12:46
/etc/profile – это системная штука, влияющая на всех пользователей. Я предпочитаю чтобы этот файл оставался неизменным. А всё пользовательское – в его домашней папке. Что касается первого вопроса, по-моему я это сделал для того, чтобы в shell’е Midnight Commander’а работали мои алиасы и т.д. и т.п.
Артем
14.04.2016 - 13:01
Я и не предлагаю менять файл /etc/profile для этого как раз и есть файлы ~/.bash_profile и ~/.bashrc последний как раз и нужно использовать для определения пользовательских алиасов тогда они и будут работать в mc и т.д. А ваше решение немного костыльное на мой взгляд
Wakko
14.04.2016 - 13:05
Последний у меня и используется дла определения пользовательских алиасов. Претензию чётче сформулируйте?
.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 при этом вообще я не понимаю что при этом происходит но так никто не делает ну это дело ваше конечно
Алексей Куп
21.02.2017 - 07:56
Доброго времени суток. Претворяя в жизнь Ваши наработки по центос столкнулся с проблемой отсуствующих репозиториев в установленной из коробки центос7. Т.е. все закачки и установки по вашему мануалу заканчиваются repo — Faild, открыл файл nano -w /etc/yum.repos.d/ а он пустой! команда repolist проказывает status 0. Я правильно понимаю что где что-то у меня не подключено и по всей видимости репозитории? Подскажите пожалуйста как грамотно это настроить?
Спасибо.
Макс
10.05.2017 - 10:48
Подскажи плиз. При установке nfs-utils служба rpcbind вешается на ipv6 ::111 порт и слушает. В /etc/netconfig ipv6 закоменчен. Как мне убрать использование ipv6 в nfs?
Vik
28.09.2017 - 15:11
Полезно! Спасибо вам за проделанную работу!
После выполнения тюнинга редактора nano, невозможно из PuTTY выполнить вставку текста в файл кликом правой кнопки. В shell_e работает, а в файле — нет.
Wakko
28.09.2017 - 15:17
Можно в файле .nanorc закомментировать строчку set mouse. Тогда мышкой нельзя будет передвигать курсор в nano, но должен заработать Copy/Paste.
Vik
28.09.2017 - 15:55
Да, так работает. Кому как удобней) Спасибо.