Apache не удалось запустить LSB: веб-сервер Apache2

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

Когда я запускаю apache, он выдает мне следующую ошибку –

  Работа для apache2.service не удалась, потому что управляющий процесс завершился с кодом ошибки. См. "systemctl status apache2.service" и "journalctl -xe" для получения дополнительных сведений.

Я выполнил следующую команду –

 systemctl status apache2.service

Я получил следующую ошибку

  apache2.service - LSB: Веб-сервер Apache2
  Загружено: загружено (/etc/init.d/apache2; плохо; предустановка поставщика: включена)
  Дроп-Ин: /lib/systemd/system/apache2.service.d
       └─apache2-systemd.conf
  Активно: неудачно (Результат: код выхода) с среды 2017-05-31 17:01:40 IST; 1м 34с назад
  Документы: man:systemd-sysv-generator(8)
  Процесс: 11884 ExecStop=/etc/init.d/apache2 stop (код=завершен, статус=0/УСПЕХ)
  Процесс: 3171 ExecReload=/etc/init.d/apache2 reload (код=завершен, статус=0/УСПЕХ)
  Процесс: 12696 ExecStart=/etc/init.d/apache2 start (код=завершен, статус=1/НЕУДАЧА)

 31 мая 17:01:40 itadmin systemd[1]: Запуск LSB: Веб-сервер Apache2...
 31 мая 17:01:40 itadmin apache2[12696]:  * Запуск веб-сервера Apache httpd apache2
 31 мая 17:01:40 itadmin apache2[12696]: mktemp: не удалось создать файл через шаблон ‘/tmp/tmp.XXXXXXXXXX’: Файловая система только для чтения
 31 мая 17:01:40 itadmin apache2[12696]: /etc/init.d/apache2: 72: /etc/init.d/apache2: невозможно создать : Директория не существует
 31 мая 17:01:40 itadmin apache2[12696]:  *
 31 мая 17:01:40 itadmin apache2[12696]:  * Проверка конфигурации apache2 не удалась.
 31 мая 17:01:40 itadmin systemd[1]: apache2.service: Управляющий процесс завершился, код=выход статус=1
 31 мая 17:01:40 itadmin systemd[1]: Не удалось запустить LSB: Веб-сервер Apache2.
 31 мая 17:01:40 itadmin systemd[1]: apache2.service: Юнит вошел в состояние неудачи.
 31 мая 17:01:40 itadmin systemd[1]: apache2.service: Неудалось с результатом 'код выхода'.

Я ничего не понимаю. Пожалуйста, кто-нибудь, помогите мне?

Я также столкнулся с такой же ошибкой (работая с Saltstack) и смог ее решить. Есть четыре способа.

  1. По каким-то причинам ваш /etc/apache2/envvars отсутствует:
    Чтобы решить эту проблему, вы можете создать файл вручную и добавить в него содержимое переменных окружения по умолчанию указанные ниже

    sudo vim /etc/apache2/envvars
    
    # envvars - переменные окружения по умолчанию для apache2ctl
    
    # это будет неправильно после изменения uid
    unset HOME
    
    # для поддержки нескольких экземпляров apache2
    if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; then
        SUFFIX="-${APACHE_CONFDIR##/etc/apache2-}"
    else
       SUFFIX=
    fi
    
    # Поскольку нет адекватного способа получить разобранную конфигурацию apache2 в скриптах, некоторые
    # настройки определяются через переменные окружения и затем используются в apache2ctl,
    # /etc/init.d/apache2, /etc/logrotate.d/apache2 и т.д.
    export APACHE_RUN_USER=www-data
    export APACHE_RUN_GROUP=www-data
    # временное местоположение файла состояния. Это может быть изменено на /run в Wheezy+1
    export APACHE_PID_FILE=/var/run/apache2/apache2$SUFFIX.pid
    export APACHE_RUN_DIR=/var/run/apache2$SUFFIX
    export APACHE_LOCK_DIR=/var/lock/apache2$SUFFIX
    # Только /var/log/apache2 обрабатывается /etc/logrotate.d/apache2.
    export APACHE_LOG_DIR=/var/log/apache2$SUFFIX
    
    ## Локаль, используемая некоторыми модулями, такими как mod_dav
    export LANG=C
    ## Раскомментируйте следующую строку, чтобы использовать системную локаль по умолчанию вместо:
    #. /etc/default/locale
    
    export LANG
    
    ## Команда для получения статуса для 'apache2ctl status'.
    ## Некоторые пакеты, предоставляющие 'www-browser', нуждаются в '--dump' вместо '-dump'.
    #export APACHE_LYNX='www-browser -dump'
    
    ## Если вам нужен более высокий лимит дескрипторов файлов, раскомментируйте и отрегулируйте
    ## следующую строку (по умолчанию 8192):
    #APACHE_ULIMIT_MAX_FILES='ulimit -n 65536'
    
    ## Если вы хотите передать аргументы веб-серверу, добавьте их ниже
    ## в переменную окружения APACHE_ARGUMENTS.
    #export APACHE_ARGUMENTS=''
    
    ## Включить режим отладки для скриптов обслуживания.
    ## Это будет производить подробный вывод при установке пакетов модулей веб-сервера и
    ## установках веб-приложений, которые взаимодействуют с Apache
    #export APACHE2_MAINTSCRIPT_DEBUG=1
    

    Затем перезапустите службу apache как обычно.

    sudo service apache2 restart
    
  2. Если ваш файл envvars в порядке, тогда это может быть случай отсутствующих пакетов. Переустановите отсутствующие пакеты, используя нижеследующую команду, затем перезапустите службу Apache.

    sudo apt-get -o DPkg::Options::="--force-confmiss" --reinstall install apache2
    sudo service apache2 restart 
    
  3. Кроме того, вы можете удалить Apache и все его конфигурационные файлы, а затем переустановить его.

    sudo apt-get purge apache2
    sudo apt-get install apache2
    
  4. И, наконец, если все вышеупомянутые варианты не сработают, вы можете попробовать установить пакет libapache2-mod-php7.0 или отключить модуль PHP7, выполнив

    sudo a2dismod php7.0
    

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

К сожалению, запуск службы Apache2 завершился с ошибкой, о чем свидетельствует ошибка «Job for apache2.service failed because the control process exited with error code». Это может быть вызвано несколькими причинами. Давайте рассмотрим шаги, которые помогут вам устранить данную проблему.

1. Анализ ошибки

Сначала нужно более подробно проанализировать вывод команды systemctl status apache2.service, чтобы понять, почему Apache не запускается. В вашем случае мы видим следующие ошибки:

  • mktemp: failed to create file via template ‘/tmp/tmp.XXXXXXXXXX’: Read-only file system — это указывает на проблемы с файловой системой, где временная директория /tmp недоступна для записи.
  • /etc/init.d/apache2: 72: /etc/init.d/apache2: cannot create : Directory nonexistent — это может означать, что директория, в которую Apache пытается записать свои временные или контрольные файлы, отсутствует.
  • Сообщение о том, что конфигурация Apache не прошла проверку (configtest) также указывает на существующие проблемы.

2. Исправление проблем с файловой системой

Поскольку ошибка указывает на то, что файловая система является "только для чтения", вам следует:

  • Перезагрузить систему в режиме восстановления, сразу после чего выполните команду fsck для проверки и исправления файловой системы.
  • Убедитесь, что разделе, где располагается /tmp, не установлен атрибут "только для чтения". Это можно сделать с помощью команды:

    mount | grep /tmp

Если вы видите “ro” (read-only), попробуйте размонтировать и смонтировать раздел заново или исправить файловую систему.

3. Проверка файла envvars

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

sudo vim /etc/apache2/envvars

Добавьте в него следующее:

# envvars - default environment variables for apache2ctl

unset HOME
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2/apache2.pid
export APACHE_RUN_DIR=/var/run/apache2
export APACHE_LOCK_DIR=/var/lock/apache2
export APACHE_LOG_DIR=/var/log/apache2
export LANG=C

4. Проверка пакетов Apache

Если указанные выше шаги не помогли, возможно, некоторые пакеты Apache отсутствуют или повреждены. Исправить это можно, переустановив Apache:

sudo apt-get -o DPkg::Options::="--force-confmiss" --reinstall install apache2

После этого перезапустите Apache:

sudo service apache2 restart

5. Полная переустановка Apache

В самом худшем случае, если предыдущие методы не дали результата, вы можете удалить Apache и все его конфигурации и установить его заново:

sudo apt-get purge apache2
sudo apt-get install apache2

6. Проблемы с модулями

Иногда установка или отключение определенных модулей, таких как libapache2-mod-php7.0, также может помочь:

sudo a2dismod php7.0

Или убедитесь, что все необходимые модули установлены.

Заключение

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

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

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