|
|
Строка 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
| |
|
| |
| и в каждом видим свою тестовую страницу.
| |
|
| |
|
| =Удаление= | | =Удаление= |