One place for hosting & domains

      вебсервера

      Установка веб-сервера Apache в CentOS 8. [Краткое руководство.]


      Введение

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

      С помощью этого руководства вы установите веб-сервер Apache с виртуальными хостами на ваш сервер на базе CentOS 8. Более подробную версию этого обучающего модуля можно найти в документе «Установка веб-сервера Apache в CentOS 8».

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

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

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

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

      С помощью non-root user с привилегиями sudo, настроенного согласно предварительным требованиям, установите пакет Apache:

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

      Шаг 2 — Настройка брандмауэра

      Если вы выполнили рекомендации из руководства Начальная настройка сервера с CentOS 8. Шаг 4, указанные в разделе предварительных требований, на вашем сервере уже будет установлен брандмауэр firewalld для обслуживания запросов через HTTP.

      Если вы планируете настроить Apache для обслуживания запросов через HTTPS, вам также нужно открыть порт 443, включив службу https:

      • sudo firewall-cmd --permanent --add-service=https

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

      • sudo firewall-cmd --reload

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

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

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

      • sudo systemctl start httpd

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

      • sudo systemctl status httpd

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

      Output

      ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disa> Active: active (running) since Thu 2020-04-23 22:25:33 UTC; 11s ago Docs: man:httpd.service(8) Main PID: 14219 (httpd) Status: "Running, listening on: port 80" Tasks: 213 (limit: 5059) Memory: 24.9M CGroup: /system.slice/httpd.service ├─14219 /usr/sbin/httpd -DFOREGROUND ├─14220 /usr/sbin/httpd -DFOREGROUND ├─14221 /usr/sbin/httpd -DFOREGROUND ├─14222 /usr/sbin/httpd -DFOREGROUND └─14223 /usr/sbin/httpd -DFOREGROUND ...

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

      http://your_server_ip
      

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

      Страница Apache по умолчанию в CentOS 8

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

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

      При работе с веб-сервером Apache вы можете использовать виртуальные хосты (аналогичные серверным блокам в Nginx) для инкапсуляции данных конфигурации и размещения на одном сервере нескольких доменов. На этом шаге мы будем настраивать домен с именем example.com, но вы должны будете заменить его собственным доменным именем. О том, как настроить доменное имя с помощью DigitalOcean, можно узнать из нашей сетевой документации.

      Создайте каталог html для example.com следующим образом, используя флаг -p для создания необходимых родительских каталогов:

      • sudo mkdir -p /var/www/example.com/html

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

      • sudo mkdir -p /var/www/example.com/log

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

      • sudo chown -R $USER:$USER /var/www/example.com/html

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

      • sudo chmod -R 755 /var/www

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

      • sudo vi /var/www/example.com/html/index.html

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

      /var/www/example.com/html/index.html

      <html>
        <head>
          <title>Welcome to Example.com!</title>
        </head>
        <body>
          <h1>Success! The example.com virtual host is working!</h1>
        </body>
      </html>
      

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

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

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

      • sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled

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

      • sudo vi /etc/httpd/conf/httpd.conf

      Нажмите большую G, чтобы перейти в конец файла. Затем нажмите i для переключения в режим INSERT и добавьте в самый конец файла следующую строку:

      /etc/httpd/conf/httpd.conf

      ...
      # Supplemental configuration
      #
      # Load config files in the "/etc/httpd/conf.d" directory, if any.
      IncludeOptional conf.d/*.conf
      IncludeOptional sites-enabled/*.conf
      

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

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

      • sudo vi /etc/httpd/sites-available/example.com.conf

      Добавьте следующий блок конфигурации и измените домен example.com на собственный:

      /etc/httpd/sites-available/example.com.conf

      <VirtualHost *:80>
          ServerName www.example.com
          ServerAlias example.com
          DocumentRoot /var/www/example.com/html
          ErrorLog /var/www/example.com/log/error.log
          CustomLog /var/www/example.com/log/requests.log combined
      </VirtualHost>
      

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

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

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

      • sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf

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

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

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

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

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

      Универсальная настройка политики Apache позволит SELinux одинаковым образом использовать все процессы Apache, используя для этого булеву переменную httpd_unified. Хотя этот подход более удобен, он не обеспечивает аналогичный уровень контроля, что и подход, который подразумевает внимание к политике для отдельных файлов и директорий.

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

      • sudo setsebool -P httpd_unified 1

      Команда setsebool меняет значения булевых значений SELinux. Флаг -P будет обновлять значение времени начальной загрузки, а обновленное значение сохраняется между перезагрузками. httpd_unified — это булево значение, которое позволит SELinux рассматривать все процессы Apache как один тип, поэтому вы активировали его со значением 1.

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

      Индивидуальная настройка разрешений SELinux для директории /var/www/example.com/log позволит вам получить более полноценный контроль за политиками Apache, но также может потребовать дополнительных действий. Поскольку этот параметр не подразумевает наличия универсально настроенных политик, вам нужно будет вручную задать тип контекста для любых новых директорий.

      Вначале проверьте тип контекста, который SELinux указал для директории /var/www/example.com/log:

      • sudo ls -dlZ /var/www/example.com/log/

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

      Output

      drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_sys_content_t:s0 6 Apr 23 23:51 /var/www/example.com/log/

      В настоящее время используется контекст httpd_sys_content_t, который указывает SELinux, что процесс Apache может читать только файлы, созданные в этой директории. В ходе данного обучающего руководства вы измените тип контекста директории /var/www/example.com/log на httpd_log_t​​​​. Этот тип позволит Apache генерировать и добавлять данные в файлы журнала веб-приложения:

      • sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"

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

      • sudo restorecon -R -v /var/www/example.com/log

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

      Output

      Relabeled /var/www/example.com/log from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:httpd_log_t:s0

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

      • sudo ls -dlZ /var/www/example.com/log/

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

      Output

      drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_log_t:s0 6 Apr 23 23:51 /var/www/example.com/log/

      Теперь, когда директория /var/www/example.com/log использует тип httpd_log_t, вы готовы протестировать вашу конфигурацию виртуального хоста.

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

      После обновления контекста SELinux с помощью любого метода Apache сможет осуществлять запись в директорию /var/www/example.com/log. Теперь вы можете перезапустить службу Apache:

      • sudo systemctl restart httpd

      Сформируйте список содержимого директории /var/www/example.com/log, чтобы убедиться, что Apache создал файлы журнала:

      • ls -lZ /var/www/example.com/log

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

      Output

      -rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 error.log -rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 requests.log

      Теперь, когда вы настроили ваш виртуальный хост и обновили разрешения SELinux, Apache будет обслуживать ваше доменное имя. Вы можете проверить это, открыв в браузере адрес http://example.com, после чего должны увидеть примерно следующее:

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

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

      Заключение

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

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



      Source link

      Установка веб-сервера Apache в CentOS 8


      Введение

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

      С помощью этого руководства вы установите веб-сервер Apache с виртуальными хостами на ваш сервер на базе CentOS 8.

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

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

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

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

      С помощью non-root user с привилегиями sudo, настроенного согласно предварительным требованиям, установите пакет Apache:

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

      Если вы выполнили рекомендации из руководства Начальная настройка сервера с CentOS 8. Шаг 4, указанные в разделе предварительных требований, на вашем сервере уже будет установлен брандмауэр firewalld для обслуживания запросов через HTTP.

      Если вы планируете настроить Apache для обслуживания запросов через HTTPS, вам также нужно открыть порт 443, включив службу https:

      • sudo firewall-cmd --permanent --add-service=https

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

      • sudo firewall-cmd --reload

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

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

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

      • sudo systemctl start httpd

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

      • sudo systemctl status httpd

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

      Output

      ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disa> Active: active (running) since Thu 2020-04-23 22:25:33 UTC; 11s ago Docs: man:httpd.service(8) Main PID: 14219 (httpd) Status: "Running, listening on: port 80" Tasks: 213 (limit: 5059) Memory: 24.9M CGroup: /system.slice/httpd.service ├─14219 /usr/sbin/httpd -DFOREGROUND ├─14220 /usr/sbin/httpd -DFOREGROUND ├─14221 /usr/sbin/httpd -DFOREGROUND ├─14222 /usr/sbin/httpd -DFOREGROUND └─14223 /usr/sbin/httpd -DFOREGROUND ...

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

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

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

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

      Также в качестве альтернативы вы можете использовать curl для запроса IP-адреса из icanhazip.com, который предоставит вам ваш публичный IPv4-адрес, видимый в другом расположении в Интернете:

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

      http://your_server_ip
      

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

      Страница Apache по умолчанию в CentOS 8

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

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

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

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

      • sudo systemctl stop httpd

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

      • sudo systemctl start httpd

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

      • sudo systemctl restart httpd

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

      • sudo systemctl reload httpd

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

      • sudo systemctl disable httpd

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

      • sudo systemctl enable httpd

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

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

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

      При работе с веб-сервером Apache вы можете использовать виртуальные хосты (аналогичные серверным блокам в Nginx) для инкапсуляции данных конфигурации и размещения на одном сервере нескольких доменов. На этом шаге мы будем настраивать домен с именем example.com, но вы должны будете заменить его собственным доменным именем. О том, как настроить доменное имя с помощью DigitalOcean, можно узнать из нашей сетевой документации.

      В Apache в CentOS 8 по умолчанию включен один виртуальный хост, настроенный на обслуживание документов из директории /var/www/html. Хотя это хорошо работает для отдельного сайта, при хостинге нескольких сайтов это неудобно. Вместо изменения /var/www/html вы создадите структуру директорий внутри /var/www для сайта example.com, оставив /var/www/html на месте в качестве директории по умолчанию, которая будет обслуживаться, если запрос клиента не будет соответствовать каким-либо другим сайтам.

      Создайте директорию html для example.com, используя флаг -p для создания необходимых родительских директорий:

      • sudo mkdir -p /var/www/example.com/html

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

      • sudo mkdir -p /var/www/example.com/log

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

      • sudo chown -R $USER:$USER /var/www/example.com/html

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

      • sudo chmod -R 755 /var/www

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

      • sudo vi /var/www/example.com/html/index.html

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

      /var/www/example.com/html/index.html

      <html>
        <head>
          <title>Welcome to Example.com!</title>
        </head>
        <body>
          <h1>Success! The example.com virtual host is working!</h1>
        </body>
      </html>
      

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

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

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

      • sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled

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

      • sudo vi /etc/httpd/conf/httpd.conf

      Нажмите большую G, чтобы перейти в конец файла. Затем нажмите i для переключения в режим INSERT и добавьте в самый конец файла следующую строку:

      /etc/httpd/conf/httpd.conf

      ...
      # Supplemental configuration
      #
      # Load config files in the "/etc/httpd/conf.d" directory, if any.
      IncludeOptional conf.d/*.conf
      IncludeOptional sites-enabled/*.conf
      

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

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

      • sudo vi /etc/httpd/sites-available/example.com.conf

      Добавьте следующий блок конфигурации и измените домен example.com на собственный:

      /etc/httpd/sites-available/example.com.conf

      <VirtualHost *:80>
          ServerName www.example.com
          ServerAlias example.com
          DocumentRoot /var/www/example.com/html
          ErrorLog /var/www/example.com/log/error.log
          CustomLog /var/www/example.com/log/requests.log combined
      </VirtualHost>
      

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

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

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

      • sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf

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

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

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

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

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

      Универсальная настройка политики Apache позволит SELinux одинаковым образом использовать все процессы Apache, используя для этого булеву переменную httpd_unified. Хотя этот подход более удобен, он не обеспечивает аналогичный уровень контроля, что и подход, который подразумевает внимание к политике для отдельных файлов и директорий.

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

      • sudo setsebool -P httpd_unified 1

      Команда setsebool меняет значения булевых значений SELinux. Флаг -P будет обновлять значение времени начальной загрузки, а обновленное значение сохраняется между перезагрузками. httpd_unified — это булево значение, которое позволит SELinux рассматривать все процессы Apache как один тип, поэтому вы активировали его со значением 1.

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

      Индивидуальная настройка разрешений SELinux для директории /var/www/example.com/log позволит вам получить более полноценный контроль за политиками Apache, но также может потребовать дополнительных действий. Поскольку этот параметр не подразумевает наличия универсально настроенных политик, вам нужно будет вручную задать тип контекста для любых новых директорий.

      Вначале проверьте тип контекста, который SELinux указал для директории /var/www/example.com/log:

      • sudo ls -dlZ /var/www/example.com/log/

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

      Output

      drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_sys_content_t:s0 6 Apr 23 23:51 /var/www/example.com/log/

      В настоящее время используется контекст httpd_sys_content_t, который указывает SELinux, что процесс Apache может читать только файлы, созданные в этой директории. В ходе данного обучающего руководства вы измените тип контекста директории /var/www/example.com/log на httpd_log_t​​​​. Этот тип позволит Apache генерировать и добавлять данные в файлы журнала веб-приложения:

      • sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"

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

      • sudo restorecon -R -v /var/www/example.com/log

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

      Output

      Relabeled /var/www/example.com/log from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:httpd_log_t:s0

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

      • sudo ls -dlZ /var/www/example.com/log/

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

      Output

      drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_log_t:s0 6 Apr 23 23:51 /var/www/example.com/log/

      Теперь, когда директория /var/www/example.com/log использует тип httpd_log_t, вы готовы протестировать вашу конфигурацию виртуального хоста.

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

      После обновления контекста SELinux с помощью любого метода Apache сможет осуществлять запись в директорию /var/www/example.com/log. Теперь вы можете перезапустить службу Apache:

      • sudo systemctl restart httpd

      Сформируйте список содержимого директории /var/www/example.com/log, чтобы убедиться, что Apache создал файлы журнала:

      • ls -lZ /var/www/example.com/log

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

      Output

      -rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 error.log -rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 requests.log

      Теперь, когда вы настроили ваш виртуальный хост и обновили разрешения SELinux, Apache будет обслуживать ваше доменное имя. Вы можете проверить это, открыв в браузере адрес http://example.com, после чего должны увидеть примерно следующее:

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

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

      Заключение

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

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



      Source link

      Установка веб-сервера Apache в Ubuntu 20.04 [Краткое руководство]


      Введение

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

      В этом обучающем руководстве мы расскажем, как установить веб-сервер Apache на сервере Ubuntu 20.04. Более подробную версию этого обучающего руководства можно найти в документе Установка веб-сервера Apache в Ubuntu 20.04.

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

      Для прохождения этого обучающего модуля вам потребуется следующее:

      • Один сервер Ubuntu 20.04 и обычный non-root user с привилегиями sudo. Также вам потребуется включить базовый брандмауэр, чтобы заблокировать все порты, кроме необходимых. Вы научитесь настраивать учетную запись обычного пользователя и брандмауэр для вашего сервера, следуя указаниям руководства Начальная настройка сервера Ubuntu 20.04.

      Создав учетную запись, войдите в систему как non-root user.

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

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

      Обновите локальный индекс пакетов:

      Установите пакет apache2:

      Шаг 2 — Настройка брандмауэра

      Проверьте доступные профили приложений ufw:

      Output

      Available applications: Apache Apache Full Apache Secure OpenSSH

      Мы активируем профиль с наибольшими ограничениями, который будет разрешать заданный трафик, а именно трафик на порту 80 (обычный веб-трафик без шифрования):

      Проверьте изменения:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache (v6) ALLOW Anywhere (v6)

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

      Используйте команду systemd init system, чтобы проверить работу службы:

      • sudo systemctl status apache2

      Output

      apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese> Active: active (running) since Tue 2020-04-28 23:06:40 UTC; 56s ago Docs: https://httpd.apache.org/docs/2.4/ Main PID: 13785 (apache2) Tasks: 55 (limit: 1137) Memory: 5.3M CGroup: /system.slice/apache2.service ├─13785 /usr/sbin/apache2 -k start ├─13787 /usr/sbin/apache2 -k start └─13788 /usr/sbin/apache2 -k start

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

      http://your_server_ip
      

      Вы должны получить веб-страницу Ubuntu 20.04 Apache по умолчанию:

      Страница Apache по умолчанию

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

      При использовании веб-сервера Apache вы можете использовать виртуальные хосты (аналогичные серверным блокам в Nginx) для инкапсуляции данных конфигурации и размещения на одном сервере нескольких доменов. Мы создадим домен your_domain, но вы должны заменить это имя собственным доменным именем. Дополнительную информацию о настройке доменного имени с помощью платформы DigitalOcean можно найти в нашей статье Введение в DigitalOcean DNS.

      Создайте каталог для your_domain:

      sudo mkdir /var/www/your_domain
      

      Назначьте владельца каталога:

      • sudo chown -R $USER:$USER /var/www/your_domain

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

      • sudo chmod -R 755 /var/www/your_domain

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

      • nano /var/www/your_domain/index.html

      Добавьте в страницу следующий образец кода HTML:

      /var/www/your_domain/index.html

      <html>
          <head>
              <title>Welcome to Your_domain!</title>
          </head>
          <body>
              <h1>Success!  The your_domain virtual host is working!</h1>
          </body>
      </html>
      

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

      Создайте новый файл виртуального хоста в /etc/apache2/sites-available/your_domain.conf:

      • sudo nano /etc/apache2/sites-available/your_domain.conf

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

      /etc/apache2/sites-available/your_domain.conf

      <VirtualHost *:80>
          ServerAdmin webmaster@localhost
          ServerName your_domain
          ServerAlias your_domain
          DocumentRoot /var/www/your_domain
          ErrorLog ${APACHE_LOG_DIR}/error.log
          CustomLog ${APACHE_LOG_DIR}/access.log combined
      </VirtualHost>
      

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

      Активируйте файл с помощью команды a2ensite:

      • sudo a2ensite your_domain.conf

      Отключите сайт по умолчанию, определеный в 000-default.conf:

      • sudo a2dissite 000-default.conf

      Проверьте наличие ошибок конфигурации:

      • sudo apache2ctl configtest

      Вы должны получить следующий результат:

      Output

      Syntax OK

      Перезапустие Apache для внесения изменений:

      • sudo systemctl restart apache2

      Теперь Apache должен обслуживать ваше доменное имя. Вы можете проверить это, открыв в браузере адрес http://your_domain, после чего должны получить примерно следующее:

      Пример виртуального хоста Apache

      Заключение

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

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



      Source link