Apache HTTP Server, широко известный как Apache, - ведущий веб-сервер, разработанный компанией Apache Software Foundation. Он является ключевой частью инфраструктуры Интернета и широко используется для размещения веб-сайтов. В данном руководстве рассматривается установка Apache на CentOS Stream 9 или более старую корпоративную версию CentOS Stream 8.
Почему стоит выбрать Apache для CentOS Stream?
- Стабильность и надежность: Apache известен своей высокой производительностью, что делает его надежным выбором для хостинга веб-сайтов и приложений.
- Гибкость: Apache предлагает ряд возможностей по настройке, что позволяет адаптировать сервер под конкретные нужды.
- Безопасность: Благодаря различным модулям и функциям, предназначенным для повышения безопасности, Apache помогает защитить ваши веб-ресурсы.
- Поддержка сообщества: Будучи открытым исходным кодом, Apache имеет сильное сообщество разработчиков и пользователей, которые вносят свой вклад в его постоянное совершенствование.
В следующих разделах мы приведем пошаговые инструкции по установке Apache на CentOS Stream 9 и CentOS Stream 8. Независимо от того, являетесь ли вы системным администратором или разработчиком, данное руководство поможет вам эффективно настроить Apache на вашей системе CentOS.
Установка Apache на CentOS Stream 9 или 8
Шаг 1: Обеспечение полного обновления системы CentOS Stream перед установкой Apache
Перед установкой рекомендуется установить репозиторий raven-release
Прежде чем приступить к установке Apache на машину CentOS Stream, необходимо убедиться, что система полностью обновлена. Это не просто мера предосторожности. Обновление системы позволяет исключить возможные проблемы совместимости и значительно повысить стабильность, безопасность и производительность системы.
Чтобы выполнить эту операцию, выполните в терминале следующую команду:
1 | sudo dnf upgrade --refresh |
Эта команда запускает механизм обновления, обеспечивающий получение и установку последних обновлений программного обеспечения и исправлений системы безопасности. Очень важно дать процессу обновления полностью завершиться, прежде чем переходить к установке Apache. Это позволит убедиться в том, что система находится в идеальном состоянии, оптимально настроена и готова к работе Apache без каких-либо проблем с совместимостью.
Шаг 2. Установка Apache (HTTPD) на CentOS Stream 9 или 8
Вторым шагом является установка Apache, или HTTPD, на систему CentOS Stream. Это несложный процесс, который выполняется с помощью мощного менеджера пакетов DNF. Менеджер пакетов DNF, или Dandified Yum, упрощает установку, обновление и управление пакетами программного обеспечения.
Начните установку Apache (HTTPD), выполнив в терминале следующую команду:
1 | sudo dnf install httpd |
Эта команда запускает механизм установки, получая и устанавливая все необходимые компоненты для работы Apache (HTTPD) на вашей системе. Весь процесс должен занять несколько минут, и по его завершении Apache (HTTPD) будет полностью установлен и готов к работе.
Шаг 3. Активация и настройка Apache (HTTPD) на запуск при загрузке системы
После успешной установки Apache (HTTPD) на систему CentOS Stream необходимо активировать службу и настроить ее на автоматический запуск при загрузке системы. Apache (HTTPD) всегда активен и готов обслуживать веб-запросы при включении системы.
Если служба Apache (HTTPD) не активирована или не настроена на запуск по умолчанию, то для ее запуска и включения при загрузке системы можно воспользоваться следующими командами в терминале:
1 2 | sudo systemctl start httpd sudo systemctl enable httpd |
Первая команда, sudo systemctl start httpd, запускает службу Apache (HTTPD), а вторая команда, sudo systemctl enable httpd, устанавливает автоматический запуск службы при загрузке системы. Выполнение этих двух команд гарантирует, что Apache (HTTPD) будет постоянно доступен и активен, готов удовлетворять веб-запросы при каждом включении системы.
В качестве альтернативы можно свести два предыдущих шага к одной команде:
1 | sudo systemctl enable httpd --now |
Опция --now в команде sudo systemctl enable httpd --now одновременно запускает службу Apache (HTTPD) и настраивает ее на автоматический запуск при загрузке системы. Эта команда объединяет две отдельные команды из предыдущих шагов, делая процесс более упорядоченным и эффективным.
Шаг 4. Проверка правильности функционирования Apache (HTTPD) на CentOS Stream
Наконец, необходимо проверить успешность внедрения и функционирования Apache (HTTPD) с помощью следующей команды systemctl:
1 | systemctl status httpd |
На скриншоте показан статус systemctl, подтверждающий корректную работу Apache и systemd на CentOS Stream 9 или 8.
Эта команда позволяет в режиме реального времени получить информацию о состоянии службы Apache (HTTPD), включая возможные ошибки и сообщения. Внимательно изучив статус службы, можно убедиться, что Apache (HTTPD) работает без сбоев.
Настройка правил FirewallD для Apache в CentOS Stream
Шаг 1. Осознание отсутствия правил брандмауэра по умолчанию на CentOS
При установке Apache (HTTPD) на CentOS Stream можно заметить отсутствие предварительно настроенных правил брандмауэра для стандартных портов 80 и 443. Очень важно, чтобы эти правила были настроены до того, как мы продолжим работу. Такая настройка повышает уровень безопасности вашего веб-приложения.
Правила брандмауэра задаются с помощью инструмента firewall-cmd, стандартной утилиты управления брандмауэром CentOS Stream. Точные правила зависят от того, какие именно порты вы планируете использовать. Однако все основные параметры перечислены в следующих шагах.
Шаг 2: Открытие портов 80 и 443
Первые две команды, которые мы выполним, будут посвящены открытию портов 80 и 443. Эти порты отвечают за обработку входящего HTTP- и HTTPS-трафика соответственно.
Чтобы открыть порт 80 или HTTP, выполните следующую команду:
1 | sudo firewall-cmd --permanent --add-port=80/tcp |
Далее откройте порт 443, или HTTPS, с помощью следующей команды:
1 | sudo firewall-cmd --permanent --add-port=443/tcp |
Шаг 3: Применение изменений
После того как мы указали порты, которые необходимо открыть, нам нужно попросить брандмауэр ввести эти изменения в действие. Для этого нужно перезагрузить правила брандмауэра с помощью следующей команды:
1 | sudo firewall-cmd --reload |
Шаг 4: Понимание последствий
Очень важно понимать последствия для безопасности, связанные с открытием портов в вашей системе. Выборочное открытие только необходимых портов позволяет усилить защиту веб-приложения от несанкционированного доступа и потенциальных угроз безопасности. Поэтому очень важно правильно настроить правила брандмауэра для Apache (HTTPD), установленного на CentOS Stream.
Шаг 5: Проверка доступа к Apache (HTTPD)
После тщательной настройки FirewallD необходимо убедиться, что доступ к целевой странице Apache (HTTPD) возможен через веб-браузер. Для этого запустите браузер и перейдите по адресу http://localhost или http://your_server_ip.
Для доступа через IP-адрес вашего сервера:
http://your_server_ip
Для доступа через localhost:
http://localhost
Если все настройки выполнены точно, то перед вами должна появиться стандартная целевая страница Apache (HTTPD), на которой будет показано сообщение о том, что сервер функционирует должным образом. Эта страница будет выглядеть примерно так:
Создание и настройка виртуального хоста с помощью Apache в CentOS Stream
В этом разделе мы рассмотрим практический аспект создания виртуального хоста с помощью Apache (HTTPD) - гибкого веб-сервера, известного своей возможностью размещения нескольких доменов на одном сервере. Эта утилита аналогична атрибуту "блоки сервера" в Nginx. В следующем уроке мы покажем, как создать виртуальный хост для заданного домена, представленного в виде "example-domain.com". Естественно, вы замените этот примерный домен своим конкретным доменным именем.
Создание виртуальных хостов позволяет независимо управлять конфигурациями каждого домена. Это позволяет контролировать различные аспекты среды веб-сервера, включая безопасность, производительность и пользовательские настройки. Это может быть особенно удобно, если вы планируете разместить на одном сервере несколько сайтов или поддерживать отдельные настройки для разных разделов вашего сайта. С помощью Apache (HTTPD) можно легко создавать виртуальные хосты, отвечающие этим требованиям.
Шаг 1: Создание и настройка каталогов для Apache на CentOS Stream
Для начала настройки виртуального хоста необходимо создать новый каталог, который будет служить корневой папкой виртуального хоста. Имя этого каталога обычно совпадает с именем домена.
Например, если ваше доменное имя "example.com", то вы создадите новый каталог командой:
1 | sudo mkdir /var/www/example.com |
В этой команде необходимо заменить "example.com" на ваше доменное имя. Таким образом, в каталоге будут храниться файлы и активы, связанные с виртуальными хостами, включая HTML-файлы, изображения, скрипты и другие ресурсы.
Создание отдельных каталогов для каждого виртуального хоста позволяет разделить задачи, что имеет большое значение в контексте безопасности и устранения неполадок.
Для доступа Apache (HTTPD) к новому каталогу могут потребоваться соответствующие права собственности и разрешения. Следующие команды устанавливают нужные права собственности и разрешения:
1 2 | sudo chown -R apache:apache /var/www/example.com sudo chmod -R 755 /var/www/example.com |
После того как новый каталог создан, можно приступать к настройке виртуального хоста.
Шаг 2: Создание файла index.html
В текстовом редакторе создается файл index.html для виртуального хоста. В нашем учебном пособии мы будем использовать текстовый редактор nano, хотя вы можете выбрать любой удобный для вас текстовый редактор.
Выполните следующую команду для создания файла index.html:
1 | sudo nano /var/www/example.com/index.html |
В текстовом редакторе начните создавать содержимое файла index.html. Этот файл обычно служит первой точкой контакта для пользователя, посещающего ваш сайт.
Приведем простой пример:
1 2 3 4 5 6 7 8 9 | <html> <head> <title>Example Domain</title> </head> <body> <h1>Welcome to Example Domain</h1> <p>This is a sample page for the domain example.com.</p> </body> </html> |
После завершения работы над содержимым файла index.html сохраните его и выйдите из текстового редактора. В случае с nano это делается нажатием клавиш Ctrl + X, затем Y и Enter.
Шаг 3: Настройка каталогов виртуальных хостов
Правильная настройка каталогов для веб-сервера Apache гарантирует бесперебойную и организованную работу конфигурации. В частности, каталогов "sites-available" и "sites-enabled". Эта конфигурация повторяет принятую в Nginx и способствует созданию организованных и доступных конфигураций.
Чтобы создать эти каталоги, выполните следующую команду:
1 | sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled |
После этого укажите Apache искать файлы виртуальных хостов в каталоге "/etc/httpd/sites-available":
1 | sudo nano /etc/httpd/conf/httpd.conf |
В открывшемся конфигурационном файле добавьте в конец строку "IncludeOptional sites-enabled/*.conf". Эта строка предписывает Apache включить все файлы конфигурации виртуальных хостов в каталог "sites-enabled".
1 | IncludeOptional sites-enabled/*.conf |
Как вариант, можно закомментировать "IncludeOptional conf.d/*.conf", отключив папку по умолчанию, в которой Apache ищет файлы виртуальных хостов. Это поможет предотвратить возможную путаницу.
Пример:
1 2 | #IncludeOptional conf.d/*.conf IncludeOptional sites-enabled/*.conf |
На этом рисунке показана секция конфигурационного файла Apache, определяющая порядок включения дополнительных каталогов, предназначенная для систем CentOS Stream.
Для сохранения файла и выхода из программы используйте комбинацию клавиш CTRL + O, а затем CTRL + X.
Шаг 4. Создание файла конфигурации виртуального хоста для Apache на CentOS Stream
Далее, используя текстовый редактор, создадим файл конфигурации виртуального хоста по адресу /etc/httpd/sites-available/example.com.conf.
1 | sudo nano /etc/httpd/sites-available/example.com.conf |
Заполните информацию placeholder в следующем блоке конфигурации своими ServerName, ServerAlias и Document Root, а затем скопируйте их в файл конфигурации виртуального хоста, расположенный по адресу /etc/httpd/sites-available/example.com.conf.
1 2 3 4 5 6 | <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName example_domain ServerAlias www.example_domain DocumentRoot /var/www/example.com/ </VirtualHost> |
Убедитесь, что директивы Server настроены в соответствии с вашими специфическими требованиями.
Шаг 5: Изменение прав доступа
Чтобы разрешить публичный доступ к серверу, необходимо изменить разрешения доступа для службы Apache в конфигурационном файле /etc/httpd/conf/httpd.conf. По умолчанию установлен запрет на доступ, и пропуск этого шага может привести к ошибкам HTTP 403 при доступе к Вашему сайту.
1 | sudo nano /etc/httpd/conf/httpd.conf |
Добавьте в файл следующий блок, обязательно изменив корневой каталог на свой собственный.
1 2 3 4 5 | <Directory /var/www/example.com/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> |
Для сохранения изменений используйте комбинацию клавиш CTRL+O и выйдите из текстового редактора с помощью CTRL+X.
Шаг 6: Включение виртуального хоста для Apache
Последним шагом в настройке виртуального хоста является его активация. Для этого необходимо создать символическую ссылку из каталога sites-available в каталог sites-enabled с помощью следующей команды.
1 | sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/ |
Для завершения процесса активации необходимо перезапустить службу Apache.
1 | sudo systemctl restart httpd |
После перезапуска службы Apache откройте веб-браузер и перейдите к своему доменному имени "HTTP://example_domain". Если домен еще не зарегистрирован, можно попробовать зайти на свой сайт по IP-адресу (локальному или удаленному). Если все настроено правильно, то вас должна встретить целевая страница, созданная в файле index.html.
Дополнительные команды и советы по работе с Apache на CentOS Stream 9 или 8
Защита каталогов и файлов для Apache на CentOS Stream 9 или 8
Важно отметить, что многие пользователи совершают распространенную ошибку, предоставляя чрезмерно высокие разрешения, например, полный доступ на чтение, запись и выполнение. Чтобы избежать этого, рекомендуется устанавливать безопасные разрешения для всех файлов и каталогов. Используйте следующую команду для поиска всех файлов и папок и установки наиболее часто используемых безопасных разрешений. Однако помните, что некоторые приложения, например phpBB, могут требовать для определенных папок разрешения 777. Поэтому при необходимости установите соответствующие разрешения для всех файлов и каталогов.
1 2 | sudo find /var/www/example.com/ -type d -exec chmod 755 "{}" \; sudo find /var/www/example.com/ -type f -exec chmod 644 "{}" \; |
Убедиться в том, что для файлов и каталогов установлены правильные разрешения, очень важно. Одной из распространенных ошибок является предоставление полного доступа на чтение, запись и выполнение. Чтобы избежать этого, используйте следующую команду для поиска всех папок и файлов и установки безопасных разрешений. Обязательно замените "/var/www/example.com/" на расположение вашего корневого каталога.
Этот процесс не гарантирует полной безопасности сервера Apache. Тем не менее, он снизит риск использования хакерами важных файлов сайта, поскольку разрешение 777 обычно не рекомендуется.
Защита Apache с помощью бесплатного SSL-сертификата Let’s Encrypt на CentOS Stream 9 или 8
Для повышения безопасности веб-сервера Apache и обеспечения безопасного соединения между клиентом и сервером рекомендуется использовать протокол HTTPS с SSL-сертификатом. Одним из наиболее удобных способов получения сертификата является Let's Encrypt - бесплатный, автоматизированный и открытый центр сертификации, управляемый некоммерческой организацией Internet Security Research Group (ISRG).
Одним из наиболее удобных способов установки SSL-сертификатов Let's Encrypt является использование программы Snapcraft, которая обеспечивает простой и стабильный подход для всех дистрибутивов на базе RHEL. Вам потребуется включить репозиторий EPEL для CentOS Stream в свою установку. Точный способ зависит от версии дистрибутива, но для этого достаточно выполнить одну из следующих команд.
Импорт EPEL для CentOS Stream 9
Прежде чем продолжить, убедитесь, что репозиторий CRB включен.
1 | sudo dnf config-manager --set-enabled crb |
Далее установите репозиторий EPEL, выполнив следующую команду терминала (dnf).
1 | sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm |
Импорт EPEL для CentOS Stream 8
Далее можно установить EPEL на CentOS Stream 8, выполнив следующую команду в терминале с помощью менеджера пакетов dnf.
1 | sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm |
Сначала установите пакет "mod_ssl".
1 | sudo dnf install mod_ssl |
После активации EPEL на дистрибутиве CentOS Stream можно установить Snap.
1 | sudo dnf install snapd -y |
После установки убедитесь, что Snap включен и при запуске системы.
1 | sudo systemctl enable snapd --now |
Следующим шагом будет установка ядра snap, которое позаботится обо всех зависимостях, необходимых для запуска пакетов snap.
1 | sudo snap install core |
Создайте символическую ссылку для каталога snapd.
1 | sudo ln -s /var/lib/snapd/snap /snap |
Для установки пакета Certbot snap используйте следующую команду терминала.
1 | sudo snap install --classic certbot |
Наконец, создайте еще одну символическую ссылку для пакета Certbot snap.
1 | sudo ln -s /snap/bin/certbot /usr/bin/certbot |
Выполните в терминале следующую команду для генерации SSL-сертификата с помощью Certbot.
1 | sudo certbot --dry-run --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com |
Для тех, кто впервые знакомится с Let's Encrypt, можно обратиться за дополнительной информацией к аббревиатуре в команде.
- Опция "-dry-run" используется для выполнения тестового запуска процесса генерации сертификатов без внесения каких-либо изменений в систему. Это полезно для целей тестирования.
- Опция "-apache" используется для указания того, что сертификат будет генерироваться для веб-сервера Apache.
- Опция "-agree-tos" используется для согласия с условиями обслуживания Let's Encrypt, центра сертификации, предоставляющего SSL-сертификат.
- Опция "-redirect" автоматически перенаправляет весь HTTP-трафик на HTTPS.
- Опция "-hsts" включает функцию HTTP Strict Transport Security (HSTS). Эта функция позволяет защититься от атак с понижением протокола и перехвата файлов cookie, указывая браузерам, что доступ к вашему сайту можно получить только через защищенное HTTPS-соединение.
- Опция "-staple-ocsp" позволяет использовать протокол Online Certificate Status Protocol (OCSP), который проверяет статус отзыва SSL-сертификата без обращения в центр сертификации.
- Опция "-email" используется для указания адреса электронной почты, который будет ассоциирован с сертификатом.
- Опция "-d" используется для указания доменного имени, для которого будет сгенерирован сертификат. В данном примере доменное имя - "www.example.com".
В качестве альтернативы можно использовать следующую команду и следовать пошаговым подсказкам для более доступной работы.
1 | sudo certbot certonly --apache |
Выполнив команду с указанными параметрами, вы направите certbot на создание SSL-сертификата для вашего домена "www.example.com", включив при этом такие необходимые функции безопасности, как принудительное 301-е перенаправление HTTPS, заголовок Strict-Transport-Security и OCSP Stapling. Важно отметить, что в команде необходимо заменить адрес электронной почты на свой собственный, а также обязательно заменить доменное имя "www.example.com" на желаемое доменное имя.
После получения SSL-сертификата следующим шагом будет настройка нашего веб-сервера на его использование. Это можно сделать автоматически с помощью подсказок CertBot, но может потребоваться и ручная настройка в Apache.
С помощью следующей команды откройте файл ssl.conf.
1 | sudo nano /etc/httpd/conf.d/ssl.conf |
В конфигурационном файле добавьте следующие строки: замените "example.com" на ваше доменное имя.
1 2 3 4 | SSLEngine on SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem |
Сохраните изменения и перезапустите Apache, чтобы конфигурация вступила в силу.
1 | sudo systemctl restart httpd |
После создания и настройки сертификата URL вашего сайта изменится с "HTTP://www.example.com" на "HTTPS://www.example.com". Вся связь между браузером пользователя и вашим сайтом будет зашифрована и защищена.
Для большего удобства и безопасности можно настроить задание cron для автоматического обновления сертификатов. Certbot предоставляет для этого скрипт, но перед его установкой рекомендуется выполнить пробный запуск скрипта, чтобы убедиться, что все работает так, как нужно.
1 | sudo certbot renew --dry-run |
Проверьте таймеры с помощью команды systemctl list-timers и убедитесь в наличии "snap.certbot.renew.timer".
1 | systemctl list-timers snap.certbot.renew.timer |
Для получения списка активных и неактивных таймеров в системе можно воспользоваться следующей командой: "systemctl list-timers -all". Это позволит получить обзор всех таймеров, включая "snap.certbot.renew.timer", что обеспечит автоматическую проверку и обновление сертификата до истечения срока его действия. Таким образом, вам не придется беспокоиться о процессе обновления.
1 | systemctl list-timers --all |
Управление службой Apache (HTTPD)
После того как Apache успешно установлен на вашем сервере, необходимо запомнить некоторые важные моменты для его эффективного управления.
Журналы сервера Apache
Журналы сервера Apache хранятся в каталоге /var/log/httpd/. Имена файлов по умолчанию для журналов доступа и ошибок - access.log и error.log соответственно. Однако возможно изменение этих имен в конфигурационном файле виртуального хоста.
Приведем пример изменения журналов сервера Apache в файле конфигурации виртуального хоста.
1 2 3 4 5 6 7 8 9 10 | <VirtualHost *:80> ServerName www.example.com DocumentRoot /var/www/example.com # Изменить журнал доступа на custom-access.log CustomLog /var/log/httpd/custom-access.log combined # Изменить журнал ошибок на custom-error.log ErrorLog /var/log/httpd/custom-error.log </VirtualHost> |
В этом примере журналы доступа и ошибок изменяются на custom-access.log и custom-error.log соответственно. Вы можете изменить имена файлов журналов на любые другие и обновить соответствующий путь в файле конфигурации виртуального хоста.
Команды Apache
Ниже приведены некоторые часто используемые команды при управлении Apache:
Остановить веб-сервер Apache:
1 | sudo systemctl stop httpd |
Запустить веб-сервер Apache:
1 | sudo systemctl start httpd |
Перезапустить веб-сервер Apache:
1 | sudo systemctl restart httpd |
Перезагрузить веб-сервер Apache:
1 | sudo systemctl reload httpd |
Отключить Apache при загрузке сервера:
1 | sudo systemctl disable httpd |
Включить Apache при загрузке сервера:
1 | sudo systemctl enable httpd |
Как обновить Apache (HTTPD)
Чтобы поддерживать Apache в актуальном состоянии, выполните команду, которую вы обычно используете для проверки актуальности системы.
1 | sudo dnf update --refresh |
Важно делать резервные копии или создавать образы системы перед выполнением любых обновлений, поскольку иногда могут возникать ошибки. Следующая команда обновит все системные пакеты, включая Apache, и предложит выполнить обновление.
Как удалить (деинсталлировать) Apache из CentOS Stream 9 или 8
Чтобы удалить Apache из системы, выполните следующую команду.
1 | sudo systemctl disable httpd --now |
Теперь используйте следующую команду для полного удаления Apache.
1 | sudo dnf remove httpd |
Оставшиеся файлы могут сохраниться в главном каталоге /etc/httpd, поэтому давайте удалим этот каталог.
1 | sudo rm -R /etc/httpd/ |
Заключение
Установка Apache (HTTPD) на CentOS Stream - это простой и понятный процесс, который можно выполнить всего за несколько шагов. Независимо от того, являетесь ли вы новичком или опытным пользователем, данное руководство поможет вам быстро начать работу с Apache (HTTPD) на CentOS Stream. Не забудьте настроить Apache (HTTPD) в соответствии с вашими потребностями и обеспечить безопасность установки для защиты вашего сайта и данных.