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

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

CentOS 7 установка и настройка

Рассмотрим установку системы CentOS 7 и последующую настройку исходя из практики использования этой операционной системы. Данная система для меня основная для использования на серверах в продакшн. Стабильность работы гарантированна. Поддержка 10 лет.

Введение

В данной статье я постарался в одном месте собрать все основные моменты базовой настройке сервера CentOS 7 которые использую на практике.

Установка CentOS 7

Создания USB носителя для установки

Существует множество программ для записи iso образа на устройство. Например, у меня два варианта для создания носителя для установки:

    Rufus — использую эту программа для создание загрузочных USB-дисков в системе Windows;

ROSA ImageWriter — использую эту програму для любой системы Linux.

Варианты установки

Рассмотрим два самых популярных варианта установки СentOS 7.

Образы iso CentOS 7

Все свежие образы можно скачать по ссылке Download CentOS. Существует два варианта:

  1. DVD ISO — полный образ;
  2. Minimal ISO — минимальный образ.

Выбор за вами. Мне нравится устанавливать минимальный вариант и дальше настраивать руками, так и опыт приходит и понимаешь как что работает.

Для сервера CentOS 7 система идеальна в плане обслуживания и стабильности работы.

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

Шаблоны

Шаблоны используются как правило для установки на VDS и предоставляются компаниями предоставляющие такие услуги. Удобно, но т ем не менее я пару раз попадал в дурацкие ситуации.

Вот моменты почему я советую использовать установку на VDS систем с iso образа:

  • Разбивка диска порой не учитывает конфигурацию тарифа или требований вашей системы — например, на одном хостинге при 2 G оперативной памяти был создал SWAP раздел в 512 М в результате пришлось переустанавливать систему дабы не терять место на и так небольшом диске;
  • Локализация как правило Английская — мне приятней работать на своем родном языке хотя и на английском если надо всё настрою;
  • Присутствие в шаблоне каких-то изменений отличающихся от стандартных минимальных параметров установки — порой не понимаешь откуда взялись какие то настройки которых раньше не видел. Кроме того, можно потратить кучу времени не понимая почему не работает то что всегда работало как часы. В итоге выясняется что в шаблоне установки нет пакета который всегда ставился в стандартном минимальном образе.

Все компании предоставляющие услуги VDS могут предоставить возможность установки системы с ISO образа системы. При установке надо правильно указать сетевые параметры исходя из предоставленных сетевых параметров настроек выбранного тарифа!

Разбивка диска для установки

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

  • Размер диска под систему Linux 50 G — этого мне хватает с запасом;
  • Создаю раздел boot размером 1 G — так я гарантирую что при заполнении диска система загрузится однозначно;
  • Создаю SWAP — согласно требованиям системы.

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

Тема организации SWAP на сервере очень важная и поэтому я описал все основные моменты использования в статье SWAP для Linux

Настройка CentOS 7

Информация об установленной системе

Узнать какая система установлена на сервере можно следующей командой:

Этой информации достаточно для понимания с какой системой предстоит работать.

Отключение SELinux

Отключаем SELinux. Его использование и настройка в системе CentOS 7 отдельный разговор.

Перезагрузим для применения изменений. После перезагрузки проверяем статус:

Надо иметь четкое понимание что SELinux система требующая хорошего понимания в том как она работает и как настраивать. Надо или отключить сразу или потратить время на изучение как она работает.

Добавление репозиториев

Для инсталляции различного софта необходимо подключить репозитории в CentOS 7. Со временем пришло понимание того что относится к добавляемым репозиториям надо очень внимательно, чтобы в последствии не возникало проблем при обслуживании.

Всегда подключаю самый популярный репозиторий Epel (Extra Packages for Enterprise Linux). Epel хранилище пакетов, созданное группой специалистов операционной системы Fedora. Пакеты из Epel репозитория никогда не конфликтуют и не переустанавливают базовые пакеты RHEL.

Для свежих версий PHP использую репозиторий Remi. Расскажу про это в статье посещенной серверу LEMP.

Старюсь подключать репозитории которые поддерживают сами разработчики программ. Например, такие как Nginx, Zabbix, MariaDB.

Обновление CentOS 7

Обновление системы очень важный момент и следует относится к нему очень внимательно. Всегда проще найти проблему когда проходит немного обновлений.

Прежде всего, всегда перед обновлениями делайте резервные копии!

Перед выполнением настройки лучше выполнить полное обновление системы:

Автоматическое обновление системы

Для безопасности сервера его необходимо своевременно обновлять. Вариантов обновления CentOS 7 несколько и это тема отдельного длинного разговора.

Например, получать сообщения на почту об появившихся обновлениях и уже на основании этого принимать решение о необходимости обновления — для меня лучший вариант.

Читать еще:  Размещаем рекламу в Одноклассниках

При моих пожеланиях мне подойдёт утилита yum-cron. Ставится она из базового репозитория командой:

После установки создается автоматическое задание на выполнение утилиты в /etc/cron.daily и /etc/cron.hourly.

По-умолчанию, утилита скачивает найденные обновления, но не устанавливает их. Администратору на локальный почтовый ящик root отправляется уведомление об обновлениях.

Конфигурационный файл настройки yum-cron находятся по адресу /etc/yum/yum-cron.conf.

Самый важный параметр это update_cmd — которой будет говорить системе какие выполнять обновления. Доступно несколько вариантов:

  • default — полное обновление;
  • security — только обновление безопасности;
  • security-severity:Critical — только критические обновления безопасности;
  • minimal — минимальное обновление с исправлениями ошибок;
  • minimal-security — исправления ошибок и обновления безопасности;
  • minimal-security-severity:Critical — исправления ошибок и критические обновления.

В разделе настроек [email] указаты параметры отправки сообщений. По умолчанию отправка сообщений идет пользователю root.

Обычно я настраиваю глобально для всего сервера пересылку локальной почты root на внешний почтовый ящик через авторизацию на другом smtp сервере.

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

В результате мои настройки примут следующий вид:

Согласно которым будут скачиватся все пакеты где есть исправления ошибок и обновления безопасности. Установка производиться не будет а на почту придет сообщение.

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

Популярные и полезные утилиты

Установим в начале основные популярные утилиты которые обычно требуются в работе.

  • net-tools bind-utils — сетевые утилиты после установки которых будут работать команды # ifconfig и # nslookup,
  • htop atop — два интересных диспетчера задач,
  • iftop — показывает в режиме реального времени загрузку сетевого интерфейса,
  • lsof — вывода информации о том, какие файлы используются теми или иными процессами,
  • wget — неинтерактивная консольная программа для загрузки файлов по сети,
  • bzip2 — утилита командной строки с открытым исходным кодом для сжатия данных ,
  • traceroute — утилита предназначенная для определения маршрутов следования данных в сетях TCP/IP,
  • fdisk — умеет работать с GPT-дисками разработано по подобию fdisk ,
  • yum-utils — — это набор утилит для управления репозиториями, установки и отладки пакетов, поиска пакетов и много другого.

Отправка почты с авторизацией на другом SMTP сервере

Настраиваем на базе Postfix.

Если Postfix не установлен то производим установку выполнив команду:

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

Чтобы отправлять письма с консоли необходимо установить пакет mailx:

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

Настройка Centos 7 сразу после установки

Network Manager

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

Вариант в одну строку:

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

Настройки сетевых интерфейсов указываются в файле /etc/sysconfig/network-scripts/ifcfg-eth0.

Однако в Centos 7 файл конфигурации сетевого интерфейса может иметь имя наподобие ifcfg-enp0s1. Как изменить имя сетевого интерфейса можно прочитать здесь.

Если Вы не используете протокол IPv6, то можно закомментировать все строки с ним.

Прописываем имя этого сервера в /etc/sysconfig/network и /etc/hostname:

Не забываем прописывать DNS в /etc/resolv.conf

Перезапускаем сетевую подсистему:

Теперь можно подключиться к серверу по SSH.

Если используется proxy-сервер добавляем его адрес в файл /etc/yum.conf:

Устанавливаем программу для загрузки файлов по сети wget:

Добавляем в файл /etc/wgetrc адрес proxy-сервера:

Так же в Centos 7 по умолчанию включена система принудительного контроля доступа SELinux (англ. Security-Enhanced Linux — Linux с улучшенной безопасностью). Она расширяет стандартные стандартные права доступа. Использовать её или нет зависит от требований к серверу и его назначению. Настройка данной системы представляет собой материал отдельной статьи.

Если же Вам данная система не нужна, отключаем SELinux:

Подключение EPEL репозитория

EPEL (Extra Packages for Enterprise Linux) — это основанный сообществом открытый и бесплатный проект репозитория, предоставляемый командой Fedora, который содержит высококачественные пакеты дополнительного программного обеспечения для Linux дистрибутивов, включая RHEL (Red Hat Enterprise Linux), CentOS, и Scientific Linux.

FireWall

Отключаем FireWall
Настройка Firewall это также тема отдельной статьи. Но на некоторых серверах в нем нет надобности и его можно отключить:

Установка и настройка NTPD

Для того, чтобы на сервере всегда было точное время необходимо установить и настроить ntpd.

ntpd (Network Time Protocol daemon) — программа-демон, который устанавливает и обслуживает системное время, используется для синхронизации с другими серверами времени.

Устанавливаем таймзону (часовой пояс)

Далее нужно указать сервера времени с которыми будет синхронизировать время наш сервер.

Адреса этих серверов можно найти в интернете, лучше выбирать ближайшие сервера, то есть искать сервера расположенные в вашей стране.

Указываем сервера синхронизации в vi /etc/ntp.conf (лучше не меньше трех):

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

Читать еще:  Создаем опрос в группе ВКонтакте

Сервера с которыми сверяемся, должны иметь возможность менять наше время:

В restrict лучше указывать ip адрес вместо доменного имени, для избежания ошибок.

Для сверки корректности ip адресов рекомендую посетить сайт www.ntp-servers.net

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

Если включен Firewall добавляем ntp в исключения:

Добавляем в автозапуск:

Дополнительные полезные утилиты.

Обязателен для установки набор утилит для сборки программ из исходного кода и создания rpm пакетов.

При минимальной установке в Centos 7 отсутствуют некоторые полезные утилиты для работы с сетью arp, hostname, ifconfig, netstat, rarp, route, plipconfig, slattach, mii-tool, iptunnel и ipmaddr. Чтобы вернуть их необходимо установить набор утилит net-tools.

Официальная страничка проекта net-tools здесь.

Также полезно установить lsof (от англ. LiSt of Open Files) — утилита показывает какие файлы используются теми или иными процессами.

Установим Midnight Commander — файловый менеджер для удобного перемещения по файловой системе и управления файлами. Она состоит из 2 панелей (фрэймов), в которых может отображаться информация о двух выбранных каталогах одновременно, содержимое, выбранного в одной из панелей, файла, и многое другое.

Установим htop — утилита для просмотра состояния сервера.

Вот пожалуй и вся универсальная настройка Centos 7 после установки.

Далее уже идет настройка сервера под Ваши задачи.

Начальная настройка Centos 7

Автор: Килобаксик · Опубликовано 01.03.2018 · Обновлено 28.10.2019

Проверяем, что за система у нас

Увидим текущую версию ОС.

Устанавливаем сетевой пакет

Чтобы работала команда nslookup:

Сразу для работы с текстовыми файлами (конфигами) устанавливаем Midnight Commander:

И сразу же для удобства, меняет расцветку синтаксиса:

Отключаем SELinux, для этого открываем файл на редактирование с помощью Midnight Commander:

И у SELINUX ставим параметр disabled.

После отключения SElinux необходимо перезагрузиться или выполнить команду:

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

Firewall

Фаерволом в CentOS 7 является iptables. И для управления им в центос придумала другая утилита – Firewalld. Я ею не пользуюсь, поэтому останавливаю ее и удаляю из автозагрузки, т.к. удобнее пользоваться самописным скриптом, который кроссплатформенный между разными линуксами:

Установливаем утилиты для iptables:

Включаем iptables в автозагрузку:

Посмотреть текущие настройки можно командой:

Теперь создадим текстовый файл (скрипт) для iptables:

Делаем файл c правилами исполняемым:

и запускаем его:

При каждом запуске скрипта, все изменения записываются в файл /etc/sysconfig/iptables и применяются при загрузке системы.

Проверить, применились ли правила можно командой:

По умолчанию, сервис работает на 22 порту. Для безопасности его лучше сменить на любой другой свободный. Открываем конфиг

Нужно раскомментировать строку Port 22 и заменить значение 22 на любое другое, например 99999. Сохраняем.

Теперь нужно добавить в настройки фаервола наш новый порт в разрешенные. Открываем скрипт для iptables

И вместо 22 пишем 99999. Сохраняем и запускаем этот скрипт!

Можно проверить на каком порту висит сейчас sshd

видим 99999, значит все ок.

Добавление репозиториев

Добавим популярный репозиторий EPEL

Настройка bash_history (по желанию)

Все подробно расписал товарищ в этой статье.

Самое основное. Список последних выполненных команд хранится в домашней директории пользователя в файле .bash_history (в начале точка).

Нам нужно отредактировать файл .bashrc, который находится в том же каталоге, что и файл с историей.

Добавляем в него следующие строки:

Чтобы изменения применились, нужно разлогиниться и залогиниться снова.

Отключаем флуд сообщений в /var/log/messages

Сохраняем и перезапускаем:

Мониторинг – iftop, atop, htop, lsof

iftop показывает в режиме реального времени загрузку сетевого интерфейса

lsof поможет узнать какие файлы используются теми или иными процессами:

Обычно после этого требуется настроить веб-сервер, к примеру на связке nginx+apache. Статья описывающая эту связку.

в комментах черканите, что исправить/добавить/убрать. спасибо:)

Установка FTP на CentOS7 (vsftpd)

Автор: Килобаксик · Published 30.06.2018 · Last modified 28.10.2019

Веб-сервер на связке NGINX + Apache (httpd) + MariaDB + PHP + PHPMyAdmin +FTP на CentOS 7

Автор: Килобаксик · Published 20.05.2018 · Last modified 28.10.2019

Vi редактор в Centos7

Автор: Килобаксик · Published 17.12.2017 · Last modified 20.08.2018

Всё сделал с точностью до буквы. Смена порта не получилась. Команда “netstat -tulpn | grep sshd” выводит новый номер порта, однако присоединиться через него не получается. Видно кроме этого нужно что-то ещё сделать, что в статье отсутствует.

в фаерволе разблокировали новый порт?

Да, конечно, новый порт открыл, а старый закрыл. Причина оказалась в том, что новый порт был чем-то занят, хотя перед его открытием проверил занятые порты. Нашёл список портов в Wikipedia, в нём свободный диапазон портов и выбрал из него порт. После этого всё заработало. Я так понимаю. номер порта 99999 указан в статье для примера, как реальный, его я не рассматривал, ибо порта с номером более 65535 не существует, а диапазон 49152—65535 (цитата из Wikipedia) содержит динамически выделяемые или частные порты, которые не регистрируются IANA. Эти порты используются временными (короткоживущими) соединениями «клиент — сервер» или в определённых частных случаях. Этот … Подробнее »

Читать еще:  Создаем водяной знак в Фотошопе

Установка и настройка LAMP-стека на Centos 7

В этом руководстве будет рассмотрен процесс настройки LAMP-стека на виртуальные серверы под управлением операционной системы Centos 7.

Виртуальный сервер CentOS

  • Бесплатное тестирование
  • Стоимость от 0,4 руб./час
  • Безлимитный трафик

Что такое LAMP-стек?

LAMP — это набор кроссплатформенного ПО для создания web-серверов. Название стека получается из первых букв в названиях используемых технологий Linux, Apache, MySQL и PHP.

Установка Apache

На сегодняшний день веб-сервер Apache является самым популярным веб-сервером в мире. Это отличный выбор для размещения вашего веб-сайта.

Установите пакеты из главного репозитория с помощью менеджера пакетов yum: sudo yum install httpd

После установки вы можете запустить Apache на своем виртуальном сервере: sudo systemctl start httpd.service

Для тестирования успешной установки сервера, перейдите в браузере по следующей ссылке, указав IP-адрес вашего сервера: http:// /

Примечание: если у вас не получается подключиться, проверьте настройки FireWall, веб-сервер Apache по умолчанию работает на порту 80, чтобы добавить правило выполните следующие команды: iptables -A IN_public_allow -p tcp -m tcp –dport 80 -m conntrack –ctstate NEW -j ACCEPT
iptables-save

Вы увидите веб-страницу Apache по умолчанию.

Чтобы запускать данный web-сервер при включении машины, добавьте сервис в автозагрузку: sudo systemctl enable httpd.service

Установка MySQL/MariaDB

В CentOS 7 MySQL заменяется на популярный аналог – MariaDB. MariaDB имеет те же возможности, что и MySQL, и при этом является полностью бесплатной.

Примечание: если вы предпочитаете использовать базу данных MySQL в CentOS 7 или ваше приложение привязанно именно к ней, вам нужно будет добавить необходимые репозитории и установить БД с помощью команд: sudo yum install http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm sudo yum install mysql-server sudo systemctl start mysqld sudo mysql_secure_installation

Установите пакеты из главного репозитория с помощью менеджера пакетов yum: sudo yum install mariadb-server mariadb

После установки вы можете запустить базу данных на своем виртуальном сервере: sudo systemctl start mariadb

После успешного старта базы данных MySQL необходимо выполнить настройки безопасности и удалить некоторые значения по умолчанию. Запустите интерактивный скрипт с помощью следующей команды: sudo mysql_secure_installation

При первом запуске пароль по умолчанию у суперпользователя отсутствует, поэтому нажмите Enter.

Далее приведен отрывок диалога базовых настроек.

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we’ll need the current
password for the root user. If you’ve just installed MariaDB, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on.

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
. Success!

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
. Success!

Normally, root should only be allowed to connect from ‘localhost’. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] n
. skipping.

By default, MariaDB comes with a database named ‘test’ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
– Dropping test database.
. Success!
– Removing privileges on test database.
. Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
. Success!

All done! If you’ve completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Чтобы запускать базу данных при включении машины, добавьте сервис в автозагрузку: sudo systemctl enable mariadb.service

Установка PHP

Для установки компонента обработки программного кода PHP установите пакеты из главного репозитория с помощью менеджера пакетов yum: sudo yum install php php-mysql

Добавьте компонент в автозагрузку: sudo systemctl restart httpd.service

Установка PHP Modules

Для повышения функциональности PHP вы можете дополнительно установить некоторые модули с помощью менеджера пакетов yum: sudo yum install

Например: sudo yum install php-xml.x86_64

Чтобы вывести на экран список доступных пакетов выполните следующую команду: yum search php-

Чтобы вывести информацию о доступном пакете выполните следующую команду: yum info php-xml.x86_64

Проверка работы PHP на вашем Web-сервере

Чтобы проверить корректность настроек создайте следующий файл, с помощью команды touch: sudo touch /var/www/html/info.php

Откройте его с помощью любого текстового редактора, например, nano: nano /var/www/html/info.php

Внесите в него следующую строку и сохраните: