неопределенные переменные в /etc/apache2/apache2.conf

Вопрос или проблема

Каждый раз, когда я запускаю sudo apache2 -S на своем сервере, появляется следующая ошибка:

[Вск. Mar 04 16:17:22.303217 2018] [core:warn] [pid 31405] AH00111: Переменная конфигурации ${APACHE_LOCK_DIR} не определена
[Вск. Mar 04 16:17:22.303414 2018] [core:warn] [pid 31405] AH00111: Переменная конфигурации ${APACHE_PID_FILE} не определена
[Вск. Mar 04 16:17:22.303503 2018] [core:warn] [pid 31405] AH00111: Переменная конфигурации ${APACHE_RUN_USER} не определена
[Вск. Mar 04 16:17:22.303577 2018] [core:warn] [pid 31405] AH00111: Переменная конфигурации ${APACHE_RUN_GROUP} не определена
[Вск. Mar 04 16:17:22.303655 2018] [core:warn] [pid 31405] AH00111: Переменная конфигурации ${APACHE_LOG_DIR} не определена
[Вск. Mar 04 16:17:22.306324 2018] [core:warn] [pid 31405:tid 140656836052864] AH00111: Переменная конфигурации ${APACHE_LOG_DIR} не определена
AH00526: Ошибка синтаксиса в строке 74 файла /etc/apache2/apache2.conf:
Недопустимая директория Mutex в аргументе file:${APACHE_LOCK_DIR}

Я пробовал несколько вещей, но он продолжает выдавать эти ошибки… Я сделал некоторые изменения в apache2.conf, но это не сработало, поэтому я отменил свои изменения, попробовал загрузить файл по умолчанию ennvar, но это не сработало.

Мой файл /etc/apache2/apache2.conf выглядит так:

            # Это основной файл конфигурации сервера Apache. Он содержит
            # директивы конфигурации, которые дают серверу его инструкции.
            # См. http://httpd.apache.org/docs/2.4/ для получения подробной информации о
            # директивах и /usr/share/doc/apache2/README.Debian о специфических для Debian
            # рекомендациях.
            #
            #
            # Краткое описание того, как работает конфигурация Apache 2 в Debian:
            # Конфигурация веб-сервера Apache 2 в Debian значительно отличается от
            # рекомендованного способа настройки веб-сервера. Это связано с тем, что
            # в стандартной установке Apache2 в Debian сделаны попытки сделать добавление и
            # удаление модулей, виртуальных хостов и дополнительных директив конфигурации
            # максимально гибкими, чтобы автоматизировать изменения и администрирование
            # сервера было как можно проще.

            # Он разделен на несколько файлов, образующих иерархию конфигурации,
            # описанную ниже, все находящиеся в каталоге /etc/apache2/:
            #
            #   /etc/apache2/
            #   |-- apache2.conf
            #   |   `--  ports.conf
            #   |-- mods-enabled
            #   |   |-- *.load
            #   |   `-- *.conf
            #   |-- conf-enabled
            #   |   `-- *.conf
            #   `-- sites-enabled
            #       `-- *.conf
            #
            #
            # * apache2.conf - это основной файл конфигурации (этот файл). Он объединяет все части,
            #   включая все оставшиеся файлы конфигурации при запуске
            #   веб-сервера.
            #
            # * ports.conf всегда включается из основного файла конфигурации. Он
            #   должен определять порты, на которых сервер будет слушать входящие соединения,
            #   которые можно настраивать в любое время.
            #
            # * Файлы конфигурации в директориях mods-enabled/, conf-enabled/ и sites-enabled/
            #   содержат определенные фрагменты конфигурации, которые управляют модулями,
            #   глобальными фрагментами конфигурации или конфигурациями виртуальных хостов
            #   соответственно.
            #
            #   Они активируются путем создания символьных ссылок на доступные файлы конфигурации из их
            #   соответствующих *-available/ пар. С ними следует работать, используя наши
            #   помощники a2enmod/a2dismod, a2ensite/a2dissite и a2enconf/a2disconf. См.
            #   их соответствующие страницы man для получения подробной информации.
            #
            # * Двоичный файл называется apache2. Из-за использования переменных окружения
            #   в стандартной конфигурации, apache2 необходимо запускать/останавливать с
            #   /etc/init.d/apache2 или apache2ctl. Прямой вызов /usr/bin/apache2 не будет
            #   работать со стандартной конфигурацией.

            # Глобальная конфигурация
            #

            #
            # ServerRoot: Верхняя часть дерева каталогов, под которой хранятся конфигурация сервера,
            # ошибки и журналы.
            #
            # ВНИМАНИЕ!  Если вы планируете разместить это на NFS (или другой сетевой)
            # смонтированной файловой системе, то пожалуйста, прочитайте документацию Mutex
            # (доступна по <URL:http://httpd.apache.org/docs/2.4/mod/core.html#mutex>);
            # вы избавите себя от множества неприятностей.
            #
            # Не добавляйте слэш в конце пути к каталогу.
            #
            ServerRoot "/etc/apache2"

            #
            # Файл блокировки сериализации принимает ДОЛЖЕН ХРАНИТЬСЯ НА ЛОКАЛЬНОМ ДИСКЕ.
            #
            Mutex file:${APACHE_LOCK_DIR} default

            #
            # PidFile: Файл, в который сервер должен записывать свой номер 
            # идентификации процесса, когда он запускается.
            # Это необходимо задать в /etc/apache2/envvars
            #
            PidFile ${APACHE_PID_FILE}

            #
            # Timeout: Количество секунд, прежде чем получение и отправка завершится.
            #
            Timeout 300

            #
            # KeepAlive: Разрешать ли постоянные соединения (больше чем
            # один запрос на соединение). Установите "Off", чтобы отключить.
            #
            KeepAlive On

            #
            # MaxKeepAliveRequests: Максимальное количество запросов, разрешенное
            # во время постоянного соединения. Установите в 0, чтобы разрешить неограниченное количество.
            # Рекомендуем оставить это число высоким для достижения максимальной производительности.
            #
            MaxKeepAliveRequests 100

            #
            # KeepAliveTimeout: Количество секунд, чтобы ждать следующий запрос от
            # того же клиента на том же соединении.
            #
            KeepAliveTimeout 5

            # Эти переменные необходимо установить в /etc/apache2/envvars
            User ${APACHE_RUN_USER}
            Group ${APACHE_RUN_GROUP}

            #
            # HostnameLookups: Записать имена клиентов или только их IP-адреса
            # например, www.apache.org (включить) или 204.62.129.132 (выключить).
            # По умолчанию выключено, так как в общей сложности было бы лучше, чтобы люди
            # осознанно включали эту функцию, поскольку ее активация означает, что
            # каждый клиентский запрос приведет как минимум к одному запросу на
            # сервер имен.
            #
            HostnameLookups Off

            # ErrorLog: Место расположения файла журнала ошибок.
            # Если вы не укажете директиву ErrorLog внутри контейнера <VirtualHost>,
            # сообщения об ошибках, относящиеся к этому виртуальному хосту, будут
            # записываться сюда.  Если вы *определите* файл журнала ошибок для контейнера <VirtualHost>,
            # ошибки этого хоста будут записываться туда и не сюда.
            #
            ErrorLog ${APACHE_LOG_DIR}/error.log

            #
            # LogLevel: Установите уровень тяжести сообщений, записываемых в error_log.
            # Доступные значения: trace8, ..., trace1, debug, info, notice, warn,
            # error, crit, alert, emerg.
            # Также возможно настроить уровень журнала для конкретных модулей, например
            # "LogLevel info ssl:warn"
            #
            LogLevel warn

            # Включить конфигурацию модулей:
            IncludeOptional mods-enabled/*.load
            IncludeOptional mods-enabled/*.conf

            # Включите список портов для прослушивания
            Include ports.conf

            # Устанавливает модель безопасности по умолчанию для сервера Apache2 HTTPD. Не
            # позволяет доступ к корневой файловой системе вне /usr/share и /var/www.
            # Первый используется веб-приложениями, упакованными в Debian,
            # последний может использоваться для локальных каталогов, обслуживаемых веб-сервером. Если
            # ваша система обслуживает контент из подпапки в /srv, вам необходимо разрешить
            # доступ здесь или в любом связанном виртуальном хосте.
            <Directory />
                Options FollowSymLinks
                AllowOverride None
                Require all denied
            </Directory>

            <Directory /usr/share>
                AllowOverride None
                Require all granted
            </Directory>

            <Directory /var/www/>
                Options Indexes FollowSymLinks
                AllowOverride None
                Require all granted
            </Directory>

            #<Directory /srv/>
            #   Options Indexes FollowSymLinks
            #   AllowOverride None
            #   Require all granted
                IncludeOptional sites-enabled/*.conf
            #</Directory>

            # AccessFileName: Имя файла, который следует искать в каждом каталоге
            # для дополнительных директив конфигурации.  См. также директиву AllowOverride
            #
            AccessFileName .htaccess

            #
            # Следующие строки предотвращают просмотр файлов .htaccess и .htpasswd
            # веб-клиентами.
            #
            <FilesMatch "^\.ht">
                Require all denied
            </FilesMatch>

            #
            # Следующие директивы определяют некоторые псевдонимы формата для использования с
            # директивой CustomLog.
            #
            # Эти обозначения отклоняются от определений общего журнала тем, что они используют %O
            # (фактические байты, отправленные вместе с заголовками) вместо %b (размер
            # запрашиваемого файла), потому что последнее делает невозможным обнаружение частичных
            # запросов.
            #
            # Обратите внимание, что использование %{X-Forwarded-For}i вместо %h не рекомендуется.
            # Используйте mod_remoteip вместо этого.
            #
            LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
            LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
            LogFormat "%h %l %u %t \"%r\" %>s %O" common
            LogFormat "%{Referer}i -> %U" referer
            LogFormat "%{User-agent}i" agent

            # Включение директорий игнорирует резервные файлы редакторов и dpkg,
            # см. README.Debian для подробностей.

            # Включить общие фрагменты заявлений
            IncludeOptional conf-enabled/*.conf

            # Включите конфигурации виртуальных хостов:
            IncludeOptional sites-enabled/*.conf

            # vim: syntax=apache ts=4 sw=4 sts=4 sr noet

В чем может быть проблема, чего мне не хватает?

Этот пост является продолжением этого поста: https://stackoverflow.com/questions/49085166/virtualhost-apache-on-ubuntu-server-not-working

РЕДАКТИРОВАНИЕ

Я добавил это в свой файл envvars:

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

Это исправило одну ошибку, но теперь я все еще получаю эти ошибки:

    [Пн Mar 05 17:52:45.978727 2018] [core:warn] [pid 9150] AH00111: Переменная конфигурации ${APACHE_PID_FILE} не определена
    [Пн Mar 05 17:52:45.978953 2018] [core:warn] [pid 9150] AH00111: Переменная конфигурации ${APACHE_RUN_USER} не определена
    [Пн Mar 05 17:52:45.979024 2018] [core:warn] [pid 9150] AH00111: Переменная конфигурации ${APACHE_RUN_GROUP} не определена
    [Пн Mar 05 17:52:45.979109 2018] [core:warn] [pid 9150] AH00111: Переменная конфигурации ${APACHE_LOG_DIR} не определена
    [Пн Mar 05 17:52:45.982417 2018] [core:warn] [pid 9150:tid 140490114955136] AH00111: Переменная конфигурации ${APACHE_LOG_DIR} не определена
    [Пн Mar 05 17:52:45.982709 2018] [core:warn] [pid 9150:tid 140490114955136] AH00111: Переменная конфигурации ${APACHE_LOG_DIR} не определена
    [Пн Mar 05 17:52:45.982771 2018] [core:warn] [pid 9150:tid 140490114955136] AH00111: Переменная конфигурации ${APACHE_LOG_DIR} не определена
    AH00543: apache2: неправильное имя пользователя ${APACHE_RUN_USER}

Вы также можете установить эти переменные в скрипте запуска как часть переменной окружения пользователей. То же самое с Systemd.

Apache жалуется, что переменные окружения, которые обычно определяются в /etc/apache2/envvars, не определены. Скрипт запуска для apache2 выполняет этот файл, если он присутствует, чтобы установить APACHE_LOCK_DIR и его сопутствующие переменные.

Если ваш файл в /etc/apache2 действительно называется envvar, а не envvars, то это ваша проблема.

Ответ или решение

Происхождение ошибки: Неопределенные переменные Apache

При запуске команды sudo apache2 -S в вашей среде вы сталкиваетесь с рядом предупреждений и ошибок, связанных с отсутствующими переменными конфигурации. Ошибки, которые вы видите, как:

[Sun Mar 04 16:17:22.303217 2018] [core:warn] [pid 31405] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined
[Sun Mar 04 16:17:22.303414 2018] [core:warn] [pid 31405] AH00111: Config variable ${APACHE_PID_FILE} is not defined
...
AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf:
Invalid Mutex directory in argument file:${APACHE_LOCK_DIR}

сигнализируют о том, что переменные конфигурации, такие как ${APACHE_LOCK_DIR}, ${APACHE_PID_FILE}, ${APACHE_RUN_USER} и ${APACHE_RUN_GROUP}, не определены. Это приводит к тому, что Apache не может корректно инициализировать свои параметры.

Предпосылки определения переменных

В стандартной конфигурации Apache на Debian/Ubuntu, важные переменные окружения для сервера определяются в файле /etc/apache2/envvars. Этот файл автоматически подключается при запуске сервера Apache и задает необходимые переменные для правильной работы. Убедитесь, что файл имеет правильное название: envvars (а не, например, envvar).

Рекомендации по решению проблемы

  1. Проверьте наличие файла envvars: Убедитесь, что файл существует и имеет правильное название (это должно быть envvars).

  2. Проверьте содержимое файла envvars: Ваш файл должен содержать следующие строки:

    export APACHE_RUN_USER=www-data
    export APACHE_RUN_GROUP=www-data
    export APACHE_PID_FILE=/var/run/apache2/apache2.pid
    export APACHE_LOCK_DIR=/var/lock/apache2
    export APACHE_LOG_DIR=/var/log/apache2

    Убедитесь, что пути к файлам корректны и существуют на вашем сервере.

  3. Проверьте права доступа: Убедитесь, что у Apache есть необходимые права на чтение этого файла.

  4. Перезапуск Apache: После внесенных изменений обязательно перезапустите сервис Apache для применения новых конфигураций:

    sudo systemctl restart apache2
  5. Проверка статуса сервиса: После перезапуска проверьте статус Apache, чтобы убедиться, что он работает корректно:

    sudo systemctl status apache2
  6. Дополнительные переменные окружения: Рассмотрите возможность добавления переменных окружения в системные конфигурации или непосредственно в скрипты запуска, если это необходимо для вашей архитектуры.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...