I am using Google Cloud Platform to test out ModSecurity and I am using a tutorial to launch it. However, I need to restart Apache every once in a while. I’m using Ubuntu 18.04. I write sudo systemctl restart apache2
, but an error comes back and it says Failed to restart apache2.service: Unit apache2.service not found
. What should I do?
asked Jun 17, 2020 at 14:10
David BabablolaDavid Babablola
2832 gold badges3 silver badges11 bronze badges
Did you install apache2 first ?
sudo apt install apache2
answered Jun 17, 2020 at 14:12
For those who run into the same issue using Debian
I did have apache2 installed and running as was confirmed by apache2.service | loaded active running
.
I still tried to install it.
I did also get the same error Failed to restart apache2.service: Unit apache2.service not found
How I got apache2 to restart
Using: Debian (9.13)
sudo service apache2 restart
or by typing
sudo apachectl stop
sudo apachectl start
answered Dec 30, 2020 at 18:20
1
Type sudo apt install apache2
To start the apache service type
sudo systemctl start apache2
answered Apr 19, 2022 at 8:27
if you tried to install it and still got the same problem , you can update it , try :
apt-get update
answered Jan 2, 2021 at 13:12
There are two errors:
1. For some reason your /etc/apache2/envvars
is missing:
-
from
journalctl -xe
:Jan 11 02:30:46 aleksandr-VirtualBox apache2[8177]: /etc/init.d/apache2: 1: /etc/apache2/envvars: envvars: not found Jan 11 02:30:46 aleksandr-VirtualBox apache2[8177]: /etc/init.d/apache2: 49: /etc/apache2/envvars: envvars: not found Jan 11 02:30:46 aleksandr-VirtualBox apache2[8177]: /etc/init.d/apache2: 1: /etc/apache2/envvars: envvars: not found Jan 11 02:30:46 aleksandr-VirtualBox apache2[8177]: /etc/init.d/apache2: 49: /etc/apache2/envvars: envvars: not found ... Jan 11 02:30:46 aleksandr-VirtualBox apache2[8177]: /usr/sbin/apache2ctl: 1: /etc/apache2/envvars: envvars: not found Jan 11 02:30:46 aleksandr-VirtualBox apache2[8177]: /usr/sbin/apache2ctl: 49: /etc/apache2/envvars: envvars: not found
-
from
systemctl status apache2.service
:Jan 11 02:30:46 aleksandr-VirtualBox apache2[8177]: /usr/sbin/apache2ctl: 1: /etc/apache2/envvars: envvars: not found Jan 11 02:30:46 aleksandr-VirtualBox apache2[8177]: /usr/sbin/apache2ctl: 49: /etc/apache2/envvars: envvars: not found
In my system this file has next permissions:
$ ls -l /etc/apache2/envvars
-rw-r--r-- 1 root root 1782 мар 19 2016 envvars
And its content ($ cat /etc/apache2/envvars
) is:
# envvars - default environment variables for apache2ctl
# this won't be correct after changing uid
unset HOME
# for supporting multiple apache2 instances
if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; then
SUFFIX="-${APACHE_CONFDIR##/etc/apache2-}"
else
SUFFIX=
fi
# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
# temporary state file location. This might be changed to /run in 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
# Only /var/log/apache2 is handled by /etc/logrotate.d/apache2.
export APACHE_LOG_DIR=/var/log/apache2$SUFFIX
## The locale used by some modules like mod_dav
export LANG=C
## Uncomment the following line to use the system default locale instead:
#. /etc/default/locale
export LANG
## The command to get the status for 'apache2ctl status'.
## Some packages providing 'www-browser' need '--dump' instead of '-dump'.
#export APACHE_LYNX='www-browser -dump'
## If you need a higher file descriptor limit, uncomment and adjust the
## following line (default is 8192):
#APACHE_ULIMIT_MAX_FILES='ulimit -n 65536'
## If you would like to pass arguments to the web server, add them below
## to the APACHE_ARGUMENTS environment.
#export APACHE_ARGUMENTS=''
## Enable the debug mode for maintainer scripts.
## This will produce a verbose output on package installations of web server mod ules and web application
## installations which interact with Apache
#export APACHE2_MAINTSCRIPT_DEBUG=1
You can create it manually: sudo nano /etc/apache2/envvars
, paste above content inside, save ctrl+o and exit ctrl+x.
2. In your system, the folder /etc/apache2/logs
also missing:
-
from
journalctl -xe
:Jan 11 02:30:46 aleksandr-VirtualBox apache2[8177]: (2)No such file or directory: AH02291: Cannot access directory '/etc/apache2/logs/' for main error log
-
from
systemctl status apache2.service
:Jan 11 02:30:46 aleksandr-VirtualBox apache2[8177]: (2)No such file or directory: AH02291: Cannot access directory '/etc/apache2/logs/' for main error log
This is not the default log folder, it is defined in your custom configuration, and must be created:
$ sudo mkdir /etc/apache2/logs
Откуда там на второй строчке это написано? И пробел лишний уберите.
я не совсем понял о чем вы
сейчас у меня стартовая страница zabbix выглядит как белый экран с каким то кодом:
<?php
/*
** Zabbix
** Copyright (C) 2001-2020 Zabbix SIA
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/require_once dirname(__FILE__).'/include/classes/user/CWebUser.php';
CWebUser::disableSessionCookie();
require_once
dirname(__FILE__).'/include/config.inc.php';
require_once dirname(__FILE__).'/include/forms.inc.php';$page['title'] = _('ZABBIX');
$page['file'] = 'index.php';// VAR TYPE OPTIONAL FLAGS VALIDATION EXCEPTION
$fields = [
'name' => [T_ZBX_STR, O_NO, null, null, 'isset({enter}) && {enter} != "'.ZBX_GUEST_USER.'"', _('Username')],
'password' => [T_ZBX_STR, O_OPT, null, null, 'isset({enter}) && {enter} != "'.ZBX_GUEST_USER.'"'],
'sessionid' => [T_ZBX_STR, O_OPT, null, null, null],
'reconnect' => [T_ZBX_INT, O_OPT, P_SYS, null, null],
'enter' => [T_ZBX_STR, O_OPT, P_SYS, null, null],
'autologin' => [T_ZBX_INT, O_OPT, null, null, null],
'request' => [T_ZBX_STR, O_OPT, null, null, null],
'form' => [T_ZBX_STR, O_OPT, null, null, null]
];
check_fields($fields);$config = select_config();
if (
hasRequest('reconnect') && CWebUser::isLoggedIn()) {
if ($config['saml_auth_enabled'] == ZBX_AUTH_SAML_ENABLED && $config['saml_slo_url'] !== ''
&& CSession::keyExists('saml_data')) {
redirect('index_sso.php?slo');
} CWebUser::logout();
redirect('index.php');
}$autologin = hasRequest('enter') ? getRequest('autologin', 0) : getRequest('autologin', 1);
$request = getRequest('request', '');
if (
$request) {
$test_request = [];
preg_match('/^/?(?<filename>[a-z0-9_.]+.php)(?<request>?.*)?$/i', $request, $test_request); $request = (array_key_exists('filename', $test_request) && file_exists('./'.$test_request['filename']))
? $test_request['filename'].(array_key_exists('request', $test_request) ? $test_request['request'] : '')
: '';
}
if (!
hasRequest('form') && $config['http_auth_enabled'] == ZBX_AUTH_HTTP_ENABLED
&& $config['http_login_form'] == ZBX_AUTH_FORM_HTTP && !hasRequest('enter')) {
redirect('index_http.php'); exit;
}// login via form
if (hasRequest('enter') && CWebUser::login(getRequest('name', ZBX_GUEST_USER), getRequest('password', ''))) {
if (CWebUser::$data['autologin'] != $autologin) {
API::User()->update([
'userid' => CWebUser::$data['userid'],
'autologin' => $autologin
]);
} $redirect = array_filter([CWebUser::isGuest() ? '' : $request, CWebUser::$data['url'], ZBX_DEFAULT_URL]);
redirect(reset($redirect)); exit;
}
if (
CWebUser::isLoggedIn() && !CWebUser::isGuest()) {
redirect(CWebUser::$data['url'] ? CWebUser::$data['url'] : ZBX_DEFAULT_URL);
}$messages = clear_messages();
echo (new
CView('general.login', [
'http_login_url' => ($config['http_auth_enabled'] == ZBX_AUTH_HTTP_ENABLED)
? (new CUrl('index_http.php'))->setArgument('request', getRequest('request'))
: '',
'saml_login_url' => ($config['saml_auth_enabled'] == ZBX_AUTH_SAML_ENABLED)
? (new CUrl('index_sso.php'))->setArgument('request', getRequest('request'))
: '',
'guest_login_url' => CWebUser::isGuestAllowed() ? (new CUrl())->setArgument('enter', ZBX_GUEST_USER) : '',
'autologin' => $autologin == 1,
'error' => (hasRequest('enter') && $messages) ? array_pop($messages) : null
]))->getOutput();
че происходит, я не понимаю, сам по себе живет как-будто
I recently installed Apache2 via sudo apt install apache2
but it doesn’t seem to be working right. I get this error when I try to restart the service using sudo /etc/init.d/apache2 restart
. I’m using Kubuntu 18.04.1 64-bit.
-- Subject: Unit apache2.service has begun start-up
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- Unit apache2.service has begun starting up.
Aug 29 13:31:47 alpaca-desktop apachectl[10871]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' di
Aug 29 13:31:47 alpaca-desktop apachectl[10871]: (2)No such file or directory: AH02291: Cannot access directory '/var/log/apache2/' for main error log
Aug 29 13:31:47 alpaca-desktop apachectl[10871]: (2)No such file or directory: AH02291: Cannot access directory '/var/log/apache2/' for error log of vhost defined at /etc/apache2
Aug 29 13:31:47 alpaca-desktop apachectl[10871]: AH00014: Configuration check failed
Aug 29 13:31:47 alpaca-desktop apachectl[10871]: Action 'start' failed.
Aug 29 13:31:47 alpaca-desktop apachectl[10871]: The Apache error log may have more information.
Aug 29 13:31:47 alpaca-desktop systemd[1]: apache2.service: Control process exited, code=exited status=1
Aug 29 13:31:47 alpaca-desktop systemd[1]: apache2.service: Failed with result 'exit-code'.
Aug 29 13:31:47 alpaca-desktop systemd[1]: Failed to start The Apache HTTP Server.
-- Subject: Unit apache2.service has failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- Unit apache2.service has failed.
--
-- The result is RESULT.
asked Aug 29, 2018 at 17:35
This is the reason:
(2)No such file or directory: AH02291: Cannot access directory '/var/log/apache2/' for main error log
If that directory doesn’t exist, then how can Apache start? And if it does, then the user designated for Apache can’t access it, which means the file permissions are incorrect.
answered Aug 29, 2018 at 17:38
ryekayoryekayo
4,6399 gold badges40 silver badges66 bronze badges
7
Многие новички, которые пытаются настроить свой домашний веб-сервер на основе Apache часто сталкиваются с ошибкой, что Apache не запускается. Благо сейчас в Ubuntu веб-сервер будет правильно работать по умолчанию и запустится, если вы не будете менять настройки, но раньше и в других дистрибутивах приходилось настраивать различные параметры и возникали ошибки.
В этой небольшой статье мы рассмотрим почему Apache не работает, что может стать причиной этой проблемы и как ее решить. Инструкция подойдет не только для Ubuntu, но и для других Linux дистрибутивов.
Вы можете столкнуться с такой проблемой по разным причинам, давайте сначала рассмотрим основные из них, чтобы вы знали что дальше делать:
- Ошибка в конфигурационном файле — вы меняли конфигурацию и настроили что-то неправильно из-за этого программа не может запустится;
- Права доступа — у программы нет прав доступа к каким-то важным для нее файлам, например, файлам логов, модулей или конфигурационным файлам;
- Не запускается служба apache при загрузке, но при запуске из консоли все работает — проблема в том, что на момент запуска загружены еще не все необходимые службы;
- Неверно указанно доменное имя — такая ошибка довольно часто встречается на локальных компьютерах;
А теперь рассмотрим более подробно почему так происходит и как решить проблему.
Как решить проблему с Apache?
Самое первое что вам нужно сделать в любом случае, если что-то не работает — это смотреть логи и информацию об ошибках. Только там вы сможете точно узнать что произошло. Самый простой способ это сделать, воспользоваться подсказкой systemd, которую она выдает при ошибке запуска:
See "systemctl status apache2.service" and "journalctl -xe" for details
То есть нам нужно выполнить systemctl status apache2.service или journalctl -xe чтобы получить больше сведений. Выполните сначала первую команду:
systemctl status apache2.service
Мы сразу же видим причину проблемы — ошибка в конфигурационном файле, в директиве Listen, а теперь пробуем другую команду:
journalctl -xe
Только ее нужно выполнять сразу же, как была выполнена попытка перезапуска apache, потому что скоро буфер лога будет затерт и вы там ничего не увидите. Но здесь сообщается то же сообщение об ошибке в конфигурационном файле, даже видно строку — 54. Еще можно посмотреть error.log, но туда сообщения пишутся не всегда:
cat /var/log/apache2/error.log
Дальше вы можете проверить конфигурационный файл на корректность с помощью такой команды:
apache2ctl -t
Тут будут показаны даже предупреждения, которые не влияют на работу сервиса. Все серьезные ошибки нужно исправить если таковые имеются, возможно именно они препятствуют запуску.
Следующая важная проблема — это права доступа. Если Apache запускается от имени пользователя www-data, то у этого пользователя должен быть доступ на чтение к папке где лежат документы веб-сайта, а также ко всем папкам выше нее, также должен быть доступ на чтение и запись для логов и конфигурационных файлов. Проверить права можно с помощью команды namei, это аналог ls, который отображает полное дерево прав:
namei -l /var/www/public_html/
Таким же образом проверяем папку с логами:
namei -l /var/log/apache2/
Как видите, у меня папка /var/www/public_html принадлежит пользователю root, но на папку public_html установлены права чтения и записи для всех пользователей. Поэтому проблем нет, а на папку с логами в качестве группы установлена adm, в эту группу входит пользователь www-data, так что тут тоже проблем нет. Если у вас что-то отличается и вы видите что прав недостаточно, то либо измените владельца папки с файлами веб-сайтов на www-data, либо дайте больше разрешений:
chown -R www-data /var/www/public_html/
Также, если в вашей системе включен SELinux, то вы можете его отключить на время, чтобы понять не в нем ли проблема:
setenforce 0
Другой момент, который может вызвать ошибку, это если на порту, который вы хотите использовать для веб-сервера уже запущен какой-то процесс, например, nginx или lighttpd, в таком случае, его нужно остановить:
sudo systemctl stop nginx
sudo systemctl stop lighttpd
Или вы можете попытаться изменить порт на другой, для этого откройте конфигурационный файл веб-сервера и найдите там строку Listen:
Listen 80
Если такой строки еще нет, то вы можете ее создать. Далее просто измените номер порта с 80 на любой удобный, например, 8080
Listen 8080
Дальше про ошибку старта при загрузке. Такая ошибка случалась в версиях ниже 2.2.4, если вы используете эту или более новую версию, то эта проблема вам не страшна. Она была вызвана тем, что Apache с SSL не хотел запускаться без папки /var/run/apache2, которой не было на момент загрузки. Самый простой способ решить проблему — отключить модуль ssl:
a2dismod ssl
Второй способ более сложный — добавьте в конфигурационный файл /etc/init.d/apache2 такую строку:
[ -d /var/run/apache2 ] || mkdir /var/run/apache2
Последняя проблема, о которой мы говорили — это когда неверно указанно имя сервера, на котором запускается Apache. Этой ошибке тоже были подвержены только ранние версии программы. Тогда при попытке запуска программа выдавала сообщение:
Failed to resolve server name for localhost
И дальше не запускалась. Чтобы решить эту проблему нужно было либо создавать виртуальные хосты, либо прописать в основном конфигурационном файле директиву ServerName, в которой будет указанно имя этого компьютера:
ServerName sergiy-pc
А также ассоциировать это имя с localhost в файле hosts:
sudo vi /etc/hosts
sergiy-pc localhost
Дальше было достаточно перезапустить Apache и все начинало работать.
Выводы
В этой статье мы рассмотрели несколько причин почему не запускается Apache и примеров их решения. Причин может быть множество, но мы разобрали только самые главные, которые встречаются наиболее часто. Надеюсь, эта информация была для вас полезной, если у вас остались вопросы, спрашивайте в комментариях! А для тех кого интересует еще один способ решения проблемы xampp apache не запускается для Windows есть видео:
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
8 сентября, 2020 11:28 дп
4 056 views
| Комментариев нет
Centos, Debian, LAMP Stack, Ubuntu
Эта серия мануалов поможет вам предотвратить или устранить самые распространенные ошибки, которые возникают при работе с веб-сервером Apache.
Каждый последующий мануал в этой серии включает описание распространенных ошибок Apache, связанных с конфигурацией, сетью, файловой системой или привилегиями. Мы начнем с обзора команд и логов, которые вы можете использовать для устранения неполадок Apache. В последующих руководствах мы подробно рассмотрим конкретные ошибки.
Есть три основные команды и несколько общих логов, которые вы можете использовать, чтобы начать устранение ошибок Apache. По сути здесь вы найдете стандартную стратегию поиска ошибок и их причин: обычно эти команды используются в указанном здесь порядке, после чего можно изучить логи на предмет конкретных диагностических данных.
Команды, которые необходимы для устранения неполадок Apache в большинстве дистрибутивов Linux:
- systemctl – используется для управления сервисами Linux и взаимодействия с ними через менеджер сервисов systemd.
- journalctl – используется для запроса и просмотра логов, созданных systemd.
- apachectl – при устранении неполадок эта команда используется для проверки конфигурации Apache.
Далее мы подробно опишем эти команды, способы их использования и расположение логов Apache, в которых можно найти дополнительную информацию об ошибках.
Примечание: В системах Debian и Ubuntu сервис и процесс Apache называется apache2, а в CentOS, Fedora и других системах RedHat – httpd. Имя сервиса и процесса – это единственное отличие команд запуска, остановки и проверки состояния Apache в разных системах. Логи journalctl также должны работать одинаково в любой системе Linux, которая использует systemd для управления Apache. При работе с этим мануалом вы должны использовать правильное имя сервиса в зависимости от вашего дистрибутива Linux.
Команды systemctl для Apache
Чтобы устранить распространенные ошибки Apache с помощью менеджера сервисов systemd, первым делом вам необходимо проверить состояние процессов Apache в вашей системе. Следующие команды systemctl помогут вам узнать больше о состоянии процессов Apache.
В Ubuntu и Debian используйте:
sudo systemctl status apache2.service -l --no-pager
Флаг -l отображает полный вывод без сокращения. Флаг –no-pager направляет вывод непосредственно на ваш терминал. Вы должны получить такой результат:
apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Mon 2020-07-13 14:43:35 UTC; 1 day 4h ago
Process: 929 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 1346 (apache2)
Tasks: 55 (limit: 4702)
CGroup: /system.slice/apache2.service
├─1346 /usr/sbin/apache2 -k start
. . .
Чтобы изучить процесс веб-сервера в CentOS и Fedora, используйте:
sudo systemctl status httpd.service -l --no-pager
Вы получите такой результат:
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2020-07-14 19:46:52 UTC; 3s ago
Docs: man:httpd.service(8)
Main PID: 21217 (httpd)
Status: "Started, listening on: port 80"
Tasks: 213 (limit: 2881)
Memory: 16.6M
CGroup: /system.slice/httpd.service
├─21217 /usr/sbin/httpd -DFOREGROUND
. . .
Jul 14 19:46:52 localhost.localdomain httpd[21217]: Server configured, listening on: port 80
Независимо от дистрибутива вы должны обратить внимание на строку Active в выводе. Если ваш сервер Apache не отображается как active (running), хотя он должен работать, возможно, произошла ошибка и прервала его работу. Как правило, при возникновении ошибок в выводе будет строка failed:
Active: failed (Result: exit-code) since Tue 2020-07-14 20:01:29 UTC; 1s ago
Если проблема заключается в процессе или конфигурации Apache, вы можете устранить ее с помощью команды journalctl.
Команды journalctl для Apache
Чтобы проверить логи systemd для Apache, вы можете использовать команду journalctl. Логи systemd для Apache обычно содержат данные о проблемах с запуском или управлением процессом Apache.
Эти логи отделены от логов запросов и ошибок Apache. Команда journalctl отображает логи systemd, которые описывают сам сервис Apache (от его запуска до завершения работы, включая все ошибки процесса, которые могут возникнуть на этом пути).
В системах Ubuntu и Debian для проверки логов используйте следующую команду:
sudo journalctl -u apache2.service --since today --no-pager
Флаг –since today ограничивает вывод команды записями лога, начиная с 00:00:00 текущего дня. Использование этой опции поможет ограничить объем записей лога, которые вам необходимо изучить для выявления ошибок. Вы должны получить следующий результат:
Jul 14 20:12:14 ubuntu2004 systemd[1]: Starting The Apache HTTP Server...
Jul 14 20:12:14 ubuntu2004 systemd[1]: Started The Apache HTTP Server.
Если вы используете систему на базе CentOS или Fedora, введите эту версию команды:
sudo journalctl -u httpd.service --since today --no-pager
Вы получите такой результат:
Jul 14 20:13:09 centos8 systemd[1]: Starting The Apache HTTP Server...
. . .
Jul 14 20:13:10 centos8 httpd[21591]: Server configured, listening on: port 80
В случае ошибки в выводе будет строка, приведенная ниже (имя хоста будет отличаться в зависимости от дистрибутива Linux):
Jul 14 20:13:37 yourhostname systemd[1]: Failed to start The Apache HTTP Server.
Если в ваших логах Apache есть подобные ошибки, то следующее, что нужно сделать для устранения возможных проблем – это исследовать конфигурации Apache с помощью инструмента командной строки apachectl.
Устранение неполадок с помощью apachectl
Большинство дистрибутивов Linux включают утилиту apachectl в установку Apache по умолчанию. apachectl – бесценный инструмент, помогающий обнаруживать и диагностировать проблемы конфигурации Apache.
Проверьте конфигурацию Apache с помощью команды apachectl configtest. Инструмент проанализирует ваши файлы Apache и обнаружит все ошибки или недостающие настройки перед попыткой запуска сервера.
Команда одинакова для дистрибутивов Ubuntu, Debian, CentOS и Fedora:
sudo apachectl configtest
Если конфигурация Apache не содержит ошибок, вы получите такой результат:
Syntax OK
В зависимости от вашего дистрибутива Linux в выводе могут быть и другие строки, но самая важная строка – это та, в которой говорится, что с синтаксисом все ок.
Если в вашей конфигурации Apache есть ошибка (например, директива ссылается на деактивированный модуль) или опечатка, apachectl обнаружит ее и попытается уведомить вас о проблеме.
Например, попытка использовать в директиве отключенный модуль Apache приведет к появлению следующих сообщений apachectl:
AH00526: Syntax error on line 232 of /etc/apache2/apache2.conf:
Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
В этом примере модуль ssl не включен, поэтому при проверке конфигурации директива SSLEngine выдает ошибку. Последняя строка также указывает, что в логе ошибок Apache может содержаться дополнительная информация, и это следующее место для поиска подробной отладочной информации.
Логи Apache
Логи Apache – очень полезный ресурс для устранения неполадок. Как правило, каждая ошибка, возникающая в браузере или другом HTTP-клиенте, создает соответствующую запись в логах Apache. Иногда Apache также выводит в свои логи ошибки, связанные с конфигурацией, встроенными модулями и другой отладочной информацией.
Чтобы проверить ошибки при устранении неполадок Apache на сервере Fedora, CentOS или RedHat, изучите файл /var/log/httpd/error_log.
Если вы устраняете неполадки в системе Debian или Ubuntu, проверьте /var/log/apache2/error.log с помощью инструмента tail или less. Например, чтобы просмотреть последние две строки лога ошибок с помощью tail, выполните следующую команду:
sudo tail -n 2 /var/log/apache2/error.log
Замените количество строк, которые вы хотите изучить. Укажите количество строк вместо числа 2 в команде.
В системе CentOS или Fedora файл журнала для проверки – /var/log/httpd/error_log.
Ниже мы приводим пример пример ошибки (ее текст не зависит от дистрибутива Linux):
[Wed Jul 15 01:34:12.093005 2020] [proxy:error] [pid 13949:tid 140150453516032] (13)Permission denied: AH00957: HTTP: attempt to connect to 127.0.0.1:9090 (127.0.0.1) failed
[Wed Jul 15 01:34:12.093078 2020] [proxy_http:error] [pid 13949:tid 140150453516032] [client 127.0.0.1:42480] AH01114: HTTP: failed to make connection to backend: 127.0.0.1
Эти две строки представляют собой отдельные сообщения об ошибках. Обе они ссылаются на модуль, вызвавший ошибку (proxy в первой строке, proxy_http во второй), и содержат код ошибки, индивидуальный для модуля. Первый, AH00957, указывает на то, что сервер Apache пытался подключиться к бэкенд-серверу (в данном случае к 127.0.0.1 по порту 9090) с помощью модуля proxy, но не смог этого сделать.
Вторая ошибка исходит из первой: AH01114 – это ошибка модуля proxy_http, которая также указывает на то, что Apache не смог подключиться к бэкенд-серверу для выполнения HTTP-запроса.
Эти строки мы привели просто для примера. Если вы диагностируете ошибки на своем сервере Apache, скорее всего, вы найдете совсем другие строки с ошибками в ваших логах. Независимо от дистрибутива Linux, строки ошибок в логах всегда содержат соответствующий модуль Apache и код ошибки, а также текстовое описание ошибки.
Как только вы поймете, что могло вызвать вызывать проблему на вашем сервере Apache, вы можете продолжить исследование и устранение неполадок. Код ошибки и текстовое описание особенно полезны, поскольку дают конкретные указания, которые можно использовать для сужения диапазона возможных причин возникновения ошибки.
Заключение
Устранение ошибок Apache может включать как диагностику ошибок сервиса, так и обнаружение неверно настроенных параметров модулей. В этом вводном руководстве по диагностике Apache мы посмотрели, как использовать ряд утилит, чтобы сузить круг возможных причин появления ошибок. Обычно эти утилиты нужно использовать в том же порядке, в каком они описаны тут (но вы всегда можете пропустить некоторые действия или начать сразу с изучения логов, если у вас есть общее представление о том, в чем может быть проблема).
Однако чаще всего полезно следовать общей схеме устранения неполадок и использовать эти инструменты в описанном порядке. Начните с systemctl, чтобы проверить состояние сервера Apache. Если вам нужна дополнительная информация, изучите логи systemd для Apache с помощью команды journalctl. Если после проверки journalctl проблема все еще не ясна, проверьте конфигурации Apache с помощью команды apachectl configtest. Для более глубокого изучения неполадок проверьте логи Apache, обычно они указывают на конкретную ошибку (предоставляя полезные для диагностики данные и коды ошибок).
Tags: Apache, apachectl, journalctl, systemctl
check
Best Answer
Try checking is sites enabled in the server.
# apache2ctl -S
Also please copy last 20 lines in Apache error.log file.
This is not a good practice. I would suggest you to install Apache on a server and rsync /var/www folder and Apache config folder instead of sync Apache folder. If you want a high availability why not install load balancer? Haproxy would be a great option.
2 found this helpful
thumb_up
thumb_down
View Best Answer in replies below
17 Replies
-
try
sudo systemctl start apache2
That will probably error, then do
journalctl -xe
to see what it says is the issue.
Was this post helpful?
thumb_up
thumb_down
-
Hi Momurda,
This is what I get when I did the command:
Aug 13 15:11:58 apachectl[16715]: The Apache error log may have more information.
Aug 13 15:11:58 systemd[1]: apache2.service: Control process exited, code=exited status=1
Aug 13 15:11:58 systemd[1]: apache2.service: Failed with result ‘exit-code’.
Aug 13 15:11:58 systemd[1]: Failed to start The Apache HTTP Server.
— Subject: Unit apache2.service has failed
— Defined-By: systemd
— Support: http://www.ubuntu.com/support Opens a new window
—
— Unit apache2.service has failed.
Was this post helpful?
thumb_up
thumb_down
-
This is what it shows me
Control process exited, code=exited status=1
Failed with result ‘exit-code
Failed to start The Apache HTTP Server
Unit apache2.service has failed
Was this post helpful?
thumb_up
thumb_down
-
Aug 13 15:11:58 apachectl[16715]: The Apache error log may have more information.
Have you checked the content of the log file?
If you haven’t changed the config, it should be at
Text
/var/log/apache2/error.log
Was this post helpful?
thumb_up
thumb_down
-
Wish I could be more precise, but this Linux isn’t familiar to me.
When apache fails to start, i always run the equivalent the command to tell apache to «run a syntax check for config files».
In CentOS and the RedHat family of Liux distributions, this command «service httpd configtest».
Alternatively, try «apachectl -t» or «httpd -t» I got that from the output of «apachectl -h».
The main point is that it will run through the process of loading all the config files but not actually go to running. If you recently made a change but mistyped something, or some detail that it is pulling in is not able to be found, this will give show you the problem and then you can take it from there.
If you get «Ok», syntax is valid and what it wants to read in can be found so you can eliminate that as the problem. So you move on trying to start the service
Was this post helpful?
thumb_up
thumb_down
-
Check Apache error log in /var/log/apache2/ location. If not in this location check the system logs. It should write to the system log. Share your Apache site config file in sites_enabled location.
Did you enable a new site? Any changes made to Apache config files?
Was this post helpful?
thumb_up
thumb_down
-
Jim Peters wrote:
Wish I could be more precise, but this Linux isn’t familiar to me.
When apache fails to start, i always run the equivalent the command to tell apache to «run a syntax check for config files».
In CentOS and the RedHat family of Liux distributions, this command «service httpd configtest».
Alternatively, try «apachectl -t» or «httpd -t» I got that from the output of «apachectl -h».
The main point is that it will run through the process of loading all the config files but not actually go to running.
Not accessing an Ubuntu system to test at the moment, but I think
BASH
apache2ctl configtest
is the command that would be equivalent.
http://manpages.ubuntu.com/manpages/bionic/man8/apache2ctl.8.html Opens a new window
Was this post helpful?
thumb_up
thumb_down
-
Hi
Walker Dow,
When I do that command I don’t see any error logs, also I don’t get a syntax error but still unable to start apache.
Was this post helpful?
thumb_up
thumb_down
-
Not a new site, it is out backup production server that has a rsync command to copy the apache2 folder but stopped working suddenly yesterday.
I have deleted the apache2 folder ran the rsync copied back the apache2 folder from the production server but still not working, and the production server is running apache2 fine without an issue.
Also, I was reading into this issue, and a few people have said to do the command «sudo apt-get -o DPkg::Options::=»—force-confmiss» —reinstall install apache2″ is that a command I should try or any recommendations on what I could do?
Was this post helpful?
thumb_up
thumb_down
-
So this is a replica of production server? You cannot just clone production as it is. I’m not sure what you want to archive in here. I would suggest to check hostname and hosts files. Let me know detail what you want to archive so I can help more
Was this post helpful?
thumb_up
thumb_down
-
This is the command we run from the production to the backup »
rsync -raz —delete root@our IP Address :/etc/apache2 /etc/ && /usr/sbin/service apache2 reload
We would fail over if there is ever an issue on the main server.
Was this post helpful?
thumb_up
thumb_down
-
Try checking is sites enabled in the server.
# apache2ctl -S
Also please copy last 20 lines in Apache error.log file.
This is not a good practice. I would suggest you to install Apache on a server and rsync /var/www folder and Apache config folder instead of sync Apache folder. If you want a high availability why not install load balancer? Haproxy would be a great option.
2 found this helpful
thumb_up
thumb_down
-
The last 20 lines are below:
[Tue Aug 13 15:10:49.376005 2019] [ssl:emerg] [pid 16661:tid 109225548622784] AH02312: Fatal error initialising mod_ssl, exiting.
AH00016: Configuration Failed
[Tue Aug 13 15:11:58 2019] [emerg] ssl_engine_init.c(1778): [client AH02572: Failed to configure at least one certificate and key for abbotsford.rooter.ca:80
[Tue Aug 13 15:11:58 2019] [emerg] ssl_engine_init.c(1779): [client SSL Library Error: error:0906D06C:PEM routines:PEM_read_bio:no start line (Expecting: DH PARAMETERS) — Bad file contents or format — or even just a forgotten SSLCertificateKeyFile?
[Tue Aug 13 15:11:58 2019] [emerg] ssl_engine_init.c(1779): [client SSL Library Error: error:0906D06C:PEM routines:PEM_read_bio:no start line (Expecting: EC PARAMETERS) — Bad file contents or format — or even just a forgotten SSLCertificateKeyFile?
[Tue Aug 13 15:11:58 2019] [emerg] ssl_engine_init.c(1779): [client SSL Library Error: error:140A80B1:SSL routines:SSL_CTX_check_private_key:no certificate assigned
[Tue Aug 13 15:11:58.892180 2019] [ssl:emerg] [pid 16718:tid 134672433605568] AH02312: Fatal error initialising mod_ssl, exiting.
AH00016: Configuration Failed
[Wed Aug 14 09:17:53 2019] [emerg] ssl_engine_init.c(1778): [client AH02572: Failed to configure at least one certificate and key for abbotsford.rooter.ca:80
[Wed Aug 14 09:17:53 2019] [emerg] ssl_engine_init.c(1779): [client SSL Library Error: error:0906D06C:PEM routines:PEM_read_bio:no start line (Expecting: DH PARAMETERS) — Bad file contents or format — or even just a forgotten SSLCertificateKeyFile?
[Wed Aug 14 09:17:53 2019] [emerg] ssl_engine_init.c(1779): [client SSL Library Error: error:0906D06C:PEM routines:PEM_read_bio:no start line (Expecting: EC PARAMETERS) — Bad file contents or format — or even just a forgotten SSLCertificateKeyFile?
[Wed Aug 14 09:17:53 2019] [emerg] ssl_engine_init.c(1779): [client SSL Library Error: error:140A80B1:SSL routines:SSL_CTX_check_private_key:no certificate assigned
[Wed Aug 14 09:17:53.224680 2019] [ssl:emerg] [pid 5383:tid 113181818239936] AH02312: Fatal error initialising mod_ssl, exiting.
AH00016: Configuration Failed
[Wed Aug 14 09:49:11 2019] [emerg] ssl_engine_init.c(1778): [client AH02572: Failed to configure at least one certificate and key for abbotsford.rooter.ca:80
[Wed Aug 14 09:49:11 2019] [emerg] ssl_engine_init.c(1779): [client SSL Library Error: error:0906D06C:PEM routines:PEM_read_bio:no start line (Expecting: DH PARAMETERS) — Bad file contents or format — or even just a forgotten SSLCertificateKeyFile?
[Wed Aug 14 09:49:11 2019] [emerg] ssl_engine_init.c(1779): [client SSL Library Error: error:0906D06C:PEM routines:PEM_read_bio:no start line (Expecting: EC PARAMETERS) — Bad file contents or format — or even just a forgotten SSLCertificateKeyFile?
[Wed Aug 14 09:49:11 2019] [emerg] ssl_engine_init.c(1779): [client SSL Library Error: error:140A80B1:SSL routines:SSL_CTX_check_private_key:no certificate assigned
[Wed Aug 14 09:49:11.793774 2019] [ssl:emerg] [pid 6913:tid 107806533581760] AH02312: Fatal error initialising mod_ssl, exiting.
AH00016: Configuration FailedAlso, I will talk to our Developer about those options you recommended.
Was this post helpful?
thumb_up
thumb_down
-
Your rsync
Text
rsync -raz --delete root@our IP Address :/etc/apache2 /etc/ && /usr/sbin/service apache2 reload
isnt copying the ssl certs, if this the rsync command.
If you wanted to have them copied over you would include the certificate path in your rsync, which you can find in the /etc/apache2/sites-enabled/sitename.conf file under SSLCertficateFile and SSLCertificateKey
You also might not have correct apache mods enabled on the backup server.
Was this post helpful?
thumb_up
thumb_down
-
How would I check what is enabled, also it was working fine up until yesterday when it synced and it didn’t come back online
Was this post helpful?
thumb_up
thumb_down
-
Found the issue with apache2, it was one of the sites .conf that needed to be fixed and after that was done I was able to get apache2 back up and running.
The
apache2ctl -S command helped me find the error log since it had a different name which led me to the logs to fix the one site that was causing the issue.
1 found this helpful
thumb_up
thumb_down
-
spicehead-pbn31 wrote:
How would I check what is enabled, also it was working fine up until yesterday when it synced and it didn’t come back online
Use the commands
a2ensite (or a2dissite) [ [-q|—quiet] site] to enable or disable virtual hosts in Apache2.
To figure out which sites you have enabled, use:
# ls /etc/apache2/sites-enabled/
the directory above automatically adds and removes sym-links for your enabled sites, which makes it easy to check which sites are currently enabled.
Next, attempt to restart Apache2 using:
# apachectl restart
Once Apache2 is restarted, check its status with:
# apachectl status
Apache’s Debian Package Page Opens a new window Opens a new window
Apache’s Manual Page Opens a new window Opens a new window
Apache’s apachectl man page Opens a new window Opens a new window
Apache’s a2ensite man page Opens a new window Opens a new window
Was this post helpful?
thumb_up
thumb_down