Centos как запустить сервер

Обновлено: 07.07.2024

Добавление пользователя с привилегиями sudo

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

Теперь создайте новому пользователю пароль для входа в систему:

И наконец, для предоставления ему привилегий sudo, пользователя new-user необходимо добавить в группу wheel :

С этого момента вы можете использовать для администрирования учётную запись пользователя new-user . Для регистрации в системе из-под пользователя root используйте:

Настройка базового брандмауэра

На следующим этапе, необходимо будет произвести настройки на межсетевом экране вашего сервера. В CentOS Stream функцию брандмауэра выполняет такой сервис, как firewalld .

Скорее всего firewalld уже входит в состав служб операционной системы, но даже если это и так, произведите обновление списка пакетов и зависимостей из репозитория CentOS Stream:

После этого произведите инсталляцию брандмауэра:

Если firewalld уже установлен, вы увидите подобный вывод:

Установка сервиса firewalld при первоначальной настройке сервера с CentOS Stream

Следующей командой проверьте, запущена ли служба firewalld :

Система должна откликнуться примерно так:

Статус службы firewalld при первоначальной настройке сервера с CentOS Stream

Теперь, необходимо посмотреть, каким сервисам уже предоставлен доступ через ваш брандмауэр:

Обратите внимание на строку services :

Брандмауэр CentOS Stream

Брандмауэр CentOS Stream

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

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

Аутентификация при помощи ключей SSH

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

Сначала создайте пару ключей на своей клиентской рабочей станции (локальном компьютере). Для этого наберите в командной строке:

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

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

В итоге, система выдаст вам нечто похожее на:

Создание ключей при настройке CentOS Stream

Это значит, что пару открытого и секретного ключей вы создали.

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

Файл открытого ключа

Подключитесь к серверу и создайте в домашней директории каталог /.ssh/ :

Создайте в этой папке файл authorized_keys и скопируйте в него содержимое буфера обмена, например, при помощи редактора vi:

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

Содержимое authorized_keys при первоначальной настройке сервера с CentOS Stream

Далее, каталогу /.ssh/ необходимо дать соответствующие права:

Теперь, если вы ранее создавали пару открытого и секретного ключей в каталоге, отличном от дефолтного, вам необходимо скопировать файлы ключей в директорию, используемую вашей локальной рабочей станцией для их хранения. После чего, при последующих подключениях к серверу по SSH ( > ssh new-user@your-server-ip ), система не будет требовать от вас введения пароля вашей учётной записи. Но, вместе с тем, если при создании ключей вы использовали парольную фразу, её необходимо будет набрать при входе на сервер.

И сейчас, с точки зрения повышения безопасности на ещё более высокий уровень, было бы логично отключить возможность входа на сервер с помощью пароля. Для чего, необходимо отредактировать файл sshd_config , который находится в каталоге /etc/ssh/ :

И теперь, после перезагрузки службы sshd , подключение к вашему серверу с использованием пароля станет невозможным:

Управление сервером через web-интерфейс

Первоначальная настройка сервера с CentOS Stream завершается запуском cockpit .

Вашим сервером можно управлять при помощи подключения к нему через web-интерфейс.

Для этого необходимо установить предназначенную для этого службу. Она называется cockpit :

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

А также, добавить службу в автозапуск:

Подключение к web-интерфейсу происходит через порт 9090. Добавьте возможность этого подключения в брандмауэр сервера и перезапустите firewalld :

Web-интерфейс CentOS Stream

Таким образом, вы сможете администрировать свой сервер, используя более приятную web-оболочку.

В своей статье я хочу представить уважаемому хаброобществу практическое руководство по сборке, настройке и вводу в эксплуатацию недорогого и экономичного сервера на платформе Intel Atom и ОС Centos 7. Сей труд не претендует на полноценный и исчерпывающий учебник и рассчитан, скорее, на начинающих, чем на профессионалов. Если человек, до этого в глаза линукс не видевший, сможет при помощи этой статьи сконфигурировать свой первый сервер, я буду считать свою задачу выполненной.

Первая часть статьи (небольшая по объёму) посвящена аппаратной составляющей, а вторая, основная часть — подробному описанию процесса настройки на этой аппаратуре системы Centos 7. Кому интересно, прошу под кат.

Седьмое поколение систем семейства Red Hat (RHEL7, Centos 7, Sceintific Linux 7, Fedora 20) является пока ещё довольно новым, и, несмотря на очень подробную документацию на официальном сайте Red Hat, далеко не все удалось завести вполоборота. Поэтому я и решил написать подробное how-to на тему настройки сервера общего назначения с использованием последнего дистрибутива Centos.

  • Энергоэффективность
  • 19-дюймовый корпус для монтажа в стойку, высотой не более 1.5U и глубиной не более 30 см,
  • Доступ к дискам спереди,
  • Минимум два гигабитных сетевых порта,
  • Полностью пассивное охлаждение, то есть отсутствие вентиляторов как на процессоре, так и на блоке питания. Это требование чисто эстетическое, так как изделие будет использоваться в домашних условиях.
  • Маршрутизатор (IP router) и межсетевой экран (firewall),
  • X-сервер с современной оболочкой, лично мне очень нравится третий Gnome. Будет использоваться как для администрирования, так и для нечастого запуска прикладных программ, с которыми я имею дело по роду своей профессиональной деятельности,
  • Сервер точного времени (NTP),
  • DNS для внутренней сети с блокировкой баннерных сетей (идея позаимствована отсюда),
  • Высокопроизводительный файловый сервер.

Немного про аппаратную составляющую

Корпус я отыскал достаточно быстро: По высоте всего 1U, по глубине — 25 см. Отсюда сразу же возникли ограничения на материнскую плату — Mini-ITX, и на блок питания — 1U FlexATX.

С материнской платой все оказалось не так просто. Формат Mini-ITX, два гигабитных порта и пассивное охлаждение оказались серьёзными ограничениями. Сначала рассматривал вариант от GIGABYTE и уже почти смирился с 10 ваттами рассеиваемой мощности процессора и, судя по форумам, возможными проблемами с линуксом. Однако в самый последний момент буквально случайно наткнулся на плату от SUPERMICRO с процессором Intel Atom и уже через пару дней держал её в руках. Основным фактором помимо низкого энергопотребления явилась то, что производитель заявил полную и безоговорочную поддержку этой платой Red Hat, хоть и не самой последней версии. Забегая вперёд скажу, что это оправдалось — при настройке линукса со стороны железа проблем не было никаких, от слова совсем.

Плата имеет один разъем памяти, максимум 8GB DDR3-1333 ECC SO-DIMM. Список сертифицированной памяти на сайте производителя достаточно скудный, пришлось зайти с другой стороны. Стал искать, кто из производителей памяти поддерживает эту плату. Нашёл. Выбор пал на Crucial, так как на ихнем сайте есть не только возможность поиска по наименованию материнской платы, но и возможность непосредственного заказа. У них же заказал SSD на 250 Гб, с почти одинаковой скоростью чтения/записи около 500 Мб/сек.

Последняя деталька — блок питания. К сожалению, БП с пассивным охлаждением пока ещё экзотика, нашёл только один вариант, его и заказал. Им оказался FSP150-50TNF. Сайт производителя отыскать так и не смог, купить же его можно в огромном количестве онлайн магазинов.


Со сборкой никаких проблем не было. Втыкать, как говорится, не паять. В корпусе имеются два вентилятора, подключать я их не стал. Итого, получилась такая конструкция:

Общая стоимость всех компонент с доставкой получилась 745 евро. Забегая вперёд скажу, что потребляемая мощность собранного и полностью настроенного сервера около 14-15 ватт.

Много про программную составляющую

О программной настройке этого сервера речь дальше и пойдёт. Дистрибутив линукса я выбрал, исходя из меркантильных соображений. В компании, где я работаю (оффтопик: я математик-инженер, разрабатываю прикладное ПО в области систем управления воздушным движением), мы используем Red Hat или Centos как для разработки, так и как платформу для установки клиентам.

Шаг первый: подготовка установочной флешки.

Дистрибутив в виде ISO, оптимизированный для сетевой установки (CentOS-7-x86_64-NetInstall-1503.iso), можно взять отсюда. После чего из него нужно сделать загрузочную флешку.

  1. вставляем пустую флешку объема большего, чем файл ISO. Тип файловой системы на ней не важен. главное, она не должна быть разбита на тома.
  2. смотрим, как она смонтирована и какому устройству соответствует:
  3. размонтируем это устройство, иначе в требуемом нам режиме оно будет недоступно:
  4. переходим в режим root и переходим в каталог, где сохранен файл ISO.
  5. используем стандартную утилиту блочного копирования данных:
Шаг второй: подготовка изделия к загрузке.
Шаг третий: сетевая инсталляция.
Шаг четвёртый: настройка базового функционала.

Итак, логируемся с другого компьютера по SSH. Если другой компьютер работает под управлением Windows, то в качестве ssh-клиента можно взять старый добрый putty. Естественно, все дальнейшие операции делаются из под рута. Банальность, но отмечу, что переход в режим рута осуществляется командой:

1. Первое, что необходимо сделать на свежеустановленной системе — обновить её. В системе уже присутствует пакетный менеджер yum. Он доступен из консоли (команда yum). Пакетные репозитории уже настроены по умолчанию, поэтому для обновления всей системы достаточно команды:

2. Ещё с досовских времён я не могу жить без файлового менеджера, желательно в синих тонах, поэтому сразу ставлю себе линуксовый аналог нортон-коммандера. Хотя это вопрос личных предпочтений. Подтягивается около 30 дополнительных пакетов, в основном perl:

3. Затем мне нужны средства мониторинга для сенсоров, расположенных на материнской плате. Ставится один дополнительный пакет:

4. Сенсоры нужно инициализировать:

5. Просматривать значения сенсоров можно так:

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

Шаг пятый: удалённый рабочий стол.

Не могу сказать ничего конкретного про те или иные решения, я выбрал VNC и GNOME просто потому, что уже использовал их ранее. На сервере ставятся следующие компоненты:

Подтягивается около 650 дополнительных пакетов (объём загрузки около 660 Мб, объём установки около 2 Гб).

Сетевой экран мы будем настраивать позже, но так как он из коробки уже есть и активен, нужно добавить вновь установленный сервис в его правила.

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

При первом запуске будет предложено задать пароль сессии и будет выдан номер терминала, под которым сессия доступна. При всех последующих запусках номер сессии будет показываться ещё раз:

Этот номер и пароль потребуются на клиенте для подключения к рабочему столу с использованием любого VNC-клиетна.


Многие вещи можно настраивать через удалённый рабочий стол в графическом интерфейсе, а не в консоли. Например, имеются приложения gpk-application для установки/удаления и gpk-update-view для обновления пакетов:

Чтобы облегчить настройку рабочего стола под свои привычки, дополнительно можно установить утилиты настройки и модуль, позволяющий устанавливать из броузера (только из Firefox) расширения для оболочки GNOME:

Для установки расширений оболочки можно посетить официальный репозиторий, используя Firefox.

Шаг шестой: Настройка сетевых интерфейсов и маршрутизация.

Одна из сетевых плат уже настроена в момент установки системы. Эта плата (интерфейс) с адресом 192.168.178.2 будет использоваться для доступа в мир, к ней напрямую будет подключёно внешнее интернет-соединение. Вторая плата с адресом 192.168.1.1 будет шлюзовой для внутренней сети, кабель от неё пойдёт в сетевой хаб локальной сети. Именно этот интерфейс и нужно сейчас настроить.

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

Воспользуемся графическим конфигуратором, для чего из консоли запустим:



Далее выберем иконку сети:


Задаём нужные параметры для обоих сетевых адаптеров. Важно, чтобы для каждого адаптера был обязательно включён флаг «Connect automatically», иначе после перезагрузки сетевой интерфейс останется выключенным:

Чтобы новые параметры вступили в силу, необходимо перезагрузить сетевой сервис с помощью команды:

Конфигурация адаптеров хранится в текстовых файлах /etc/sysconfig/network-scripts/ifcfg-enp5s0f0 и /etc/sysconfig/network-scripts/ifcfg-enp5s0f1, которые можно редактировать вручную. К сожалению, это придётся сделать позже, так как из графического интерфейса нет возможности привязать адаптер к нужной зоне межсетевого экрана, но об этом ниже. На данном же этапе статус сетевых интерфейсов такой:

Linux позволяет разрешить или запретить пересылку пакетов между интерфейсами (forwarding). На рабочих станциях и серверах приложений её можно запретить. Наш же сервер играет роль маршрутизатора и межсетевого экрана. Поэтому маршрутизация, очевидно, должна быть разрешена.

Маршрутизация управляется параметром net.ipv4.ip_forward из файла /etc/sysctl.conf. Для её включения параметр нужно установить в единицу:

Теперь нужно обновить конфигурацию, чтобы настройки маршрутизации вступили в силу:

Для проверки, включена ли IP маршрутизация, можно выполнить следующую команду, которая должна вернуть единицу:

Шаг седьмой: Настраиваем межсетевой экран.

На официальном сайте Red Hat можно найти подробную документацию по этому модулю. Также в сети есть подробные руководства по его настройке, например это.

Проверка статуса службы вполне ожидаемо сообщает, что служба запущена:

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

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

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

Интерфейс enp5s0f0 с адресом 192.168.1.1 будет доступен из внутренней сети, поэтому все установленные на сервере сервисы должны быть по этому интерфейсу доступны. Доступ же по наружному интерфейсу enp5s0f1 должен быть максимально урезан. Для внутренней сети волевым решением выберем зону internal. В неё нужно перекинуть интерфейс enp5s0f0.

Нюанс, однако: есть две таблицы фильтрации — активная в данный момент и постоянная. При перезагрузке сервера активная таблица восстанавливается из постоянной. Поэтому нужно либо стазу работать с постоянной таблицей (параметр --permanent в командах), либо потом не забыть скопировать активную таблицу в постоянную, когда все изменения сделаны. Изменения в активной таблице применяются мгновенно: сохранять или применять изменения не требуется. Изменения же в постоянной таблице вступят в силу только после перезагрузки таблицы (команда firewall-cmd --reload), сервиса (команда systemctl restart firewalld) или сервера.

Добавляю его в зону internal:

Вот здесь нас поджидает засада, а именно известный и до сих пор не закрытый баг в Centos 7. Суть: зона интерфейса при перезагрузке берётся из настроек самого интерфейса (файл /etc/sysconfig/network-scripts/ifcfg-enp5s0f0), а вот там она и не изменилась. Это придётся сделать вручную: правим файл /etc/sysconfig/network-scripts/ifcfg-enp5s0f0 и добавляем туда строку ZONE=internal:

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

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


Я же предпочитаю это делать из графической оболочки:

К сожалению, это ещё не все. Есть нюанс, связанный с маскировкой IP адреса (IP masquerading). В пакетах, исходящих из внутренней сети, адрес отправителя должен быть заменён на адрес самого сервера. Если эта функция выключена, то компьютер из внутренней сети никогда не дождётся ответа снаружи, так как его адрес там неизвестен.

Не знаю, с чем это связано, но изменения флага маскировки для адаптера enp5s0f1 как из графической оболочки, так через firewall-cmd не дали никакого эффекта. Рабочее решение нашлось в этой статье. Его суть: задать дополнительное прямое правило POSTROUTING в таблицу iptables, надстройкой на которой FirewallD является:

Перезагрузим таблицу и проверим изменения:

На этом межсетевой экран настроен. Текущую конфигурацию брандмауэра можно проверить такой полезной командой:

Шаг восьмой: Сервер точного времени (NTP).

Для синхронизации времени по сети (как времени самого сервера, так и времени на клиентских машинах с сервером) настрою NTP сервер. В Centos 7 вместо старого доброго ntpd предустановлен и активирован новый сервис — chrony.

Так как во время установки системы была выбрана опция синхронизации времени по сети, то сервис уже есть и запущен:

Выдача команды systemctl, если сервис работает в штатном режиме

Если же команда статуса показывает, что сервис либо не установлен, либо не запущен, то процедура стандартная:

Автоматическая синхронизация времени с удалённым сервером разрешается командой:

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

Проверим состояние и синхронизацию:

После замены адреса NTP сервера на клиентских устройствах (Windows, Linux, Zyxel) все они дружно подхватили время с сервера.

Шаг предпоследний: служба DNS.

Единственная цель, с которой я решил поднять службу DNS на сервере — блокировка баннерных сетей, сайтов статистики и всевозможных серверов телеметрии (например, Microsoft) на всех устройствах в локальной сети. Идея не моя, взята отсюда. Поискав в паутине, нашёл несколько сайтов, которые на регулярной основе публикуют чёрные списки доменов в формате hosts-файлов.

Например это и это. Особенностью второго списка является то, что сервера телеметрии Microsoft там уже есть.

В качестве службы DNS я выбрал dnsmasq просто потому, что нашёл простою и понятную инструкцию по его установке и настройке. Dnsmasq реализует одновременно как DNS, так и DHCP сервер, но второй мне пока без надобности, поэтому я буду конфигурировать только DNS.

Далее в конфигурационном файле внутреннего сетевого интерфейса (в моём случае /etc/sysconfig/network-scripts/ifcfg-enp5s0f0) нужно указать, что DNS сервером является локальный хост, т.е. добавить строку:

После включения или перезагрузки сервера служба NetworkManager на основе настроек из этого файла обновляет файл /etc/resolv.conf, который содержит адреса как внешнего DNS сервера (в моём случае это DSL/FritzBox), так и нашего:

Фрагмент (активные параметры) файла /etc/dnsmasq.d/main.conf

Главное здесть — параметр addn-hosts=/etc/black_list_hosts.txt, где black_list_hosts.txt — это и есть чёрный список доменов. В моём случае, я пока просто скачал его отсюда. Как результат — баннерной рекламы на всех устройствах локальной сети (как настольных, так и мобильных) практически не стало. В будущем я собираюсь автоматизировать процесс обновления этого списка.

Последний шаг: файловый сервер (Samba).

Это последняя компонента, о которой я немного напишу. Samba — файловый сервер для совместного доступа к файлам со всех устройств локальной сети. Устанавливается он просто:

Я выдам в совместный доступ только одну папку: /work/nas. Для этого нужно отредактировать файл /etc/samba/smb.conf и указать там параметры доступа к этой папке:

Фрагмент (активные параметры) файла /etc/samba/smb.conf

По умолчанию папка сконфигурирована «только для чтения», но пользователь с именем family имеет доступ на запись. Запускаем сервис и проверяем его настройки:

Далее есть особенность. Дело в том, что в Centos установлена дополнительная подсистема безопасности, которая регулирует доступ к ресурсам не только для пользователей, но и для модулей (компонентов) системы. Она называется SELinux. Чтобы сервер Samba сам мог долучить доступ к папке /work/nas, у неё должен быть задан дополнительный аттрибут samba_share_t помимо обычных прав чтения-записи:

Для манипуляции флагами есть стандартная команда chcon. Флаг samba_share_t с её помощью устанавливается так:

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

Часто бывает нужно подмонтировать к этой папке внешний накопитель (диск или флешку), отформатированные под NTFS. Драйвера NTFS в системе по умолчанию нет. Также его нет и в стандартных репозиториях. Если есть потребность подключать диски с NTFS к системе, то нужно установить 3rd-party репозиторий EPEL из проекта Федоры и уже оттуда установить драйвер:

После чего внешние диски диски NTFS будут автоматически опознаваться системой.

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



На этом, пожалуй, завершусь. В целом, получилась экономичная и многофункциональная машинка с большим потенциалом. Как я уже отмечал, потребляемая мощность находится в пределах 14-15 ватт, что вполне приемлемо для домашнего аппарата, который постоянно включён. Первый месяц своей жизни он отработал без единой проблемы.

Если у возникли вопросы, замечания, или идеи по улучшению и дальнейшему развитию, то буду рад комментариям. Спасибо!

Если у Вас встала задача развернуть Web-сервер на операционной системе Linux CentOS 7.1 с использованием Apache, PHP и MySQL (LAMP), то данный материал в этом Вам поможет, так как сейчас мы пошагово рассмотрим весь процесс установки и настройки веб сервера Apache, языка программирования PHP и СУБД MySQL с подробными комментариями, так как этот сайт для начинающих.

Операционная система Linux и в частности дистрибутив CentOS выбран не случайно, так как он является одним из самых популярных дистрибутивов, которые активно используется в качестве платформы для web-серверов, кстати, говоря о том, что это за дистрибутив и как его установить, мы с Вами подробно разговаривали вот здесь.

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

Примечание! Еще раз обращаю Ваше внимание на то, что все действия мы будем выполнять в CentOS версии 7.1, так как в 6 версии и ниже многое делается по-другому. Также в качестве СУБД в CentOS 7.1 используется полностью бесплатная MariaDB, это ответвление MySQL.

Открытие портов в файрволе на CentOS 7.1

Примечание! Все мы будем делать в терминале (консоли) Linux, поэтому неважно установлена ли графическая оболочка у Вас или нет.

Выполняем от имени суперпользователя следующие команды, 1 для открытия 80 порта, 2 для 443 и 3 для перезапуска файрвола:

Скриншот 1

Установка и настройка Web-сервера Apache на CentOS 7.1

Примечание! Перед запуском команд проверьте, подключен ли у Вас Интернет. Эти и все остальные команды выполняются от имени суперпользователя (root).

Скриншот 2

Скриншот 3

Убираем страницу заглушку

Скриншот 4

Скриншот 5

Для сохранения нажимаем сочетание клавиш Ctrl+O, затем для подтверждения жмем Enter и для выхода из редактора Ctrl+X.

Скриншот 6

Проверяем работу, и у нас должно отобразиться вот это

Скриншот 7

Т.е. список каталогов и файлов, но так как у нас еще нет никаких файлов и папок в корневом каталоге, то, соответственно, ничего и не отображается.

т.е. в домашней директории (html) создаем папку с названием сайта (testsite), в которой создаем папки www и logs, в первой из которых будут располагаться все файлы и папки сайта, а во второй лог обращений и лог ошибок.

Данные каталоги создаем следующими командами:

Скриншот 8

Настраиваем конфиг для тестового сайта

Открываем его на редактирование тем же самым редактором nano

И вносим следующие настройки (я их прокомментировал)

Скриншот 9

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

Настраиваем SELinux в CentOS 7.1 для WEB сервера

SELinux (Linux с улучшенной безопасностью) – это система контроля доступа, которая является частью ядра Linux. В некоторых дистрибутивах Linux данная система безопасности по умолчанию включена, например, как у нас в CentOS. В Интернете можно встретить статьи, где веб мастера рекомендуют вообще выключать систему SELinux, также как и файрвол, но самом деле этого лучше не делать, а просто настроить эти компоненты, файрвол мы уже настроили выше, теперь давайте настроим SELinux.

А затем как раз зададим контекст безопасности для каталога logs, чтобы web-сервер мог писать в него, первой командой мы задаем этот контекст безопасности, а второй переконфигурируем SELinux

Теперь давайте перезагрузимся

Скриншот 10

Скриншот 11

т.е. отказано в доступе, так как никаких файлов в нашем каталоге еще нет, а листинг директорий мы отключили.

Устанавливаем PHP на CentOS 7.1

Для установки языка программирования PHP на CentOS необходимо выполнить следующую команду, но учтите, что если Вы используете дополнительные расширения PHP, то их необходимо включать в установку, например, мы сразу установим расширение для работы с базой MySQL (указываем название расширения через пробел). Если Вы не знаете, какие расширения Вы будете использовать, то ничего страшного, потом их конечно можно доустановить, итак, команда для установки php и расширения mysql будет выглядеть следующим образом (все от имени root):

Скриншот 12

Для проверки установился ли PHP, создаем тестовый файл (например, таким же способом как мы создавали конфиг Apache чуть выше), допустим с названием test.php в директории тестового сайта (/var/www/html/testsite/www/), содержание файла следующее (просто информация о PHP)

Скриншот 13

После создания мы обращаемся к этому файлу из браузера, например ip_адрес/test.php

В ответ мы должны получить вот такую страницу

Скриншот 14

Как видите, у нас установилась версия PHP 5.4.16.

Устанавливаем MySQL/MariaDB на CentOS 7.1

В операционной системе CentOS 7.1 в качестве сервера баз данных используется не сама СУБД MySQL, а ее ответвление MariaDB. Эти базы полностью совместимы, только MariaDB разрабатывается и поддерживается сообществом (как Вы знаете, MySQL поддерживает компания Oracle) и является полностью бесплатной.

Для установки MariaDB пишем следующую команду

Помещаем в автозагрузку

Задаем пароль для root пользователя

Сначала Вас спросят пароль root пользователя, а затем если Вы, конечно, захотите установить новый пароль для root, но мы его и так только что задали. На все остальные вопросы отвечаем y (т.е. да)

Скриншот 15

Проверяем работу MariaDB

Чтобы проверить работу MariaDB исправим немного наш тестовый скрипт (test.php). Пишем следующий код PHP.

Также в браузере вызываем test.php и если все хорошо, то в ответ мы получим версию MariaDB, в моем случае это 5.5.41-MariaDB.

Вот мы с Вами и настроили полноценный WEB-сервер, надеюсь, данный материал был Вам полезен, удачи!

Первичная настройка VDS на CentOS

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

В качестве примера настроим VDS с CentOS на Timeweb. Провайдер предоставляет удобную панель с консолью, которая поможет установить все необходимые параметры работы сервера.

Обновление системы CentOS

Сразу после установки обновляем систему. Открываем панель управления сервера, переходим на вкладку «Консоль» и авторизируемся под теми данными, которые хостер прислал в письме при создании сервера. Выполняем команду для обновления:

Важно: yum — пакетный менеджер, который используется в CentOS 7. В CentOS 8 вместо него уже dnf, но можно писать и yum — поддержка осталась.

Настройка автоматического обновления CentOS

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

Автоматическая проверка обновления настраивается по-разному в зависимости от версии ОС. В CentsOS 7 используется утилита yum-cron. Устанавливается она из стандартного репозитория.

После установки создается задание на выполнение утилиты в /etc/cron.daily и /etc/cron.hourly. По умолчанию yum-cron скачивает обнаруженные обновления, но не устанавливает их. Администратор получает на локальный почтовый ящик письмо с информацией о наличии апдейтов. Дальше он сам решает, стоит ли их ставить.

На CentOS 8 для настройки обновлений используется утилита dnf-automatic. Первым делом ее нужно установить из стандартного репозитория:

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

Если заданий нет, добавим таймер вручную:

По умолчанию таймер настроен на запуск dnf-automatic через час после загрузки VDS и ежедневное повторение процедуры. Конфигурационный файл таймера расположен по адресу /etc/systemd/system/multi-user.target.wants/dnf-automatic.timer.

Посмотреть и отредактировать конфигурационный файл dnf-automatic можно в /etc/dnf/automatic.conf. По умолчанию утилита только скачивает обновления, но не применяет их. Конфиги можно настроить так, как вам удобно.

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

Сначала узнаем, какое время настроено на сервере по умолчанию. Для этого выполняем команду

Изменить часовой пояс можно с помощью специальной утилиты, которая входит в состав systemd

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

В CentOS для синхронизации времени с интернетом есть утилита chrony. В стандартной сборке она установлена по умолчанию, в минимальной конфигурации ОС ее нет.

Как видно из скриншота выше, на этом сервере время не синхронизируется. Установим утилиту chrony вручную:

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

Проверяем статус утилиты.

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

System clock synchronized — должно быть значение «yes».

NTP service — должно быть значение «active».

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

VDS с бесплатным администрированием и поддержкой 24/7. Дарим 200 рублей на тест

Протестируй VDS Timeweb бесплатно: закажи сервер, сообщи поддержке промокод community200 и получи 200 рублей на баланс.

Настройка файрвола

Для защиты сервера от внешних угроз нужно настроить разрешения для входящего и исходящего трафика. Используем для этого iptables. Он запущен по умолчанию. Проверим текущие правила командой

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

В CentOS 7 для управления межсетевым экраном появилась новая утилита — firewalld. По сути, это надстройка над iptables. Ее можно отключить и воспользоваться файлом с правилами.

Ставим утилиты для iptables:

Создаем новый файл /etc/iptables.sh и добавляем в него следующие правила:

Это один из вариантов самописного скрипта для файрвола CentOS, который сделает использование системы на сервере более безопасным.

Затем делаем файл со скриптом исполняемым:

Проверяем, что правила теперь применяются:

Настройка SSH

Настраивать SSH нужно не только для безопасности, но и для удобства. По умолчанию SSH работает на 22 порту. Если его не поменять, то на сервере будет зафиксированы многочисленные попытки авторизации — это боты сканируют интернет и пытаются подобрать пароли к серверам. В реальности это не так опасно, но все равно отнимает ресурсы VDS, пусть и мизерные. Избавиться от подобной активности помогает простая смена номера порта.

Открываем файл /etc/ssh/sshd_config для редактирования:

В строке Port 22 убираем комментарий и меняем значение — с 22 на 51452 или другое.

Теперь нужно разрешить доступ к этому порту в файрволе. Открываем файл /etc/iptables.sh, находим строку $IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT и вместо «22» вписываем «51452» или другой номер, который ранее назначили в конфиге SSH.

Для применения изменений перезапускаем sshd:

Подключение репозиториев в CentOS

В стандартной сборке есть не весь софт, который может понадобиться при разработке проекта. Чтобы инсталлировать дополнительное ПО, нужно предварительно подключить репозитории. Самый популярный вариант для CentOS — EPEL. Добавить его можно из стандартного репозитория одной командой

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

Этих двух репозиториев хватает для выполнения стандартных задач. Другие подключаются уже под конкретные нужды, которые возникают при работе с сервером.

Настройка хранения истории

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

сохраняется только последняя тысяча команд;

нет дат, только список в порядке выполнения;

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

сохраняются все команды, хотя в хранении некоторых из них нет никакого смысла.

Список выполненных команд хранится в домашней директории в файле .bash_history. Его можно посмотреть через любой редактор. Для вывода списка можно выполнить в консоли следующую команду:

На экране появится пронумерованный список. Быстро перейти к конкретной команде можно с помощью фильтрации, например, так:

Этот запрос выделит все запуски команды yum, которые доступны в истории.

На этом базовую настройку VDS с CentOS на борту можно считать завершенной.

Читайте также: