Почему Apache не запускается

Многие новички, которые пытаются настроить свой домашний веб-сервер на основе Apache часто сталкиваются с ошибкой, что Apache не запускается. Благо сейчас в Ubuntu веб-сервер будет правильно работать по умолчанию и запустится, если вы не будете менять настройки, но раньше и в других дистрибутивах приходилось настраивать различные параметры и возникали ошибки.

В этой небольшой статье мы рассмотрим почему Apache не работает, что может стать причиной этой проблемы и как ее решить. Инструкция подойдет не только для Ubuntu, но и для других Linux дистрибутивов.

Почему не запускается Apache?

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

  • Ошибка в конфигурационном файле — вы меняли конфигурацию и настроили что-то неправильно из-за этого программа не может запустится;
  • Права доступа — у программы нет прав доступа к каким-то важным для нее файлам, например, файлам логов, модулей или конфигурационным файлам;
  • Не запускается служба apache при загрузке, но при запуске из консоли все работает — проблема в том, что на момент запуска загружены еще не все необходимые службы;
  • Неверно указанно доменное имя — такая ошибка довольно часто встречается на локальных компьютерах;

А теперь рассмотрим более подробно почему так происходит и как решить проблему.

Как решить проблему с Apache?

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

See «systemctl status apache2.service» and «journalctl — xe» for details

То есть нам нужно выполнить systemctl status apache2.service или journalctl — xe чтобы получить больше сведений. Выполните сначала первую команду:

systemctl status apache2.service

Мы сразу же видим причину проблемы — ошибка в конфигурационном файле, в директиве Listen, а теперь пробуем другую команду:

Только ее нужно выполнять сразу же, как была выполнена попытка перезапуска apache, потому что скоро буфер лога будет затерт и вы там ничего не увидите. Но здесь сообщается то же сообщение об ошибке в конфигурационном файле, даже видно строку — 54. Еще можно посмотреть error. log, но туда сообщения пишутся не всегда:

Дальше вы можете проверить конфигурационный файл на корректность с помощью такой команды:

Тут будут показаны даже предупреждения, которые не влияют на работу сервиса. Все серьезные ошибки нужно исправить если таковые имеются, возможно именно они препятствуют запуску.

Следующая важная проблема — это права доступа. Если 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, то вы можете его отключить на время, чтобы понять не в нем ли проблема:

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

sudo systemctl stop nginx
sudo systemctl stop lighttpd

Или вы можете попытаться изменить порт на другой, для этого откройте конфигурационный файл веб-сервера и найдите там строку Listen:

Если такой строки еще нет, то вы можете ее создать. Далее просто измените номер порта с 80 на любой удобный, например, 8080

Дальше про ошибку старта при загрузке. Такая ошибка случалась в версиях ниже 2.2.4, если вы используете эту или более новую версию, то эта проблема вам не страшна. Она была вызвана тем, что Apache с SSL не хотел запускаться без папки /var/run/apache2, которой не было на момент загрузки. Самый простой способ решить проблему — отключить модуль ssl:

Второй способ более сложный — добавьте в конфигурационный файл /etc/init. d/apache2 такую строку:

[ — d /var/run/apache2 ] || mkdir /var/run/apache2

Последняя проблема, о которой мы говорили — это когда неверно указанно имя сервера, на котором запускается Apache. Этой ошибке тоже были подвержены только ранние версии программы. Тогда при попытке запуска программа выдавала сообщение:

Failed to resolve server name for localhost

И дальше не запускалась. Чтобы решить эту проблему нужно было либо создавать виртуальные хосты, либо прописать в основном конфигурационном файле директиву ServerName, в которой будет указанно имя этого компьютера:

А также ассоциировать это имя с localhost в файле hosts:

Дальше было достаточно перезапустить Apache и все начинало работать.

Выводы

В этой статье мы рассмотрели несколько причин почему не запускается Apache и примеров их решения. Причин может быть множество, но мы разобрали только самые главные, которые встречаются наиболее часто. Надеюсь, эта информация была для вас полезной, если у вас остались вопросы, спрашивайте в комментариях! А для тех кого интересует еще один способ решения проблемы xampp apache не запускается для Windows есть видео:

Установка Apache 2.4

project author

Если Вам понравился данный материал, поделитесь им с вашими друзьями в соц сетях

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

В моем случае, я буду разворачивать локальный веб-сервер на базе 64-разрядной операционной системе Microsoft Windows 7. Для этого с ресурса apachehaus. com мной был скачен архив Apache 2.4.12 (httpd-2.4.12-x64-vc11.zip) и по ссылки https://www. microsoft. com/en-us/download/details. aspx? id=30679 пакет Microsoft Visual C++ 2012.

Скачивание и установка пакета Visual C++

Первым делом устанавливаем пакет Microsoft Visual C++ 2012.

Если у Вас возникли проблемы с выбором и скачиванием пакета Visual C++, найдите в архиве Apache файл с ознакомительными сведения (файл readme). В нем должна быть ссылка на скачивание пакета Visual C++ c сайта www. microsoft. com. Скачайте и установите пакет Visual C++.

скачивание и установка пакета Visual C++

Распаковка архива Apache

Открываем скаченный с веб-сервером архив и распаковываем (копируем) директорию «Apache24» в корень локального диска C:

Для базовой настройки веб-сервера Apache перейдем в директорию «C:\Apache24\conf\» и найдем файл «httpd. conf». Откроем данный файл в текстовом редакторе, просмотрим его и по необходимости внесем изменения. Большая часть файла состоит из комментарий и пояснений, начинающихся со знака # (решетка). В качестве текстового редактора могу посоветовать Notepad++.

Конфигурационный файл httpd. conf

httpd. conf — главный файл конфигурации веб-сервера Apache, содержащий директивы, управляющие работой веб-сервера.

Notepad++ — свободный текстовый процессор (текстовый редактор) с открытым исходным кодом для Windows с подсветкой синтаксиса большого количества языков программирования и разметки.

Изменим значения основных директив конфигурационного файла httpd. conf

каталог, в котором расположен веб-сервер

номер порта для веб-сервера

Для загрузки модуля mod_rewrite раскомментируем строку

значение кодировки по умолчанию

Email адрес администратора веб-сервера

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

Назначаем корневую директорию управления сайтами

расположение файла журнала ошибок.

Установка сервиса (службы) Apache

Далее необходимо установить сервис Apache как службу. Для этого нам понадобится командная строка. Командная строка должна быть запущена от имени администратора.

Командная строка — позволяет вводить и выполнять команды операционной системы MS-DOS и другие компьютерные команды. Вводя команды, вы можете выполнять на компьютере различные задачи, не пользуясь мышью или сенсорным вводом.

Для того чтобы запустить командную строку необходимо нажать на кнопку «Пуск». В поле поиска введите «cmd» или «Командная строка», затем в списке результатов поиска наведите мышкой на найденный пункт («cmd» или «Командная строка»), щелкните по нему правой кнопкой мыши и выберите пункт «Запуск от имени администратора».

Перед нами появится окно консоли.

Теперь необходимо перейти в директорию веб-сервера «bin» где находится файл «httpd. exe». Для этого используем команду «cd» и указываем полный путь до директории где находится файл «httpd. exe».

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

При удачном выполнение установки получаем примерно такой ответ:

Перевод:
Установка службы Apache2.4
Служба Apache2.4 успешно установлен.
Тестирование httpd. conf .
Ошибки, описанные здесь, должны быть исправлены и услуга может быть запущена.

Строка «The Apache2.4 service is successfully installed» означает, что служба установлена.

Если после строки «Errors reported here must be corrected before the service can be started» нет никаких сообщений, это означает, что в конфигурационных файлах не найдено критических ошибок и служба Apache24 запущена. Проверить ее работу можно открыв в браузере страницу localhost или страницу 127.0.0.1. Если страница по данным адресам открывается, то Вы добились желаемого, веб-сервер Apache установлен.

В случае, если после строки «Errors reported here must be . « присутствуют сообщения, то необходимо их исправить и перезапустить службу Apache. Обращаю Ваше на фразу «перезапустить», а не установить, ведь служба Apache24 уже установлена, просто она не может быть запущена, так как имеет ошибки в конфигурации.

Рассмотрим возможные ошибки при выполнении команды установки службы Apache24

Перевод: Не удалось открыть менеджер службы Windows, возможно, вы забыли войти как администратор?
Решение: Откройте командную строку от имени администратора

Перевод: Синтаксическая ошибка в строке номер N в файле httpd. conf

Перевод: сервис уже установлен (услуга уже установлена)

Управление службой Apache

Для управления запуском и остановкой сервиса Apache можно использовать «ApacheMonitor». Откройте директорию веб-сервера bin («C:\Apache24\bin») и запустите файл: ApacheMonitor. exe. В системном трее появится значок Apache, с помощью которого можно быстро запускать/останавливать службу Apache.

А также, так как сервис Apache устанавливается как служба, после его установки, управлять его запуском/остановкой можно в окне списка служб («Пуск» → пункт «Панель управления» → «Администрирование» → «Службы»)

При установки Apache, служба, по умолчанию получает имя «Apache» или «Apache24». Если, в силу каких либо причин, имя службы нас не устраивает, есть возможность задать собственное имя, используя в командной строке параметр «-n» c указанием имени службы через пробел. (Если в имени службы содержится пробел необходимо обернуть его в кавычки, т. е. «name service»). Рассмотрим дополнительно команды для управления сервисом Apache:

Нюансы настройки публикации web-сервиса 1С 8.2 в Apache и IIS

Возникла необходимость взаимодействовать с 1C с мобильного клиента под Windows Phone 7/8. Самым простым способом взаимодействия показалось работа через web сервисы, поддерживаемые 1С.

С точки зрения публикации web сервиса особых сложностей нет. Шаги подробно описаны в статьях:

Проблемы возникли с доступом к опубликованному web-сервису 1С. Под IIS 7.5 из под Windows 2008R2 после полудня танцев с бубном проблему решить не удалось. Были изучены статьи и ветки форумов:

но счастье так и не наступило.

В результате решил, что стоит попробовать поднять web сервис на Apache, поскольку с ним у меня обычно все было несколько проще с настройкой. Итак, на другом порту (8080) на том-же сервере был поднят Apache 2.2.22. В 1С был создан ещё один web сервис и опубликован уже на Apache. С настройками по умолчанию он также не заработал. Разберем ошибки.

Web сервис был опубликован в 1С под именем wsApache.

Публикация web-сервиса 1С

Публикация web-сервиса 1С под Apache

Соответственно, в указанном при публикации каталоге появился файл default. vrd следующего содержания:

В httpd. conf 1С добавила следующие строчки:

В целом, файлы/изменения создаваемые 1С почти рабочие. Теперь о проблемах.

В некоторых статьях путь к web сервису указан как: https://имя_сервера:порт/имя_при_публикации/alias? wsdl.

  • Имя сервера: s-1s-1-hw
  • Порт: 8080
  • Имя при публикации: wsApache
  • Alias из файла default. vrd: service.1cws

Соответственно, НЕПРАВИЛЬНАЯ ссылка на web сервис 1С такая: https://s-1c-1-hw:8080/wsApache/service.1cws? wsdl

Если использовать такой линк, то 1C 8.2 выдаст сообщение вида:

Правильный вариант:

https://имя_сервера:порт/имя_при_публикации/ ws/ alias? wsdl.

Это обращение эквивалентно обращению по имени сервиса из default. vrd:

https://имя_сервера:порт/имя_при_публикации/ ws/ name? wsdl.

Соответственно, ПРАВИЛЬНЫЙ линк для доступа к web сервису 1С будет такой:

https://s-1c-1-hw:8080/wsApache/ ws/ service.1cws? wsdl

https://s-1c-1-hw:8080/wsApache/ ws/ service? wsdl

Если указать ссылку с суффиксом? wsdl, то в веб браузере отобразиться XML файл с описанием опубликованного сервиса.

Если указать ссылку без суффикса? wsdl, то при правильной настройке должна появится страница с гиперссылкой на опубликованный сервис:

Авторизация пользователя при обращении к web сервису 1С

Если попытаться получить доступ к web сервису опубликованному под Apache не исправляя файл default. vrd, то появиться стандартный диалог авторизации:

Диалог авторизации на web сервисе 1С

Диалог авторизации на web сервисе 1С

В тестовой базе был заведен тестовый пользователь IUSR с полными правами с пустым паролем. Если ввести в диалог в качестве логина этого пользователя, то авторизация пройдет успешно и отобразиться либо XML файл, либо ссылка на него (см. выше).

Можно исключить запрос авторизационной информации вбив логин и пароль прямо в файл default. vrd, что, конечно, не рекомендуется с точки зрения безопасности, но иногда необходимо.

Это все. В моем случае каких-то дополнительных правок конфиг файлов не потребовалось.

В некоторых статьях указывалось, что нужно убрать из httpd. conf опцию «Options None«. У меня работает в обоих вариантах, т. е. когда строка присутствует и когда она удалена.

Публикация web сервиса 1С на IIS 7.5

Как уже упоминал выше, с публикацией web сервиса на IIS 7.5 с первого раза у меня не задалось, хотя тонкий клиент запускается без проблем. Поскольку пароль в конфигурационном файле по соображениям безопасности меня не устраивал, вернулся к вопросу настройки IIS. Был опубликован web сервис с именем wsIIS и именем сервиса ServiceIIS и alias-ом serviceIIS.1cws. Галка в чекбоксе «Использовать аутентификацию операционной системы на веб-сервере» для простоты эксперимента была снята.

Публикация web сервиса 1С в IIS 7.5.

Публикация web сервиса 1С в IIS 7.5.

Корректная ссылка в моем случае: https://s-1c-1-hw/wsIIS/ws/ServiceIIS? wsdl. При попытке зайти из Chrome/IE получаем ошибку возвращенную IIS:

Ошибка HTTP 401.2 — Unauthorized

дабы избавиться от ошибки правим web. config сформированный 1С следующим образом:

Эта правка эквивалента изменению через консоль управления IIS для нашего опубликованного приложения с именем wsIIS правил авторизации пользователя.

Настройки IIS 7.5 для доступа к web сервисам 1C

Настройки IIS 7.5 для доступа к web сервисам 1C

Добавление тегов security в web. config или правка правил авторизации в консоли IIS приводит к тому, что при обращении к сервису по указанной выше ссылке появляется запрос на авторизацию. Вводим нашего тестового пользователя IUSR без пароля и получаем нужный XML файл в ответе сервера.

Прописав в default. vrd логин и пароль пользователя, как было указано выше для Apache, уберем окно авторизации и сервис будет всегда авторизовываться под указанным пользователем. Как проходит авторизация можно посмотреть в логах 1C. Но вариант с прописыванием пользователя в конфигурационный файл — не наш путь, ибо не секьюрно.

Изменим настройки авторизации пользователя (в IIS проверка подлинности), чтобы использовалась Windows авторизация. Сменить можно в консоли управления IIS, либо в конфигурационном файле. Мне больше нравиться конфигурационный файл. так как проще переносить настройки при миграции на другой сервер.

Источники:

https://losst. ru/pochemu-apache-ne-zapuskaetsya

https://resource-gsv. ru/webserver/install-apache. html

https://www. bizkit. ru/2013/05/24/1722/

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: