Apache HTTP Server (httpd) — один из самых популярных и надежных доступных веб-серверов, известный своей гибкостью, производительностью и широким набором функций. Он широко используется для размещения веб-сайтов и веб-приложений. Настройка Apache на CentOS Stream 9 позволяет вам использовать его возможности для нужд вашего веб-хостинга. Кроме того, защита вашего веб-сайта бесплатным SSL-сертификатом от Let’s Encrypt гарантирует, что ваш сайт зашифрован и заслуживает доверия.
Чтобы установить Apache HTTP Server на CentOS Stream 9 и настроить SSL-сертификат Let’s Encrypt, следуйте инструкциям, описанным в этом руководстве. Это обеспечит вам безопасную и эффективную конфигурацию веб-сервера.
Обновление системы CentOS Stream перед установкой Apache
Прежде чем продолжить установку Apache на вашем компьютере CentOS Stream, мы должны убедиться, что наша система полностью обновлена. Это больше, чем просто мера предосторожности. Обновление вашей системы помогает предотвратить проблемы с совместимостью и значительно повышает ее стабильность, безопасность и производительность.
Чтобы запустить обновление, выполните следующую команду в вашем терминале:
sudo dnf upgrade --refresh
Эта команда запускает установку последних обновлений ПО вашей системы и исправлений безопасности. Необходимо полностью завершить процесс обновления, прежде чем переходить к установке Apache. Это гарантирует, что ваша система настроена и подготовлена для запуска Apache без каких-либо проблем с совместимостью.
Установите Apache HTTPD с помощью команды DNF
Второй шаг — установить Apache, или HTTPD, в вашу систему CentOS Stream. Этот процесс выполняется благодаря менеджеру пакетов DNF.
Начните установку Apache (HTTPD), выполнив следующую команду в вашем терминале:
sudo dnf install httpd
Эта команда запускает механизм установки, извлекает и устанавливает все необходимые компоненты, позволяющие запускать Apache (HTTPD) в вашей системе. Процесс должен занять несколько минут. После этого Apache (HTTPD) будет полностью установлен и готов к использованию.
Активация и настройка Apache HTTPD для запуска при загрузке системы
После успешной установки Apache (HTTPD) в вашей системе CentOS Stream следующим ключевым действием является активация службы и настройка ее автоматического запуска при загрузке системы.
Если служба Apache (HTTPD) не активна или настроена на запуск по умолчанию, используйте эти команды в вашем терминале, чтобы запустить службу и убедиться, что она запускается при загрузке системы:
sudo systemctl start httpd
sudo systemctl enable httpd
Первая команда, sudo systemctl start httpd, запускает службу Apache (HTTPD), тогда как вторая команда, sudo systemctl enable httpd, настраивает службу на автоматический запуск при загрузке системы. Используя эти две команды, вы гарантируете, что Apache (HTTPD) постоянно доступен и активен при каждом включении вашей системы.
В качестве альтернативы вы можете объединить два предыдущих шага в одну команду:
sudo systemctl enable httpd --now
Опция –now в команде sudo systemctl enable httpd —now одновременно запускает службу Apache (HTTPD) и настраивает ее на автоматический запуск при загрузке системы. Т.е. одна команда объединяет две отдельные команды из предыдущих шагов, делая процесс более упрощенным.
Проверка состояния службы Apache HTTPD
Наконец, мы должны проверить функционирование Apache (HTTPD), используя команду systemctl:
systemctl status httpd
Эта команда предоставляет вам информацию о состоянии службы Apache (HTTPD) в режиме реального времени, включая любые ошибки или сообщения, которые могли бы возникнуть.
Изучив состояние службы, вы можете подтвердить, что Apache (HTTPD) работает без сбоев.
Настройка правил брандмауэра
После установки Apache (HTTPD) на CentOS Stream вы можете заметить, что брандмауэр не включает предварительно настроенные правила для стандартных портов 80 и 443. Вы должны настроить эти правила брандмауэра, прежде чем двигаться дальше, чтобы повысить безопасность вашего веб-приложения.
Установите правила брандмауэра с помощью firewall-cmd tool, утилиты управления брандмауэром CentOS Stream. Правила, которые вам нужно настроить, будут отличаться в зависимости от портов, которые вы собираетесь использовать. Однако мы перечислим все важные параметры в следующих шагах.
Открытие портов 80 и 443
Мы запустим первые две команды, чтобы открыть порты 80 и 443. Эти порты обрабатывают входящий HTTP и HTTPS трафик соответственно.
Чтобы открыть порт 80 или HTTP, выполните следующую команду:
sudo firewall-cmd --permanent --add-port=80/tcp
Далее откройте порт 443, или HTTPS, с помощью такой команды:
sudo firewall-cmd --permanent --add-port=443/tcp
Проверьте изменения брандмауэра
После указания портов для открытия мы должны дать указание брандмауэру реализовать эти изменения. Сделайте это, перезагрузив правила брандмауэра с помощью команды:
sudo firewall-cmd --reload
Понимание последствий
Крайне важно иметь четкое представление о последствиях для безопасности, связанных с открытием портов в вашей системе. Выборочно открывая только необходимые порты, вы повышаете защиту своего веб-приложения от несанкционированного доступа и потенциальных угроз безопасности. Важно правильно настроить правила брандмауэра для вашей установки Apache (HTTPD) в CentOS Stream.
Проверка доступа Apache HTTPD
После настройки Firewalld убедитесь, что вы можете получить доступ к целевой странице Apache (HTTPD) через свой веб-браузер. Запустите свой любимый веб-браузер и перейдите к либо http://localhost, либо http://your_server_ip.
Для доступа через IP вашего сервера:
http://your_server_ip
В качестве альтернативы можно получить доступ через localhost:
http://localhost
Когда вы все точно настроите, вас встретит целевая страница Apache (HTTPD) по умолчанию. На этой странице отображается сообщение, подтверждающее, что сервер работает должным образом. Страница будет иметь такой вид:
Создание и настройка виртуального хостинга
В этом разделе будет рассмотрен практический аспект создания виртуального хостинга с использованием Apache (HTTPD), гибкого веб-сервера, известного своей способностью размещать несколько доменов на одном сервере. А далее мы покажем, как создать виртуальный хост для домена, представленного как “example-domain.com”. Естественно, вы замените этот пример домена своим конкретным доменным именем.
Создание виртуальных хостов облегчает независимое управление конфигурациями для каждого домена. Это обеспечивает контроль над различными аспектами среды вашего веб-сервера, включая безопасность, производительность и пользовательские настройки. Это может оказаться особенно полезным, если вы хотите разместить несколько веб-сайтов на одном сервере или поддерживать отдельные настройки для разных разделов вашего веб-сайта. С Apache (HTTPD) вы можете без особых усилий создавать виртуальные хосты, соответствующие этим требованиям.
Создание и настройка каталогов
Для начала настройки вашего виртуального хостинга необходимо создать новый каталог, который служит корневой папкой для вашего виртуального хостинга. Имя этого каталога обычно совпадает с именем вашего домена.
Например, если ваше доменное имя “example.com”, вы должны создать новый каталог с помощью команды:
sudo mkdir /var/www/example.com
Эта команда требует замены “example.com” на ваше доменное имя. Таким образом, в каталоге будут размещены файлы, связанные с вашими виртуальными хостами, включая HTML-файлы, изображения, скрипты и другие ресурсы.
Для разрешения доступа Apache (HTTPD) к новому каталогу может потребоваться соответствующее владение и разрешения. Установить всё это поможет следующая команда:
sudo chown -R apache:apache /var/www/example.com
sudo chmod -R 755 /var/www/example.com
После установки нового каталога мы можем настроить ваш виртуальный хост.
Создание файла index.html
Создать файл index.html для вашего виртуального хостинга поможет текстовый редактор. В нашем руководстве мы будем использовать текстовый редактор nano, хотя вы можете выбрать любой другой текстовый редактор, который вам больше нравится.
Выполните следующую команду, чтобы создать файл index.html :
sudo nano /var/www/example.com/index.html
В текстовом редакторе начните создавать содержимое для вашего файла index.html. Этот файл обычно служит первой точкой соприкосновения пользователя и вашего веб-сайта.
Вот простой пример:
<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.
Настройка каталогов виртуальных хостов
Правильная настройка каталогов для веб-сервера Apache гарантирует бесперебойную и упорядоченную работу. В частности, используются каталоги «sites-available» и «sites-enabled». Эта конфигурация аналогична той, что используется в Nginx, и способствует упорядоченной и доступной настройке.
Чтобы создать эти каталоги, используйте следующую команду:
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled
Затем укажите Apache искать файлы виртуальных хостов в каталоге «/etc/httpd/sites-available»:
sudo nano /etc/httpd/conf/httpd.conf
В открытом файле конфигурации добавьте в конец строку «IncludeOptional sites-enabled/*.conf». Эта строка указывает Apache на необходимость включить все файлы конфигурации виртуальных хостов в каталоге «sites-enabled».
IncludeOptional sites-enabled/*.conf
При желании вы можете закомментировать «IncludeOptional conf.d/*.conf», отключив папку по умолчанию, в которой Apache ищет файлы виртуальных хостов. Это поможет избежать возможных ошибок.
Пример:
#IncludeOptional conf.d/*.conf
IncludeOptional sites-enabled/*.conf
Чтобы сохранить файл и выйти, используйте комбинацию клавиш CTRL + O, за которой следует комбинация CTRL + X.
Создание файла конфигурации виртуального хоста
Далее, используя ваш текстовый редактор, мы создадим файл конфигурации виртуального хоста по адресу /etc/httpd/sites-available/example.com.conf.
sudo nano /etc/httpd/sites-available/example.com.conf
Заполните информацию в следующем блоке конфигурации именем вашего сервера, ServerAlias и корневым каталогом документа, прежде чем копировать ее в файл конфигурации виртуального хоста, расположенный по адресу /etc/httpd/sites-available/example.com.conf.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName example_domain
ServerAlias www.example_domain
DocumentRoot /var/www/example.com/
</VirtualHost>
Настройте директивы сервера в соответствии с вашими конкретными требованиями.
Шаг 5: Изменение прав доступа
Чтобы предоставить общий доступ к вашему серверу, измените права доступа для службы Apache в файле конфигурации /etc/httpd/conf/httpd.conf. Конфигурация по умолчанию запрещает доступ. Если вы пренебрежете этим шагом, вы можете столкнуться с ошибками HTTP 403, при попытке доступа к вашему веб-сайту.
sudo nano /etc/httpd/conf/httpd.conf
Добавьте следующий блок в свой файл, убедившись, что вы настроили корневой каталог так, чтобы он соответствовал вашему собственному.
<Directory /var/www/example.com/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Чтобы сохранить эти изменения, используйте комбинацию клавиш CTRL + O и выйдите из текстового редактора с помощью CTRL + X.
Шаг 6: Включение виртуального хоста для Apache в CentOS Stream
Чтобы настроить виртуальный хост, вы должны активировать его в качестве последнего шага. Создайте символическую ссылку на каталог с включенными сайтами, используя приведенную ниже команду:
sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/
Вам необходимо перезапустить службу Apache, чтобы завершить процесс активации.
sudo systemctl restart httpd
После перезапуска службы Apache откройте свой веб-браузер и перейдите к “HTTP://example_domain.” Если вы не регистрировали домен, тогда вы можете получить доступ к своему веб-сайту, используя IP-адрес (локальный или удаленный). Если вы все настроили правильно, целевая страница, созданная вами в файле index.html, поприветствует вас.
Дополнительные команды и советы
Безопасные каталоги и файлы
Настройка безопасных разрешений
Использование безопасных разрешений для файлов и каталогов в Apache на CentOS имеет большое значение. Часто предоставляются чрезмерные разрешения, например, полный общий доступ. Для предотвращения угроз безопасности рекомендуется ограничить разрешения. Для каталогов используйте chmod 755
, а для файлов — chmod 644
. Ниже приведены команды для установки этих разрешений. Помните, некоторым приложениям могут потребоваться другие разрешения, например, 777
для phpBB.
- Для каталогов:
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 с помощью Let’s Encrypt SSL
Установка SSL-сертификата Let’s Encrypt
Защита вашего сервера Apache с помощью SSL-сертификата необходима для безопасных подключений клиент-сервер. Let’s Encrypt предоставляет бесплатный автоматический SSL-сертификат. Сначала убедитесь, что включен репозиторий CRB и установлен репозиторий EPEL. Процесс установки в CentOS Stream 9 и 8 немного отличается .
Для CentOS Stream 9:
- Включить CRB:
sudo dnf config-manager --set-enabled crb
- Установить репозиторий EPEL:
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
Далее устанавливаем и привязываем mod_ssl
:
sudo dnf install mod_ssl
Активируйте EPEL в вашем дистрибутиве CentOS Stream, а затем установите Snap.
sudo dnf install snapd -y
После установки обязательно включите Snap и сразу же включите запуск системы.
sudo systemctl enable snapd --now
Следующим шагом будет установка snap core, которая позаботится обо всех зависимостях, необходимых для запуска пакетов snap.
sudo snap install core
Создайте символическую ссылку для каталога snapd.
sudo ln -s /var/lib/snapd/snap /snap
Используйте следующую команду в терминале для установки пакета Certbot snap.
sudo snap install --classic certbot
Наконец, создайте еще одну символическую ссылку для пакета Certbot snap.
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Запуск Certbot для Apache
Выполните следующую команду в вашем терминале, чтобы сгенерировать ваш SSL-сертификат с помощью Certbot.
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 (HSTS). Эта функция безопасности помогает защититься от атак с понижением версии протокола и перехвата файлов cookie, разрешая браузерам доступ к вашему веб-сайту только по защищенному HTTPS-соединению.
- Опция “—staple-ocsp” Включает или настраивает OCSP Stapling в серверной конфигурации, это механизм, который улучшает проверку статуса SSL/TLS сертификатов проверяет статус отзыва SSL-сертификата без обращения в центр сертификации.
- Используйте опцию “—email”, чтобы указать адрес электронной почты, который вы хотите связать с сертификатом.
- Опция “-d” указывает доменное имя, для которого вы будете генерировать сертификат.
В этом примере доменное имя — “www.example.com”.
В качестве альтернативы вы можете использовать следующую команду и следовать пошаговым подсказкам для более доступного взаимодействия:
sudo certbot certonly --apache
Выполняя команду с указанными параметрами, вы направляете certbot на создание SSL-сертификата для вашего домена “www.example.com ” при этом также включены необходимые функции безопасности, такие как принудительное перенаправление HTTPS 301, заголовок Strict-Transport-Security и OCSP.
Важно отметить, что вы должны заменить адрес электронной почты в команде на свой собственный, а также обязательно заменить доменное имя “www.example.com” на желаемое доменное имя.
Настройка SSL на Apache
После получения SSL-сертификата настройте свой сервер Apache для его использования. Отредактируйте ssl.conf
файл и добавьте следующие строки, заменив “example.com” на ваш домен.:
sudo nano /etc/httpd/conf.d/ssl.conf
В файле конфигурации добавьте следующие строки: замените “example.com” на ваше доменное имя.
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, чтобы конфигурация вступила в силу.
sudo systemctl restart httpd
Эта настройка обеспечивает зашифрованную, безопасную связь между браузерами и вашим веб-сайтом.
Автоматизация обновления сертификата
Чтобы поддерживать SSL-сертификат в актуальном состоянии, настройте задание cron для автоматического обновления. Протестируйте процесс обновления с помощью пробного запуска:
sudo certbot renew --dry-run
Проверьте таймеры с помощью команды systemctl list-timers и убедитесь, что “snap.certbot.renew.timer” присутствует.
systemctl list-timers snap.certbot.renew.timer
Используйте команду “systemctl list-timers –all” для просмотра активных и неактивных таймеров в вашей системе. Эта команда покажет все таймеры, включая “snap.certbot.renew.timer”. “Snap.certbot.renew.timer” обеспечивает автоматическую проверку и продление вашего сертификата до истечения срока действия. Таким образом, вы устраняете проблемы, связанные с процессом продления ssl сертификата.
systemctl list-timers --all
Управление Apache HTTPD
После успешной настройки Apache на вашем сервере, есть несколько важных моментов для эффективного управления, которые следует помнить.
Журналы сервера Apache
Журналы сервера Apache хранятся в каталоге /var/log/httpd/. Имена файлов по умолчанию для журналов (доступы и ошибки) access и error — access.log и error.log соответственно. Однако возможно изменение этих имен в файле конфигурации виртуального хоста.
Вот пример изменения журналов сервера Apache в файле конфигурации виртуального хоста.
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/example.com
# Change access log to custom-access.log
CustomLog /var/log/httpd/custom-access.log combined
# Change error log to custom-error.log
ErrorLog /var/log/httpd/custom-error.log
</VirtualHost>
В этом примере журналы доступа и ошибок изменены на custom-access.log и custom-error.log соответственно. Вы можете изменить имена файлов журнала на любые, которые вы предпочитаете, и обновить соответствующий путь в файле конфигурации виртуального хоста.
Команды Apache
Вот некоторые из часто используемых команд при управлении Apache:
Остановить веб-сервер Apache:
sudo systemctl stop httpd
Запустите веб-сервер Apache:
sudo systemctl start httpd
Перезапустите веб-сервер Apache:
sudo systemctl restart httpd
Перезагрузите веб-сервер Apache:
sudo systemctl reload httpd
Отключите Apache при загрузке сервера:
sudo systemctl disable httpd
Включить Apache при загрузке сервера:
sudo systemctl enable httpd
Как обновить Apache HTTPD
Чтобы поддерживать Apache в актуальном состоянии, запустите команду, которую вы обычно используете для проверки актуальности вашей системы.
sudo dnf update --refresh
Важно создавать резервные копии или образы вашей системы перед выполнением каких-либо обновлений, поскольку иногда могут возникать ошибки.
Следующая команда обновит все системные пакеты, включая Apache, и предложит вам выполнить обновление.
Как удалить Apache HTTPD
Чтобы удалить Apache из вашей системы, используйте следующую команду.
sudo systemctl disable httpd --now
Теперь используйте следующую команду, чтобы полностью удалить Apache.
sudo dnf remove httpd
Оставшиеся файлы (хвосты) могут сохраняться в главном каталоге /etc / httpd, поэтому давайте удалим эту папку.
sudo rm -R /etc/httpd/
Заключение
С успешно настроенными HTTP-сервером Apache и Let’s Encrypt в вашей системе CentOS Stream ваш веб-сайт будет надежным и безопасным. Регулярное обновление Apache и вашего SSL-сертификата Let’s Encrypt поможет поддерживать оптимальную безопасность и производительность.