Назад | Перейти на главную страницу

Как диагностировать «AH00111: переменная конфигурации не определена», когда определена переменная окружения системы

Я настраиваю сервер Apache 2.4.7 на машине Ubuntu 14.04.5 LTS с намерением заменить другой экземпляр. По сути, новый экземпляр представляет собой исходную установку Ubuntu 14.4 с установленным только Apache. Я скопировал и вставил всю свою папку / etc / apache2 со старого компьютера на новый.

Я получаю эту ошибку:

AH00111: переменная конфигурации $ {PORTAL_SERVER} не определена

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

Только на новой машине sudo apachectl -V выдает ошибку AH00111.

Сервис запускается, но явно не так, как мне хотелось.

sudo apachectl graceful дает мне то же сообщение, что кажется нормальным. sudo service apache2 restart делает то же самое.

У меня вопрос: почему пользователь apache не «видит» переменную окружения?

РЕДАКТИРОВАТЬ: вот вся настраиваемая конфигурация (в одном файле conf, включенном в сайтах), где ... представляют собой множественные ProxyPass директивы, составляющие остальную часть файла. Стандартные файлы конфигурации Apache не редактировались.

<VirtualHost *:443>
        # This virtual host will answer requests on port 443 (https) for the domain defined hereafter
        # NOTE: The PORTAL_SERVER environment variable is defined in /etc/environment.
        ServerName ${PORTAL_SERVER}

        # Define error page 503 (site under maintenance) : reached when a server doesn't answer ajp requests
        DocumentRoot /var/www
        Alias "/errors" "/var/www/errors"
        <Directory  "/var/www/errors/">
                Options FollowSymLinks MultiViews
                order deny,allow
                allow from all
        </Directory>
        ErrorDocument 503 /errors/error-503.html

        # Redirect https://${PORTAL_SERVER}/ on https://${PORTAL_SERVER}/portal/
        Redirect /index.html https://${PORTAL_SERVER}/portal/

        # Activate SSL and define certificat
        SSLEngine on
        SSLProtocol all
        SSLCertificateFile    /etc/ssl/certs/ssl_certificate.crt
        SSLCertificateKeyFile /etc/ssl/private/ssl_server.key
        SSLCertificateChainFile /etc/ssl/certs/IntermediateCA.crt

        # Configure mod_proxy
        ProxyRequests Off
        ProxyPreserveHost Off
        # Default timeout before ajp requests are considered as timed out
        ProxyTimeout 10

        ...
        ...

</VirtualHost>

Вам нужно указать apache, какие системные переменные среды импортировать через PassEnv, видеть https://httpd.apache.org/docs/2.4/mod/mod_env.html#passenv для документации.

По сути, поместите это перед использованием переменной:

PassEnv PORTAL_SERVER

Остерегайтесь этого sudo фильтрует, какие переменные среды передаются выполняемой команде, что может объяснить, почему эта переменная не отображается в apache.