Где конфиг apache centos

Обновлено: 07.07.2024

Если у Вас встала задача развернуть 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-сервер, надеюсь, данный материал был Вам полезен, удачи!

Установка Apache на CentOS 8

Для выполнения команд в инструкции вам потребуются привилегии sudo, требуемые для установки необходимых пакетов. Получить их можно, сменив пользователя на пользователя sudo командой:

Шаг 1. Установка пакетов

Установка Apache CentOS 8 выполняется с помощью команды приведенной ниже. Она позволит установить не только сам сервер, но и дополнительные пакеты, необходимые для его работы в вашей системе:

Шаг 2. Настройка службы Apache

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

Если вы хотите перезапустить apache CentOS 8, то можете использовать команду:

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

Шаг 3. Настройка фаервола

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

Шаг 4. Проверка работы Apache

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

Вывод результатов выполнения команды представлен на рисунке ниже:

Создайте тестовую html-страницу в корневом каталоге веб-сервера по умолчанию (/var/www/html).

echo "Hello Losst.ru" > /var/www/html/index.html

Теперь откройте ваш любимый браузер и, используя IP-адрес сервера или домен, указывающий на IP-адрес вашего сервера, перейдите на только что созданную тестовую страницу:

Если вы видите текст, который ранее записали в тестовый файл, значит установка apache centos прошла успешно.

Шаг 5. Создание виртуальных хостов

Далее создайте файл конфигурации виртуального хоста и отредактируйте его, добавив следующее содержимое: можно изменить доменное имя в соответствии с вашим доменом:

  • FollowSymLinks -при использовании этой директивы сервер будет следовать символическим ссылкам в указанном каталоге. Настройка директивы всегда остаётся заданной по умолчанию. Параметр FollowSymLinks работает только в разделах <Directory> или файлах .htaccess.
  • AllowOverride - найдя файл .htaccess, сервер должен знать, какие директивы, объявленные в этом файле, могут переопределить более ранние директивы конфигурации. Директива AllowOverride допустима к использованию только в разделах <Directory>, указанных без регулярных выражений, но не в разделах <Location>, <DirectoryMatch> или <Files>. Если директива AllowOverride принимает значение None, то файлы .htaccess полностью игнорируются. В этом случае сервер даже не будет пытаться читать файл .htaccess в файловой системе. Если эта директива принимает значение Allow, то любая директива, имеющая свои htaccess-разрешения может переопределить более ранние директивы конфигурации.
  • Order - наряду с директивами Allow (разрешено) и Deny (запрещено), управляет трёхпроходной системой контроля доступа. Первый проход обрабатывает либо все разрешающие, либо все запрещающие директивы, как указано в директиве Order. Второй проход анализирует остальные директивы (запретить или разрешить). Третий проход применяется ко всем запросам, не соответствующим ни одному из первых двух. Обратите внимание, что все директивы Allow и Deny обрабатываются иначе, чем обычный брандмауэр, использующий только первое значение правила. Кроме того, порядок, в котором строки появляются в файлах конфигурации, не имеет значения — все разрешающие строки обрабатываются как одна группа, все запрещающие строки рассматриваются как другая группа, а состояние по умолчанию рассматривается само по себе. Директива Order всегда принимает одно из двух значений: Allow или Deny.
  • ДирективыAllowиDeny. Вариант Allow, Deny подразумевает, что сперва оцениваются все директивы Allow. По крайней мере одна из них должна совпадать, иначе запрос отклоняется. Затем оцениваются все директивы Deny. В случае совпадения запрос отклоняется. Наконец, любые запросы, не соответствующие директиве Allow или Deny, по умолчанию отклоняются. В случае использования Deny, Allow оцениваются все директивы Deny. Если они совпадают, запрос отклоняется. Любые запросы, не соответствующие директивам Allow или Deny, разрешены.

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

Настройка виртуальных хостов Apache CentOS завершена.

Шаг 4. Настройка SSL

Если вы не собираетесь использовать SSL в работе вашего сайта, то можете смело пропускать этот шаг. Однако, безопасность всегда является главной задачей для любого веб-сайта. Для того, чтобы использовать SSL в связке с Apache, требуется установить пакет mod_ssl в вашей системе. Для этого выполните команду:

dnf install mod_ssl

По окончании установки пакета создайте директорию, в которой будет хранится наш
SSL-сертификат:

mkdir -p /etc/pki/tls/certs

Перейдите в него, выполнив команду:

Теперь создайте SSL-сертификат, который будет использоваться при настройке виртуального хоста. Для этого выполните команду:

Эта команда создаст закрытый ключ и сертификат в необходимой директории.

  • SSLEngine - эта директива переключает использование механизма протокола SSL/TLS. Это обычно используется внутри <VirtualHost> для включения поддержки SSL /TLS конкретным виртуальным хостом. По умолчанию механизм протокола SSL/TLS отключён как для основного сервера, так и для всех настроенных виртуальных хостов. В Apache 2.1 и более поздних версиях SSLEngine устанавливается опционально. Эта директива может принимать два значения: on или off, что означает включено либо выключено.
  • SSLCertifacateFile - эта директива создаёт файл типа "всё в одном", в котором можно собрать сертификаты центров сертификации (ЦС), с клиентами которых вы имеете дело. Они используются для аутентификации клиента. Такой файл — просто объединение различных файлов сертификатов, закодированных в PEM, в порядке предпочтения. Это может быть использовано в качестве альтернативы или дополнительно к SSLCACertificatePath.
  • SSLCertificateKeyFile - указывает на PEM-кодированный файл закрытого ключа для сервера. Если содержащийся закрытый ключ зашифрован, диалог парольной фразы принудительно запускается во время запуска. Директиву можно использовать несколько раз (ссылаясь на разные имена файлов) для поддержки нескольких алгоритмов аутентификации сервера. Для каждой директивы SSLCertificateKeyFile должна быть соответствующая директива SSLCertificateFile.

Закрытый ключ также может быть объединён с сертификатом в файле, предоставленном SSLCertificateFile, но эта практика крайне нежелательна. Если он используется, то файлы сертификатов, использующие такой встроенный ключ, должны быть настроены после сертификатов, использующих отдельный файл ключей.

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

Выводы

В этой статье мы разобрали как выполняется установка Apache в CentOS 8. Выполнив указанные в нашей статье действия, вы сможете установить и настроить веб сервер Apache на вашем сервере CentOS 8.

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

В этом руководства вы установите веб-сервер Apache с виртуальными хостами на сервер на базе CentOS 7.

Предварительные требования

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

  • Пользователь без прав root с привилегиями sudo на сервере, настроенном согласно руководству по начальной настройке сервера на базе CentOS 7.
  • Базовый брандмауэр, настроенный согласно руководству Рекомендуемые дополнительные шаги для новых серверов на базе CentOS 7.

Шаг 1 — Установка Apache

Apache доступен в используемых по умолчанию репозиториях программного обеспечения CentOS, т. е. вы можете установить его с помощью менеджера пакетов yum .

После обновления пакетов установите пакет Apache:

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

Затем перезагрузите брандмауэр, чтобы новые правила начали действовать:

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

Шаг 2 — Проверка веб-сервера

Apache не запускается автоматически на CentOS после завершения установки. Вам нужно будет запустить процесс Apache вручную:

Убедитесь, что служба запущена с помощью следующей команды:

Если служба запущена, вы увидите значение active (активна) в статусе:

Как видно из результатов, служба успешно запущена. Однако лучше всего протестировать ее запуск посредством запроса страницы из Apache.

Откройте страницу Apache по умолчанию, чтобы подтвердить работу программного обеспечения через ваш IP-адрес: Если вы не знаете IP-адрес вашего сервера, есть несколько способов узнать его с помощью командной строки.

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

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

Когда вы узнаете IP-адрес вашего сервера, введите его в адресную строку браузера:

Вы увидите стандартную веб-страницу Apache в CentOS 7:

Эта страница показывает, что Apache работает корректно. Также на ней содержится информация о важных файлах Apache и расположении директорий. Теперь, когда служба установлена и запущена, вы можете использовать различные команды systemctl для управления службой.

Шаг 3 — Управление процессом Apache

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

Чтобы остановить веб-сервер, введите:

Чтобы запустить остановленный веб-сервер, введите:

Чтобы остановить и снова запустить службу, введите:

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

По умолчанию Apache настроен на автоматический запуск при загрузке сервера. Если вы не хотите этого, отключите такое поведение с помощью следующей команды:

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

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

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

Шаг 4 — Настройка виртуальных хостов (рекомендуется)

Создайте дополнительную директорию для хранения файлов журнала для сайта:

Затем назначьте права владения для директории html с помощью переменной среды $USER :

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

Затем создайте в качестве примера страницу index.html , используя vi или свой любимый редактор:

Нажмите i для переключения в режим INSERT (ВСТАВКА) и добавьте в файл следующий пример HTML-контента:

Сохраните и закройте файл, нажмите ESC , введите :wq и нажмите ENTER .

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

Перед созданием ваших виртуальных хостов вам нужно будет создать директорию sites-available , чтобы хранить их в этой директории. Также вы должны будете создать директорию sites-enabled , которая указывает Apache, что виртуальный хост готов к обслуживанию посетителей. Директория sites-enabled будет хранить символьные ссылки на виртуальные хосты, которые мы хотим опубликовать. Создайте обе директории с помощью следующей команды:

Затем вы должны попросить Apache выполнить поиск виртуальных хостов в директории sites-enabled . Для этого необходимо изменить главный файл конфигурации Apache и добавить строку, объявляющую опциональную директорию для дополнительных файлов конфигурации:

Добавьте эту строку в конец файла:

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

Начните с создания нового файла в директории sites-available :

Так вы сможете показать, где Apache нужно искать корневую директорию, которая хранит общедоступные веб-документы. Также это указывает, где Apache будет хранить ошибки и журналы запросов для этого сайта.

Сохраните файл и закройте его после завершения.

Теперь, когда вы создали файлы виртуального хоста, вы должны будете активировать их, чтобы Apache смог предоставлять их посетителям. Для этого нужно создать символьную ссылку для каждого виртуального хоста в директории sites-enabled :

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

Шаг 5 — Настройка разрешений SELinux для виртуальных хостов (рекомендуется)

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

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

Универсальное изменение политик Apache

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

Изменение политик Apache для директории

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

Затем воспользуйтесь командой restorecon для применения этих изменений и их сохранения между перезагрузками:

Флаг -R запускает эту команду рекурсивно, т. е. она будет обновлять любые существующие файлы для использования нового контекста. Флаг -v будет распечатывать изменения контекста, внесенные командой. Вы увидите следующий вывод, подтверждающий изменения:

Вы можете вывести список контекста еще раз, чтобы посмотреть изменения:

Результат отражает обновленный тип контекста:

Шаг 6 — Тестирование виртуального хоста (рекомендуется)

Вы увидите, что Apache удалось создать файлы errors.log и requests.log , которые указаны в конфигурации виртуального хоста:

Успешно! Виртуальный хост example.com работает!

Это подтверждает, что ваш виртуальный хост успешно настроен и обслуживает контент. Повторите шаги 4 и 5 для создания новых виртуальных хостов с разрешениями SELinux для дополнительных доменов.

Заключение

В ходе данного руководства вы установили и управляли веб-сервером Apache. Теперь вы установили веб-сервер и у вас есть богатые возможности выбора типа обслуживаемого контента и технологий для расширения возможностей пользователя.

Если вы хотите развернуть более полный комплекс приложений, ознакомьтесь с этой статьей Настройка набора LAMP в CentOS 7.

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти . Если вам нужен высокопроизводительный web сервер на базе последних версий nginx и php-fpm, то читайте отдельную статью по этой теме - установка и настройка nginx и php-fpm7 на centos.

Цели статьи

Данная статья является частью единого цикла статьей про сервер Centos.

Введение

В этой статье я расскажу, как настроить web сервер на базе популярного стека технологий - apache и php с модулем prefork. В связи с выходом нового релиза Centos 8, многие статьи на эту тему стали не актуальны, так как версии софта в базовых репозиториях обновились и тот же php нет смысла ставить из стороннего репозитория.

Работать будем на сервере под управлением CentOS 8. Если у вас его еще нет, то читайте мои статьи на тему установки и базовой настройки centos. Не забудьте уделить внимание теме настройки iptables. В данной статье я ее не буду касаться, хотя тема важная для web сервера.

В своей тестовой среде я буду использовать следующие сущности.

Web сервер на CentOS 8

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

Процессор 2 ядра
Память 3 Gb
Диск 30 Gb SSD

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

Настройка apache в CentOS 8

Теперь приступим к установке apache. В CentOS 8 это делается очень просто:

Добавляем apache в автозагрузку:

Запускаем apache в CentOS 8:

Проверяем, запустился ли сервер:

Если ничего не видите, скорее всего у вас не настроен firewall. Если не занимались его настройкой, то по-умолчанию в centos установлен firewalld. На нем открыть порты для web сервера можно следующими командами.

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

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

Создаем для нее директории.

Перезапуск apache в centos

Проверим созданную конфигурацию и выполним перезапуск apache.

В данном случае ошибок нет, показано предупреждение. Теперь делаем restart apache:

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

где 10.20.1.23 ip адрес нашего веб сервера. Это нужно сделать только в том случае, если настраиваете web сервер где-то в локальной сети без реально существующего доменного имени.

Установка php в CentOS 8

Установка php в Centos 8 сильно упростилась по сравнению с предыдущей версией, потому что в базовом репозитории хранится актуальная версия php 7.2 , которой можно пользоваться. Пока нет необходимости подключать сторонние репозитории, так как версия 7.2 вполне свежа и актуальна. Если у вас нет необходимости использовать что-то новее, то можно остановиться на этой версии.

Устанавливаем php в CentOS 8, а так же некоторые популярные модули, которые могут пригодиться для того же phpmyadmin.

Выполним перезапуск apache:

Создадим файл в директории виртуального хоста и проверим работу php:

Вы должны увидеть вывод информации о php. Если что-то не так, возникли какие-то ошибки, смотрите лог ошибок виртуального хоста, php ошибки будут тоже там. Если вам необходима более свежая версия php, то читайте статью по обновлению php 7.2 до 7.4.

Где лежит php.ini

После установки часто возникает вопрос, а где хранятся настройки php? Традиционно они находятся в едином файле настроек. В CentOS php.ini лежит в /etc, прямо в корне. Там можно редактировать глобальные настройки для всех виртуальных хостов. Персональные настройки каждого сайта можно сделать отдельно в файле конфигурации виртуального хоста, который мы сделали раньше. Давайте добавим туда несколько полезных настроек:

Добавляем в самый конец, перед </VirtualHost>

Для применения настроек нужно сделать restart apache. Если у вас полностью дефолтная установка, как у меня, то скорее всего вы увидите ошибку.

Invalid command 'php_admin_value', perhaps misspelled or defined by a module not included in the server configuration

Тут стоит проверка на запуск модуля. Он загружается только, если у нас загружен модуль prefork. Давайте попробуем его загрузить принудительно. Для этого комментируем все строки, кроме основной.

Проверяем конфигурацию apache.

Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe.

Стандартный модуль mod_php скомпилирован с поддержкой модуля mpm_prefork. С другими он работать не будет. Таким образом, чтобы у нас нормально заработал php, нам надо вместо модуля mpm_event подключить модуль mpm_prefork. Для этого в конфиге 00-mpm.conf закомментируем подключение mpm_event_module и раскомментируем prefork.

После этого проверяйте конфигурацию и перезапускайте apache. Все должно заработать. Теперь в выводе phpinfo можно увидеть изменение настроек.

Установка MySQL в CentOS 8

Как я уже писал ранее, сейчас все большее распространение получает форк mysql — mariadb. Она имеет полную совместимость с mysql, так что можно смело пользоваться. Я предпочитаю использовать именно ее.

Устанавливаем mariadb на CentOS 8:

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

Запускаем скрипт начальной конфигурации mysql и задаем пароль для root. Все остальное можно оставить по-умолчанию.

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

Файлы настроек mysql/mariadb в Centos 8 лежат в директории /etc/my.cnf.d. Для обычной работы достаточно настроек по-умолчанию. Но если вы решите изменить их, не забудьте перезапустить службу баз данных.

Перезапуск mariadb/mysql в CentOS 8:

На этом все. Базовый функционал web сервера на CentOS 8 настроен. Дальше настроим популярную панель управления mysql сервером - phpmyadmin.

Установка phpmyadmin

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

После добавления конфига, не забудьте перезапустить apache.

Архив упакован в zip. Если у вас нет на сервере пакета unzip, установите его.

Распаковываем исходники в директорию виртуального хоста.

Более подробно вопрос установки и настройки phpmyadmin я рассматривал отдельно. Можете зайти в панель и создать базу mysql для тестового сайта, например, wordpress. Затем через консоль загрузить исходники cms и распаковать их.

Настройка ssl сертификата Lets Encrypt в apache

Теперь настроим работу web сервера apache с ssl сертификатом. Хотя если быть точным, то tls сертификатом. Устанавливаем пакет certbot для получения бесплатного ssl сертификата от let’s encrypt. Для этого нам сначала надо подключить репозиторий epel.

После установки пакетов certbot, если его запустить, напишет ошибку, что не может сам настроить apache.

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

Все параметры оставляйте дефолтные, не принципиально. Мы этот сертификат использовать не будет. Перезапустите apache.

Теперь выпустим сертификат для нашего домена. Имейте ввиду, чтобы получить сертификат у вас должно быть действующее доменное имя, ссылающееся на web сервер, который настраиваете. Let's Encrypt будет по доменному имени обращаться к серверу, на котором настраиваете сертификат, чтобы проверить домен. В тестовой лаборатории с вымышленным доменным именем получить настоящий ssl сертификат не получится.

В качестве способа аутентификации выбирайте

По аналогии делаете с остальными виртуальными хостами, для которых используете бесплатные сертификаты let’s encrypt. Осталось дело за малым — настроить автоматический выпуск новых ssl сертификатов, взамен просроченным. Для этого добавляем в /etc/crontab следующую строку:

  1. Через файл .htaccess
  2. С помощью настройки виртуального хоста.

Мне нравится больше второй вариант, поэтому приводим конфиг виртуального хоста к следующему виду.

Ротация логов веб сервера apache

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

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

Настройка SELinux для web сервера apache

Раздел для тех, кто хочет настроить SELinux на своем web сервере. Сначала ставим пакет policycoreutils-python-utils если он еще не установлен. Он нам нужен для утилиты semanage.

Теперь автоматически сформируем модуль для selinux на основе событий аудита, которые накопились, пока мы настраивали сайт. Посмотреть их можно командой.

Создаем модуль selinux.

То же самое делаем для php.

Добавим нашу директорию /web/sites в соответствующие таблицы selinux для контента и логов.

И отдельно добавим каталог, куда web сервер сможет писать данные. Я покажу на примере правила для сайтов wordpress, где web сервер должен уметь писать в директорию wp-content для загрузки медиафайлов, установки тем и плагинов, а так же изменять файл wp-config.php.

Обновляем атрибуты файлов новым контекстом SELinux.

Теперь активируем защиту selinux и проверяем, что она работает.

Режим работы Enforcing означает, что selinux работает. Убедиться, что модули загружены, можно командой.

В целом, по selinux все. Мы просто разрешили все, что веб сервер просил. По идее, надо вдумчиво во всех правилах разбираться и разрешать только то, что считаешь нужным. Я честно скажу, что selinux знаю не очень хорошо. Дальше загрузки готовых модулей и автоматического создания модулей с помощью audit2allow я не двигался. Руками модули никогда не писал. Если есть какой-то более осмысленный и правильный способ настройки selinux на кастомной конфигурации веб сервера, буду рад полезной информации.

Видео

В завершении полное видео настройки web сервера apache на основе приведенной статьи. Если у кого-то что-то не получается, посмотрите, как это сделал я.

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

На этом по настройке apache все. Я рассмотрел все основные моменты, которые необходимы для установки и настройки web сервера на основе apache и php, который обычно называют LAMP. При этом рассказал о некоторых вещах, которые повышают удобство и гибкость эксплуатации сервера.

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

    или отдельных сайтов. и веб сайта с помощью zabbix. .
  • Если у вас будут проблемы с ботами, то пригодится статья по блокировке доступа к сайту по странам или защита сайта от ddos.

Если еще что-то полезное вспомню, добавлю ссылки. Пока вроде все. Статья получилось большой и насыщенной. Было не просто все собрать воедино, проверить, связать между собой и оформить в последовательное повествование. Мог где-то ошибиться. Жду комментариев и отзывов. Написал все по своему опыту, как я обычно настраиваю веб сервера. Предполагаю что-то можно сделать более удобно и правильно. Буду рад научиться.

Напоминаю, что данная статья является частью единого цикла статьей про сервер Centos.

И так, к нам в руки попал новый сервер с только что установленной CentOS.

Задача — сделать из него полноценный веб сервер.

Все действия мы выполняем из под пользователя root.

1. Обновляем систему.

2. Устанавливаем любимые редакторы.

Лично я люблю пользоваться mcedit, который встроен в Midnight Commander, по этому его и ставлю:

3. Настройка брэндмауера (iptables).

4. Устаналвиваем Apache, SSL.

В ServerName пишем ip адрес или имя сервера.

Строчку IncludeOptional conf.d/*.conf переносим в самый конец файла.
А перед ней добавляем главный виртуалхост:

Создаем тестовую страницу:

Проверяем результат, открыв в браузере с другой машины IP-адрес сервера:

Если надпись It Works! появилась, продолжаем дальше

5. Устанавливаем PHP с некоторыми его доп. компонентами

Проверяем PHP:
Создадим php скрипт выводящий информацию о php:

6. Устанавливаем MySQL или MariaDB.

В связи с тем, что MariaDB набирает все большую популярность за свои выдающиеся характеристики и полную совместимость с mysql приложениями, рассмотрим оба варианта:

Ставим MySQL

Или ставим MariaDB

Подключаем и проверяем

ini_set ( 'display_errors' , 1 ) ; //включаем вывод ошибок на страницу $dbname = "mysql" ; //база данных, которая создается по умолчанию при установке $dbcnx = @ mysql_connect ( $dblocation , $dbuser , $dbpasswd ) ;

7. Настраиваем хосты в Apache.

И так, создаем в /home/ директории сайтов и в каждом из них папки www, logs, tmp.

php_admin_value upload_tmp_dir / home / site1 . ru / tmp php_admin_value session . save_path / home / site1 . ru / tmp

Проверяем:
Для проверки совершенно не обязательно менять NS записи домена, достаточно отредактировать файл hosts на компьютере, с которого вы производите настройку. В windows он обычно лежит в C:\Windows\System32\drivers\etc\, в nix системах в /etc/

8. Установка и настройка PhpMyAdmin (PMA)

9. Установка и настройка FTP клиента

Лично мне нравится использовать ProFTPD.
Как его установить и настроить на CentOS читаем тут — Установка и настройка ProFTPD на CentOS.

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