Меню

Проверка apache на ошибки

HTTP-сервер Apache — самый популярный веб-сервер в мире. Это бесплатный кроссплатформенный HTTP-сервер с открытым исходным кодом, предоставляющий мощные функции, которые могут быть расширены с помощью самых разных модулей.

Если вы разработчик или системный администратор, скорее всего, вы регулярно работаете с Apache.

Прежде чем вы начнете 

Мы предполагаем, что вы вошли в систему как root или пользователь с привилегиями sudo. Команды в этом руководстве должны работать с любым современным дистрибутивом Linux, таким как Ubuntu 18.04, CentOS 7 и Debian 9 .

В Ubuntu и Debian служба Apache называется apache2 , а в системах на базе Red Hat, таких как CentOS, имя службы Apache httpd .

Если вы работаете в CentOS, просто замените apache2 с httpd командами ниже.

Запустите Apache 

Запуск Apache довольно прост. Просто введите следующую команду.

sudo systemctl start apache2 

В случае успеха команда не выдает никаких результатов.


    Если вы используете более старый дистрибутив Linux без systemd для запуска Apache:

sudo service apache2 start 


    Вместо того, чтобы вручную запускать службу Apache, рекомендуется установить ее при загрузке системы:

sudo systemctl enable apache2 

Стоп Апач 

Остановка Apache быстро отключает основной процесс Apache и все дочерние процессы, даже если есть открытые соединения.


    Чтобы остановить Apache, выполните одну из следующих команд:

sudo systemctl stop apache2 sudo service apache2 stop 

Перезапустите Apache

Параметр restart — это быстрый способ остановить и запустить сервер Apache.


    Используйте одну из следующих команд для выполнения перезапуска:

sudo systemctl restart apache2 sudo service apache2 restart 

    Это команда, которую вы, вероятно, будете использовать чаще всего.

Перезагрузить Apache

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

При перезагрузке основной процесс apache завершает работу дочерних процессов, загружает новую конфигурацию и запускает новые дочерние процессы.


    Чтобы перезагрузить Apache, используйте одну из следующих команд:

sudo systemctl reload apache2 sudo service apache2 reload 

Тестирование конфигурации Apache

Всякий раз, когда вы вносите изменения в файл конфигурации сервера Apache, рекомендуется проверить конфигурацию перед перезапуском или перезагрузкой службы.


    Используйте следующую команду для проверки конфигурации Apache на наличие любых синтаксических или системных ошибок:

sudo apachectl -t 


    Вывод будет выглядеть так:

Syntax OK
 

Если есть какие-либо ошибки, команда печатает подробное сообщение.

Просмотр статуса Apache

Чтобы проверить состояние службы Apache, используйте следующую команду:

sudo systemctl status apache2 


    Вывод будет выглядеть примерно так:

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: 
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Wed 2019-05-29 21:16:55 UTC; 6s ago
  Process: 938 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
  Process: 956 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCES
 Main PID: 997 (apache2)
    Tasks: 55 (limit: 1152)
   CGroup: /system.slice/apache2.service
           ├─ 997 /usr/sbin/apache2 -k start
           ├─ 999 /usr/sbin/apache2 -k start
           └─1000 /usr/sbin/apache2 -k start
 

Проверьте версию Apache 

Иногда вам может понадобиться узнать версию вашего Apache, чтобы вы могли отладить проблему или определить, доступна ли определенная функция.


    Вы можете проверить свою версию Apache, запустив:

sudo apache2 -v 
Server version: Apache/2.4.29 (Ubuntu)
Server built:   2019-04-03T13:22:37
 


    Опция -V (в верхнем регистре) показывает версию Apache вместе с опцией конфигурации.

sudo apache2 -V 

Вывод 

В этом руководстве мы показали вам некоторые из наиболее важных команд Apache. Если вы хотите узнать больше о командной строке Apache, посетите документацию Apache

11 января, 2018 1:44 пп
4 823 views
| Комментариев нет

Linux, VPS

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

Примечание: Мануал предназначен для пользователей, которые работают с Apache в Ubuntu. Если вы используете CentOS или другой дистрибутив RHEL, обратитесь к мануалу Установка LAMP stack на CentOS 7.

Каждый раздел может использоваться независимо от других, поэтому вы можете пропустить разделы, которые вам не нужны. Все условные значения в командах выделены красным; вместо этих значений вы можете подставить свои данные.

Каждый раздел предлагает ссылки на другие руководства, с которыми можно проконсультироваться.

Установка Apache

Чтобы установить сервис Apache, обновите индекс пакетов и запустите следующую команду:

sudo apt-get update
sudo apt-get install apache2

Читайте также: Установка веб-сервера Apache в Ubuntu 16.04

Автозагрузка Apache

Сервис Apache запускается автоматически. Если вы хотите изменить это поведение, введите:

sudo systemctl disable apache2.service

Чтобы снова добавить Apache в автозагрузку, введите:

sudo systemctl enable apache2.service

Управление сервисом Apache

Чтобы остановить сервер Apache, введите следующую команду:

sudo systemctl stop apache2

Чтобы запустить сервер Apache, введите:

sudo systemctl start apache2

Чтобы остановить сервис и запустить его снова, введите:

sudo systemctl restart apache2

Если вы изменили конфигурацию, вы можете перезагрузить Apache в текущей сессии. Введите следующую команду:

sudo systemctl reload apache2

Читайте также: Основы Systemd: управление сервисами и журналирование

Проверка состояния Apache

Чтобы проверить состояние Apache, введите команду:

sudo systemctl status apache2

Эта команда сообщит, работает ли Apache и покажет вам последние несколько строк логов.

Создание корневого каталога для статического сайта

При создании сайтов на Apache разработчики часто используют виртуальные хосты – это хосты, которые обслуживают отдельные сайты или домены. Для этого нужно создать document root, каталог верхнего уровня, который Apache проверяет при обслуживании контента.

sudo mkdir -p /var/www/example.com/public_html

Передайте права на каталог пользователю с доступом к sudo.

sudo chown -R $USER:$USER /var/www/example.com/public_html

Предоставьте остальным пользователям права на чтение контента:

find /var/www -type d -exec chmod 775 {} ;

Читайте также: Привилегии в Linux: что это и как с этим работать

Помните, что права доступа должны меняться в соответствии с ситуацией.

Создание корневого каталога для динамических файлов

Если ваш сайт использует динамические модули типа PHP, создайте каталог document root для этих файлов:

sudo mkdir -p /var/www/example.com/public_html

Передайте права на каталог пользователю sudo и группе www-data:

sudo chown -R 8host:www-data /var/www/example.com/public_html

Изменение конфигурации

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

Откройте файл виртуального хоста:

sudo nano /etc/apache2/sites-available/example.com.conf

Измените следующие строки:

ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html

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

<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Прежде чем сохранить файл, убедитесь, что в директивах нет ошибок.

Читайте также: Настройка виртуальных хостов Apache в Ubuntu 16.04

Включение и отключение конфигурационных файлов

Виртуальные хосты

Чтобы включить виртуальный хост, введите:

sudo a2ensite example.com.conf

Чтобы отключить конфигурационный файл (в данном примере это стандартный виртуальный хост):

sudo a2dissite 000-default.conf

Модули

Чтобы включить модули из каталога /etc/apache2/mods-available, введите:

sudo a2enmod example_mod

Чтобы отключить конкретный модуль:

sudo a2dismod example_mod

Конфигурационные файлы

Чтобы включить конфигурационные файлы из каталога /etc/apache2/conf-available (файлы, не связанные с виртуальными хостами), введите:

sudo a2enconf example-conf

Чтобы отключить файл, введите:

sudo a2disconf example-conf

Тестирование конфигурации

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

sudo apache2ctl configtest

Важные файлы и каталоги Apache

Контент

Каталог /var/www/html хранит весь контент сайта (это корневой каталог сайта). Вы можете изменить стандартные настройки Apache и указать другие каталоги в var/www.

Конфигурация сервера

  • /etc/apache2: конфигурационный каталог Apache (здесь хранятся все конфигурационные файлы веб-сервера).
  • /etc/apache2/apache2.conf: главный конфигурационный файл веб-сервера, в котором находятся все глобальные параметры. Все остальные файлы загружаются через этот файл. Также тут хранятся директивы FollowSymLinks, которые отвечают за включение и отключение конфигурационных файлов.
  • /etc/apache2/sites-available/: здесь находятся все виртуальные хосты (в том числе и отключенные). В этом каталоге происходят все изменения в настройке виртуального хоста. Эти файлы включаются с помощью команды a2ensite.
  • /etc/apache2/sites-enabled/: здесь хранятся файлы включенных виртуальных хостов. При запуске или перезагрузке Apache читает конфигурационные файлы и ссылки в этом каталоге, чтобы собрать полную конфигурацию.
  • /etc/apache2/conf-available и /etc/apache2/conf-enabled: работают по тому же принципу, что и sites-available и sites-enabled. Эти каталоги предназначены для хранения фрагментов конфигурации, которые не входят в виртуальные хосты.
  • /etc/apache2/mods-available и /etc/apache2/mods-enabled: эти каталоги работают аналогичным образом. Они предназначены для хранения модулей. В них находятся файлы двух типов: файлы с расширением .load загружают модули, а файлы .conf хранят их конфигурации.

Логи

  • /var/log/apache2/access.log – это лог, который регистрирует все запросы Apache (если в конфигурации веб-сервера не сказано другого).
  • /var/log/apache2/error.log – это лог ошибок. Настроить уровень логирования можно с помощью параметра LogLevel в /etc/apache2/apache2.conf.

Другой способ доступа к информации о компонентах Apache – через journald. Этот инструмент собирает информацию логов приложений и ядра. Чтобы просмотреть записи для модуля Apache, введите:

sudo journalctl -u apache2

Заключение

Данный мануал перечислил общие процедуры по поддержке сервера Apache. Чтобы узнать больше о работе с Apache, ознакомьтесь со следующими руководствами:

  • Установка стека LAMP в Ubuntu 16.04
  • Перемещение корневого каталога Apache в Ubuntu 16.04
  • Создание сертификата Let’s Encrypt для Apache в Ubuntu 16.04
  • Использование файла .htaccess
  • Перезапись URL-адресов на Apache в Ubuntu 16.04
  • Настройка Apache как обратного прокси-сервера с помощью mod_proxy в Ubuntu 16.04

Tags: Apache

Prerequisite: How do Web Servers work?

Apache is one of the most widely used free, open-source Web Server applications in the world, mostly used in Unix-like operating systems but can also be used in windows. As a developer or system administrator, it will be very helpful for you to know about the Apache webserver. It has many notable features among which  Virtual hosting is one such notable feature that allows a single Apache Web Server to serve a different number of websites.

We will discuss some of the most useful commands to manage Apache webserver (also called httpd on some other Linux-based distros) in Linux that you should know as a developer or system administrator. The commands that are going to be discussed must be executed as a root or sudo user.
 

Useful Commands to Manage Apache Web Server in Linux

Install Apache Server:

Installing Apache server on Debian/Ubuntu Linux using the following command:

sudo apt install apache2 

Useful Commands to Manage Apache Web Server in Linux

apache 2 already installed on my system

Check Apache Version:

For checking the installed version of the Apache webserver on the Linux system, use the following command:

 sudo apache2 -v

Useful Commands to Manage Apache Web Server in Linux

apache2 version

Display Apache compile settings:

To find about the Apache compile settings use the following command:

apache2 -V

Useful Commands to Manage Apache Web Server in Linux

Finding Syntax Errors in Apache Configuration File:

 For checking Apache configuration files for finding any syntax errors on Debian-based systems before restarting the service use the following command:-

 sudo apache2ctl -t

Useful Commands to Manage Apache Web Server in Linux

Syntax is Ok

Finding Errors in Apache Virtual Host:

Errors in Apache virtual host can be found out by using the following command below:-

apache2ctl -S

Useful Commands to Manage Apache Web Server in Linux

All the virtual hosts on the server, their options, and the file names and line numbers that they define, an error message with the line number are displayed that is very useful for troubleshooting the configuration file.

 Using Apache2 Service Commands

All the commands that will be discussed are applicable for Debian and Ubuntu Linux.

Start Apache Service:

For starting the Apache service, run the following command:

sudo service apache2 start

Restart Apache Service:

For restarting the Apache service, run the following command:

 sudo systemctl restart apache2

View Apache Service Status:

For viewing the Apache service, run the following command:

sudo systemctl status apache2 

Useful Commands to Manage Apache Web Server in Linux

status is active

Reload Apache Service:

For reloading(if you have made any changes in the configuration file then you can use this )the Apache service, run the following command:

sudo systemctl reload apache2

Restart the Apache Service:

For reloading the Apache service, run the following command:- 

systemctl restart apache2 

Stop Apache Service:

For stopping the Apache service, run the following command:- 

sudo systemctl stop apache2   

Show Apache Command Help:

For getting help with the Apache service commands by running the following command:- 

sudo apache2 -h  

Useful Commands to Manage Apache Web Server in Linux

Prerequisite: How do Web Servers work?

Apache is one of the most widely used free, open-source Web Server applications in the world, mostly used in Unix-like operating systems but can also be used in windows. As a developer or system administrator, it will be very helpful for you to know about the Apache webserver. It has many notable features among which  Virtual hosting is one such notable feature that allows a single Apache Web Server to serve a different number of websites.

We will discuss some of the most useful commands to manage Apache webserver (also called httpd on some other Linux-based distros) in Linux that you should know as a developer or system administrator. The commands that are going to be discussed must be executed as a root or sudo user.
 

Useful Commands to Manage Apache Web Server in Linux

Install Apache Server:

Installing Apache server on Debian/Ubuntu Linux using the following command:

sudo apt install apache2 

Useful Commands to Manage Apache Web Server in Linux

apache 2 already installed on my system

Check Apache Version:

For checking the installed version of the Apache webserver on the Linux system, use the following command:

 sudo apache2 -v

Useful Commands to Manage Apache Web Server in Linux

apache2 version

Display Apache compile settings:

To find about the Apache compile settings use the following command:

apache2 -V

Useful Commands to Manage Apache Web Server in Linux

Finding Syntax Errors in Apache Configuration File:

 For checking Apache configuration files for finding any syntax errors on Debian-based systems before restarting the service use the following command:-

 sudo apache2ctl -t

Useful Commands to Manage Apache Web Server in Linux

Syntax is Ok

Finding Errors in Apache Virtual Host:

Errors in Apache virtual host can be found out by using the following command below:-

apache2ctl -S

Useful Commands to Manage Apache Web Server in Linux

All the virtual hosts on the server, their options, and the file names and line numbers that they define, an error message with the line number are displayed that is very useful for troubleshooting the configuration file.

 Using Apache2 Service Commands

All the commands that will be discussed are applicable for Debian and Ubuntu Linux.

Start Apache Service:

For starting the Apache service, run the following command:

sudo service apache2 start

Restart Apache Service:

For restarting the Apache service, run the following command:

 sudo systemctl restart apache2

View Apache Service Status:

For viewing the Apache service, run the following command:

sudo systemctl status apache2 

Useful Commands to Manage Apache Web Server in Linux

status is active

Reload Apache Service:

For reloading(if you have made any changes in the configuration file then you can use this )the Apache service, run the following command:

sudo systemctl reload apache2

Restart the Apache Service:

For reloading the Apache service, run the following command:- 

systemctl restart apache2 

Stop Apache Service:

For stopping the Apache service, run the following command:- 

sudo systemctl stop apache2   

Show Apache Command Help:

For getting help with the Apache service commands by running the following command:- 

sudo apache2 -h  

Useful Commands to Manage Apache Web Server in Linux

I’m looking for a command that checks the validity of the config files in Apache server on both Debian and RHEL distros. I need to do this prior to restart, so there will be no downtime.

ivanleoncz's user avatar

ivanleoncz

1,5234 gold badges18 silver badges32 bronze badges

asked Feb 7, 2011 at 10:14

Sigtran's user avatar

answered Feb 7, 2011 at 10:16

keatch's user avatar

keatchkeatch

4,2961 gold badge14 silver badges3 bronze badges

4

The Apache config test (apachectl configtest, or its equivalents) only tests the config file (and the files it recursively includes) for valid syntax. However, the original question asked for preventing downtime. Even when apachectl configtest does not return an error, an actual restart may still fail, causing downtime.

Common causes for such failures include missing or inaccessible SSL certificates, missing directories for log files or a missing website root directory. Often, such errors are caused by removing a vhost’s directory without removing the vhost Apache config file. It is highly recommended to use a tool like puppet or ansible to prevent such inconsistencies.

Seeing that this question is the number one hit when googling «apache config lint» I thought I’d mention this little detail…

answered Feb 19, 2019 at 11:39

BertD's user avatar

BertDBertD

2612 silver badges3 bronze badges

9

apachectl configtest is the correct answer.
Unfortunately I’ve got a windows installation where apachectl is missing.
Here calling httpd also helps.

answered Nov 16, 2015 at 6:09

Matthias M's user avatar

Matthias MMatthias M

2212 silver badges4 bronze badges

What I usually do is

apache2ctl -t && apache2ctl graceful

answered Jun 21, 2020 at 10:40

mivk's user avatar

mivkmivk

3,6371 gold badge37 silver badges32 bronze badges

2

There is always a good idea to take a look at the error logs.

less /var/log/httpd/error_log

— Paul

answered Dec 6, 2022 at 11:30

YateBTS's user avatar

1

I have actually tried before:

apachectl configtest

We can actually see the status code to know the error:

/etc/init.d/apache2 restart; systemctl status apache2.service

● apache2.service — The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Sun 2021-05-30 17:16:45 +08; 41ms ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 168391 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE)
CPU: 67ms

May 30 17:16:45 kali systemd[1]: Starting The Apache HTTP Server…
May 30 17:16:45 kali apachectl[168394]: AH00526: Syntax error on line
13 of /etc/apache2/mods-enabled/security2.conf

answered May 30, 2021 at 9:17

Alvin567's user avatar

Alvin567Alvin567

1111 silver badge7 bronze badges

How do I check for syntax errors in the configuration of my apache server without having to restart or reload the rules? This would be preferably done from the terminal/command line.

asked Jul 11, 2012 at 23:36

Cosmin Atanasiu's user avatar

Cosmin AtanasiuCosmin Atanasiu

2,4023 gold badges21 silver badges26 bronze badges

If syntax is ok:

sudo apache2ctl configtest

Will reply with:

Syntax OK

answered Oct 29, 2019 at 2:17

Nahid's user avatar

You can use this as well if you don’t have httpd.

apachectl configtest

answered Aug 3, 2018 at 5:49

prashant's user avatar

prashantprashant

2,5484 gold badges24 silver badges38 bronze badges

On linux, you use

/usr/sbin/httpd -t

On windows, you would use the equivalent command to the httpd.exe file

answered Jul 11, 2012 at 23:36

Cosmin Atanasiu's user avatar

Cosmin AtanasiuCosmin Atanasiu

2,4023 gold badges21 silver badges26 bronze badges

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Проверить ндд на ошибки
  • Проверить php на наличие ошибок