Apache2: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Строка 19: Строка 19:
|}
|}


'''apache2 (Apache HTTP Server)''' веб-сервер, который представляет собой программное обеспечение с открытым исходным кодом. Он используется для размещения веб-сайтов и доступа к ним.
'''Apache Httpd''' - свободный веб-сервер.
 
Благодаря модульной структуре Apache обладает гибкостью и расширяемостью, а также надёжностью и стабильностью работы. Apache поддерживается многими операционными системами, в том числе ОС ALT Linux.
 
==Установка сервера в ALT Linux==


=Установка=
=Установка=
Строка 35: Строка 31:
*MariaDB
*MariaDB


=Настройка=
Включаем и запускаем службы Apache и MySQL:
Включаем и запускаем службы Apache и MySQL:
  # systemctl enable --now httpd2
  # systemctl enable --now httpd2
  # systemctl enable --now mysqld
  # systemctl enable --now mysqld


==Управление службой==
{|class="wikitable" style="float:center; margin-left:2em"
!colspan="3"|Команды
|-
|'''Запуск'''
| {{cmd|# systemctl start httpd2}}
| {{cmd|# apachectl start}}
|-
|'''Остановка'''
| {{cmd|# systemctl stop httpd2}}
| {{cmd|# apachectl stop}}
|-
|'''Перезапуск'''
| {{cmd|# systemctl restart httpd2}}
| {{cmd|# apachectl restart}}
|-
|'''Отключение автозагрузки'''
|colspan="2"| {{cmd|# systemctl disable httpd2}}
|-
|'''Включение автозагрузки'''
|colspan="2"| {{cmd|# systemctl enable httpd2}}
|-
|'''Перезапуск службы без сброса соединений'''
|colspan="2"| {{cmd|# systemctl reload httpd2}}
|-
|'''Состояние службы'''
|colspan="2"| {{cmd|# systemctl status httpd2}}
|-
|'''Версия Apache'''
|colspan="2"| {{cmd|# httpd2 -v}}
|-
|'''Содержимое юнита'''
|colspan="2"| {{cmd|$ systemctl cat httpd2}}
|}
Более подробную информацию об apachectl можно посмотреть командой {{cmd|man apachectl}}.
Когда Apache запускается через apachectl, он не регистрируется как служба systemd, поэтому некоторые функции управления процессами, такие как автоматический запуск при загрузке системы, могут потребовать дополнительной настройки. Также будут другие параметры журналирования.
=Настройка=
Файлы конфигурации Apache хранятся в {{path|/etc/httpd2/conf/}}.
Файлы конфигурации Apache хранятся в {{path|/etc/httpd2/conf/}}.


Основной файл конфигурации {{path|/etc/httpd2/conf/httpd2.conf}} включает в себя различные другие файлы настроек и конфигураций.
Основной файл конфигурации {{path|/etc/httpd2/conf/httpd2.conf}} включает в себя различные другие файлы настроек и конфигураций.


==Настройки==
==Опции==
===Структура каталогов конфигурации===
===httpd2.conf===
Основные файлы Apache в ALT Linux лежат в {{path|/etc/httpd2/}}.
====Пользователь и группа====
Данный параметр задается в файле {{path|/etc/httpd2/conf/httpd2.conf}}
User apache2
Group apache2


<syntaxhighlight lang="bash">
По соображениям безопасности, как только Apache запускается под root (напрямую или через сценарии запуска), он переключается на эти UID и GID. Пользователь по умолчанию — apache2 создается автоматически во время установки.
# ls /etc/httpd2/ -l
итого 4
drwxr-xr-x 18 root root 4096 янв 15 11:20 conf
lrwxrwxrwx  1 root root  21 июл 29 14:51 lock -> ../../var/lock/httpd2
lrwxrwxrwx  1 root root  20 июл 29 14:51 logs -> ../../var/log/httpd2
lrwxrwxrwx  1 root root  31 июл 29 14:51 modules -> ../../usr/lib64/apache2/modules
lrwxrwxrwx  1 root root  20 июл 29 14:51 run -> ../../var/run/httpd2
lrwxrwxrwx  1 root root  31 июл 29 14:51 uploads -> ../../var/spool/apache2/uploads
</syntaxhighlight>
 
Основные настройки Apache хранятся в каталоге {{path|/etc/httpd2/conf/}}.
 
<syntaxhighlight lang="bash">
# ls /etc/httpd2/conf/
addon.d          httpd2.conf  mods-available  ports-available  sites-enabled
extra-available  include      mods-enabled    ports-enabled    sites-start.d
extra-enabled    magic        mods-start.d    ports-start.d    ssl.crt
extra-start.d    mime.types  original        sites-available  ssl.key
</syntaxhighlight>
 
Основными компонентами конфигурации являются:
*модули (mods)
*дополнительная конфигурация (extra)
*порты (ports)
*сайты (sites).
 
Они же в свою очередь делятся на:
*включенные (enabled)
*доступные (available)
*стартовые (start.d).
 
Стартовые компоненты хранятся в {{path|/etc/httpd2/conf/{mods,sites,port,extra}-start.d/*.conf}}.
Включенные и стартовые компоненты являются символическими ссылками из available.
 
<syntaxhighlight lang="bash">
# ls /etc/httpd2/conf/mods-enabled/ -l
итого 0
lrwxrwxrwx 1 root root 36 сен 12  2023 access_compat.load -> ../mods-available/access_compat.load
lrwxrwxrwx 1 root root 28 сен 12  2023 alias.load -> ../mods-available/alias.load
lrwxrwxrwx 1 root root 33 сен 12  2023 authz_core.load -> ../mods-available/authz_core.load
lrwxrwxrwx 1 root root 33 сен 12  2023 authz_host.load -> ../mods-available/authz_host.load
lrwxrwxrwx 1 root root 32 сен 12  2023 autoindex.load -> ../mods-available/autoindex.load
lrwxrwxrwx 1 root root 26 сен 12  2023 dir.conf -> ../mods-available/dir.conf
lrwxrwxrwx 1 root root 26 сен 12  2023 dir.load -> ../mods-available/dir.load
lrwxrwxrwx 1 root root 30 сен 12  2023 include.load -> ../mods-available/include.load
lrwxrwxrwx 1 root root 33 сен 12  2023 log_config.conf -> ../mods-available/log_config.conf
lrwxrwxrwx 1 root root 33 сен 12  2023 log_config.load -> ../mods-available/log_config.load
lrwxrwxrwx 1 root root 28 сен 12  2023 logio.load -> ../mods-available/logio.load
lrwxrwxrwx 1 root root 27 сен 12  2023 mime.conf -> ../mods-available/mime.conf
lrwxrwxrwx 1 root root 27 сен 12  2023 mime.load -> ../mods-available/mime.load
lrwxrwxrwx 1 root root 34 сен 12  2023 negotiation.load -> ../mods-available/negotiation.load
lrwxrwxrwx 1 root root 26 сен 12  2023 ssl.load -> ../mods-available/ssl.load
lrwxrwxrwx 1 root root 30 сен 12  2023 systemd.load -> ../mods-available/systemd.load
lrwxrwxrwx 1 root root 30 сен 12  2023 userdir.conf -> ../mods-available/userdir.conf
lrwxrwxrwx 1 root root 30 сен 12  2023 userdir.load -> ../mods-available/userdir.load
</syntaxhighlight>
 
Чтобы сделать компонент активным (то есть добавить в enabled) или неактивным (то есть убрать из enabled) используется команда {{cmd|<nowiki>a2{en,dis}{mod,site,port,extra}</nowiki>}}.
 
Примеры команд:
# a2enmod cgi # включение модуля cgi
# a2dismod cgi # выключение модуля cgi
Также можно добавить компонент в автозапуск. Для этого надо добавить в файл {{path|/etc/httpd2/conf/{mods,sites,port,extra}-start.d/*.conf}} строку <code><Имя компонента>={yes,no} </code>.
 
Данный сервис включает конфигурации
*Include conf/mods-enabled/*.load
*Include conf/mods-enabled/*.conf
*Include conf/ports-enabled/*.conf
*Include conf/extra-enabled/*.conf
*Include conf/sites-enabled/*.conf
 
Подробные зависимости описаны в файле {{path|/etc/httpd2/conf/httpd2.conf}}. Можно создать свою конфигурацию в {{path|<nowiki>/etc/httpd2/conf/{mods,sites,port,extra}-start.d/*.conf</nowiki>}}, добавление в общую конфигурацию будет сделано автоматически.
 
===Логирование===
В основном, логи с ошибками, по умолчанию, записываются в файл {{path|/var/log/httpd2/error_log}}. Этот путь аналогичен {{path|/etc/httpd2/logs/error_log}}, так как {{path|/etc/httpd2/logs}} - это символическая ссылка, указывающая на {{path|/var/log/httpd2/}}.


====Уровень логов====
Данный параметр задается в файле {{path|/etc/httpd2/conf/httpd2.conf}}
Данный параметр задается в файле {{path|/etc/httpd2/conf/httpd2.conf}}
  LogLevel warn
  LogLevel warn
Уровень логирований по умолчанию warn.


Существуют следующие уровни логирования:
Существуют следующие уровни логирования:
Строка 180: Строка 63:
*Debug: информация для отладки, которая может помочь определить проблему.
*Debug: информация для отладки, которая может помочь определить проблему.
*trace[1-8]: Трассировка информации различных уровней детализации.
*trace[1-8]: Трассировка информации различных уровней детализации.
Ниже показан фрагмент файла.
<syntaxhighlight lang="bash">
# grep -v '#' /etc/httpd2/conf/httpd2.conf
ServerRoot "/etc/httpd2"
Include conf/mods-enabled/*.load
Include conf/mods-enabled/*.conf
Include conf/ports-enabled/*.conf
<IfModule unixd_module>
User apache2
Group apache2
</IfModule>
<Files ".ht*">
    Require all denied
</Files>
ErrorLog "/var/log/httpd2/error_log"
LogLevel warn
Include conf/extra-enabled/*.conf
Include conf/sites-enabled/*.conf
</syntaxhighlight>
==Опции==
===httpd2.conf===
====Пользователь и группа====
Данный параметр задается в файле {{path|/etc/httpd2/conf/httpd2.conf}}
User apache2
Group apache2
По соображениям безопасности, как только Apache запускается под root (напрямую или через сценарии запуска), он переключается на эти UID и GID. Пользователь по умолчанию — apache2 создается автоматически во время установки.


===ports-enabled===
===ports-enabled===
Строка 259: Строка 107:
  HostnameLookups On
  HostnameLookups On
При включении данного параметра в логах сервера вместо доменных имен будут записываться IP-адреса.
При включении данного параметра в логах сервера вместо доменных имен будут записываться IP-адреса.
==Виртуальный хостинг==
Виртуальный хостинг - это когда веб-запросы приходят на один IP - адрес, но под разными именами.
Например,  DNS-имена:
*host1.petr.ru
*site1.petr.ru
посылают на 10.4.4.41, а Apache сам решает в какой каталог одного сервера направлять эти запросы.
===Шаг 1: Регистрируем домены на один IP адрес===
====На AD/DNS-сервере====
Для внешнего сайта необходимо зарегистрировать домен на регистраторе, для внутреннего на [[Alterator-bind|Bind]].
Если домен на Samba, то командой:
# samba-tool dns add 10.4.4.173 petr.ru site1 A 10.4.4.41
Где:
*10.4.4.173 - адрес контроллера домена
*petr.ru - адрес домена
*site1 - имя хоста
*A - тип записи
*10.4.4.41 - адрес хоста
По аналогии:
# samba-tool dns add 10.4.4.173 petr.ru host1 A 10.4.4.41
Адреса {{cmd|host1.petr.ru}} и {{cmd|site1.petr.ru}} будут отображать страницу {{cmd|index}} сервера Apache или приветственную страницу ALT Linux, в зависимости от того, что у вас установлено.
{{Note|В приведенных примерах необходимо заменить host1.petr.ru на имя вашего реального домена. Только в этом случае файл будет указывать веб-серверу, где найти корневой каталог сайта и куда необходимо сохранять журналы ошибок и обращений к сайту.}}
====На Apache-сервере====
Потом прописываем на сервере адреса в hosts:
# mcedit /etc/hosts
10.4.4.41  host1.petr.ru
10.4.4.41  site1.petr.ru
Выполняем:
/etc/chroot.d/resolv.all
Тестируем с клиентского компьютера от имени простого пользователя:
$ ping host1.petr.ru
$ ping site1.petr.ru
Пинг должен попадать на IP-адрес сервера.
===Шаг 2: Разрешаем загружать виртуальные сайты===
В файле {{path|/etc/httpd2/conf/sites-start.d/000-default.conf}}:
ports_all=yes
default=yes
vhosts=no
Необходимо изменить последнюю строку:
vhosts=yes
Для применения изменений запустить:
# a2chkconfig
===Шаг 3: Прописываем виртуальные хосты===
{{Note|Обратите внимание! В директиве ServerName нужно указать полное доменное имя сайта}}
В файле {{path|/etc/httpd2/conf/sites-available/vhosts.conf}} дописываем
<syntaxhighlight lang="ini">
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/vhosts/host1
ServerName host1.petr.ru
ErrorLog /var/log/httpd2/host1-error_log
CustomLog /var/log/httpd2/host1-access_log common
</VirtualHost>
#
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/vhosts/site1
ServerName site1.petr.ru
ErrorLog /var/log/httpd2/site1-error_log
CustomLog /var/log/httpd2/site1-access_log common
</VirtualHost>
</syntaxhighlight>
*Тег {{cmd|<nowiki><VirtualHost *></nowiki>}} в конфигурационных файлах Apache используется для определения виртуального хоста, который будет слушать на всех доступных сетевых интерфейсах сервера. Если к знаку звездочки добавить {{cmd|<nowiki>:80</nowiki>}} - будет использоваться указанный порт.
*{{cmd|ServerAdmin webmaster@dummy-host.example.com}} Определяет электронную почту администратора сервера, которую можно использовать для обратной связи в случае проблем с сайтом.
*{{cmd|DocumentRoot "/var/www/vhosts/host1"}} Указывает корневой каталог, где размещаются основные файлы веб-сайта. Все запросы к этому виртуальному хосту будут искать файлы начиная с этого каталога.
===Шаг 4: Создаем домашние каталоги виртуальных хостов===
В {{path|/var/www/vhosts}} создаем два каталога host1 и site1, в которых размещаем разные тестовые веб-страницы.
# mkdir -p /var/www/vhosts/host1
# mkdir -p /var/www/vhosts/site1
Создаем файл:
# mcedit /var/www/vhosts/host1/index.html
<pre>
<!DOCTYPE html>
<html>
<head>
<title>Тестовая страница Host1</title>
</head>
<body>
<header>
<h1>Тестовая страница Host1</h1>
</header>
<h2>Привет HTML и JavaScript</h2>
<p>После этой строки будем писать контент и вставлять тестируемый код</p>
</body>
</html>
</pre>
# mcedit /var/www/vhosts/site1/index.html
<pre>
<!DOCTYPE html>
<html>
<head>
<title>Тестовая страница Site1</title>
</head>
<body>
<header>
<h1>Тестовая страница Site1</h1>
</header>
<h2>Привет HTML и JavaScript</h2>
<p>После этой строки будем писать контент и вставлять тестируемый код</p>
</body>
</html>
</pre>
Назначаем права:
# chmod 755 -R /var/www/vhosts/host1
# chmod 755 -R /var/www/vhosts/site1
{{Note|Обратите внимание, в данном примере должен быть адрес с http, без s!}}
Заходим со своего рабочего компьютера:
*http://host1.petr.ru
*http://site1.petr.ru
и в каждом видим свою тестовую страницу.


=Удаление=
=Удаление=

Версия от 14:52, 24 января 2025

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.
Примечание: Страница еще не завершена! Она может содержать неточности и ошибки.
Apache Http Server
Altenter-menu-apache.png
Появился в: 1995
Оф. сайт: httpd.apache.org
Репозиторий ALT Linux apache2
Лицензия: Apache License 2.0

Apache Httpd - свободный веб-сервер.

Установка

Apache2 можно установить как отдельно:

# apt-get install apache2

Так и в наборе LAMP:

# apt-get install lamp-server

В данном случае будут установлены:

  • Apache2
  • PHP
  • MariaDB

Настройка

Включаем и запускаем службы Apache и MySQL:

# systemctl enable --now httpd2
# systemctl enable --now mysqld

Файлы конфигурации Apache хранятся в /etc/httpd2/conf/.

Основной файл конфигурации /etc/httpd2/conf/httpd2.conf включает в себя различные другие файлы настроек и конфигураций.

Опции

httpd2.conf

Пользователь и группа

Данный параметр задается в файле /etc/httpd2/conf/httpd2.conf

User apache2
Group apache2

По соображениям безопасности, как только Apache запускается под root (напрямую или через сценарии запуска), он переключается на эти UID и GID. Пользователь по умолчанию — apache2 создается автоматически во время установки.

Уровень логов

Данный параметр задается в файле /etc/httpd2/conf/httpd2.conf

LogLevel warn

Существуют следующие уровни логирования:

  • emerg: критическая ситуация, аварийный сбой, система находится в нерабочем состоянии.
  • alert: сложная предаварийная ситуация, необходимо срочно принять меры.
  • crit: критические проблемы, которые необходимо решить.
  • error: произошла ошибка.
  • warn: предупреждение; в системе что-то произошло, но причин для беспокойства нет.
  • notice: система в норме, но стоит обратить внимание на её состояние.
  • info: важная информация, которую следует принять к сведению.
  • Debug: информация для отладки, которая может помочь определить проблему.
  • trace[1-8]: Трассировка информации различных уровней детализации.

ports-enabled

Порт

Данный параметр задается в файле /etc/httpd2/conf/ports-enabled/http.conf

Listen 80

Этим параметром задается порт, который будет слушать Apache. Для доступа в Интернет через роутер необходимо перенаправлять порт.

Если вы хотите настроить Apache для локальной работы (например для разработки), или возможно, вы хотите, чтобы он был доступен только с вашего компьютера, замените эту строку на

Listen 127.0.0.1:80.

sites-available

Администратор

Данный параметр задается в файле /etc/httpd2/conf/sites-available/default.conf

ServerAdmin you@example.com

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

Корневой каталог

Данный параметр задается в файле /etc/httpd2/conf/sites-available/default.conf

По-умолчанию сайт хранится в /var/www/html/. Но этот путь можно заменить на свой.

Откройте в текстовом редакторе от суперпользователя файл /etc/httpd2/conf/sites-available/default.conf.

Замените в строке DocumentRoot "/var/www/html/" путь на свой.

extra-available

Timeout

Данный параметр задается в файле /etc/httpd2/conf/extra-available/httpd-default.conf

Timeout 300

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

Передача нескольких файлов за соединение

Данные параметры задаются в файле /etc/httpd2/conf/extra-available/httpd-default.conf


KeepAlive On

Он позволяет передавать несколько файлов, за одно соединение, например, не только саму html страницу, но и картинки и css файлы.


MaxKeepAliveRequests 100

Данный параметр указывает максимальное количество запросов за одно соединение (обычно чем больше, тем лучше).


KeepAliveTimeout 5

В данном параметре указывается таймаут соединения. Обычно для загрузки страницы достаточно 5-10 секунд.

IP вместо доменных имен в логах

Данный параметр задается в файле /etc/httpd2/conf/extra-available/httpd-default.conf

HostnameLookups On

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

Удаление