Остановка и перезапуск Apache. Apache перезагрузка


Перезапуск Apache Ubuntu | Losst

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

В этой небольшой статье мы рассмотрим какими способами выполняется перезапуск apache ubuntu и как это делать более правильно.

Содержание статьи:

Перезапуск Apache в Ubuntu

Как и в большинстве других дистрибутивов, в Ubuntu используется система управления службами systemd. Именно ее мы и будем использовать для решения наших задач. Сначала давайте посмотрим запущен ли Apache и не выдает ли он каких ошибок:

sudo systemctl status apache2

 

 

В отличие от CentOS и других RedHat дистрибутивов, здесь Apache называется не httpd, а apache2. Поэтому если вы попытаетесь делать что-то с httpd, то у вас ничего не выйдет.

У нас есть два различных пути перезапуска Apache и несколько команд для выполнения нужных операций:

  • Вы можете полностью перезапустить Apache, программа закроется и откроется заново, собьется вся статистика и оборвутся соединения. Некоторое время, пока сервис будет перезагружаться, пользователи не смогут получить к нему доступ. restart (stop start);
  • Можно инициировать обновление конфигурационных файлов. В таком случае программа рекомендует своим дочерним процессам завершиться, когда они закончат обработку соединений и обновит свою конфигурацию без фактического перезапуска. Такой способ позволяет минимизировать потери пользователей. reload, graceful.

Для перезагрузки можно использовать три команды, это systemd, service и apachectl. Разработчики Apache рекомендуют использовать apachectl, но все другие команды просто являются оболочками для этой. Сначала systemctl:

sudo systemctl restart apache2sudo systemctl reload apache2

Если вы хотите использовать service, то можно не писать sudo, тогда система спросит вас пароль сама:

service restart apache2service reload apache2

Последний способ перезагрузки Apache — использовать apachectl:

apachectl -k restartapachectl -k graceful

В каждой паре первая команда означает жесткую перезагрузку, а вторая — обновление конфигурации без перезагрузки сервиса. Вместо apachectl еще можно использовать ее алиас — apache2ctl. После перезагрузки посмотрите все ли правильно работает:

sudo systemctl status apache2

 

Более подробную информацию можно увидеть выполнив:

apachectl status

Если вас интересует ответ на вопрос, как запустить apache, то используйте команду start:

$ sudo systemctl start apache2

 

Перезапуск Apache в панели управления

Если вы используете панель управления сервером через веб-интерфейс, например, VestaCP, это сделать достаточно просто. Сначала откройте вкладку «Server»:

Затем просто найдите в списке Apache и нажмите «Restart»:

Выводы

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

Оцените статью:

Загрузка...

losst.ru

Перезагрузка Apache и MySQL на FreeBSD

Это очередная статья, на которую меня сподвиг недавно купленный VPS-сервер от Mojordomo. За все время использование, чуть меньше месяца у меня только положительные эмоции относительно этой компании. Благодаря Mojordomo я в боевом режиме пощупал FreeBSD. Настоящие знания приходят именно с такого опыта.

Вот столкнулся с тем, что Apache и MySQL в операционной системе FreeBSD лежат не там где в Linux. Поэтому управление работой демонов немного различаются. Было решено за впечатлить все в этом блоге, так как знания, который не записаны на бумаге – это временные знания, которые постепенно забываются.

Управление Apache во FreeBSD

тут

Для того, чтобы запустить Apache, нужно:

/usr/local/etc/rc.d/apache22 start

Остановить Apache 2.2 на FreeBSD можно командой:

/usr/local/etc/rc.d/apache22 stop

Перезапустить Apache на FreeBSD:

/usr/local/etc/rc.d/apache22 restart

Аналогично команды выглядят и для запуска/остановки/перезапуска сервера баз данных MySQL.

Управление MySQL во FreeBSD

Для того, чтобы запустить демон MySQL-сервера в операционной системе FreeBSD, необходимо исполнить команду:

/usr/local/etc/rc.d/mysql-server start

Остановить MySQL-сервер поможет команда:

/usr/local/etc/rc.d/mysql-server stop

А перезапустить MySQL можно так:

/usr/local/etc/rc.d/mysql-server restart

Универсальное правило управления демонами во FreeBSD

В операционной системе FreeBSD дополнительное программное обеспечение устанавливается в /usr/local/etc/. А файлы запуска размещены в /usr/local/etc/rc.d/. Именно по этому во FreeBSD всеми демонами можно управлять практически одинаково. Синтаксис команды, если это можно так назвать, предельно просто и выгялдит вот так:

/usr/local/etc/rc.d/имя_демона restart

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

ls /usr/local/etc/rc.d

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

adminway.ru

PHP 5.6 и PHP 7 на русском: Apache Останов и перезапуск

Этот перевод может быть устаревшим. Смотрите английскую версию для ознакомления со всеми последними изменениями в документе.

Этот документ рассматривает вопросы остановки и перезапуска Apache на Unix-подобных системах. Пользователям Windows NT, 2000 и XP следует читать раздел "Работа Apache как сервиса", а пользователям Windows 9x и ME - "Работа Apache как консольного приложения", для получения информации об управлении сервером на этих платформах.

Для того, чтобы остановить или перезапустить Apache, необходимо послать сигнал запущенным процессам httpd. Существует два способа отправить подобные сигналы. Во-первых, вы можете послать сигналы непосредственно процессам, используя команду unix kill. Обратите внимание, что процессов httpd в системе выполняется несколько, однако вы не должны отсылать сигналы ни одному из них, кроме родительского - его pid (идентификатор процесса) записывается в файл, путь к которому задается директивой PidFile. Существуют три сигнала, которые вы можете отправить родительскому процессу: TERM, HUP, и USR1 - их значение будет объяснено ниже.

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

kill -TERM `cat /usr/local/apache2/logs/httpd.pid`

Второй способ передать сигналы процессам httpd - это использование опции -k в командной строке с аргументами: stop, restart и graceful, как будет описано ниже. Это параметры командной строки для исполняемого файла httpd, однако мы рекомендуем передавать их, используя скрипт apachectl, который передаст эти параметры программе httpd.

После того, как будут отправлены сигналы процессу httpd, вы можете узнать о состоянии сервера, набрав:

tail -f /usr/local/apache2/logs/error_log

Внесите необходимые изменения в эти примеры с учётом значения директив ServerRoot и PidFile в конфигурации Apache.

Сигнал: TERM apachectl -k stop

После получения сигнала TERM или stop, родительский процесс пытается немедленно уничтожить все дочерние процессы. Это может занять несколько секунд. Затем родительский процесс сам завершает работу, при этом все текущие запросы прекращают обрабатываться, а новые запросы игнорируются.

Сигнал: USR1 apachectl -k graceful

При получении сигнала USR1 или graceful, родительский процесс призывает дочерние процессы к завершению работы сразу же после обработки своего текущего запроса (или к незамедлительной остановке, если дочерний процесс ничего не обрабатывает). Родительский процесс перечитывает конфигурационные файлы, открывает заново log-файлы (файлы, содержащие журнал работы сервера). После того, как какой-то из дочерних процессов завершает работу, родительский процесс заменяет его дочерним процессом нового поколения, т.е. с новой конфигурацией, который начинает обрабатывать новые запросы незамедлительно.

На некоторых платформах, не поддерживающих передачу сигнала USR1 как сигнала для инициации мягкого перезапуска, могут использоваться другие сигналы (такие как WINCH). Команда apachectl graceful отправит корректный сигнал на любой платформе.

Программа разработана таким образом, что количество процессов и потоков, определённое директивами МП-модуля (мульти-процессного модуля), оставалось неизменным на протяжение всего процесса перезапуска. Кроме того, для поддержания числа запущенных процессов, определённого директивой StartServers, используется следующий способ: если спустя одну секунду не было создано по крайней мере такое количество дочерних процессов, какое определено директивой StartServers, тогда создаётся такое количество дочерних процессов, которое полностью восполнило бы недостаток. Таким образом сервер пытается одновременно и сохранить количество уже существующих дочерних процессов неизменным, и учесть ваши требования, указанные в директиве StartServers.

Пользователи, использующие модуль mod_status, могут обратить внимание, что статистика сервера при получении сигнала USR1 не обнуляется. Так было сделано для того, чтобы уменьшить промежуток времени, в течение которого сервер не может обрабатывать новые запросы (которые операционная система будет ставить в очередь, т.е. они не пропадут в любом случае), а также для того, чтобы учитывать ваши настройки. Для этого сервер хранит таблицу статистики, в которую записываются результаты работы всех дочерних процессов, вне зависимости от их поколения.

Модуль mod_status также использует символ G, чтобы обозначить те дочерние процессы, которые всё ещё обрабатывают запросы и которые были созданы до сигнала к мягкому перезапуску.

В настоящее время нет способа определить, что все дочерние процессы закончили запись в старый log-файл (т.е. log-файл, в который производилась запись до перезапуска). Мы предлагаем вам подождать некоторое время, после того как будет послан сигнал USR1, прежде чем делать что-либо со старым log-файлом. Например, если на выполнение запросов пользователей, подключённых через очень медленный канал, уходит не более 10 минут, тогда логично будет подождать 15 минут, прежде чем делать что-либо со старым log-файлом.

Если Ваш конфигурационный файл содержит ошибки, то попытка перезапустить сервер вызовет немедленное прекращение работы родительского процесса с сообщением об ошибке. В случае мягкого перезапуска дочерние процессы продолжают обрабатывать свои запросы, после чего они завершат свою работу. Это может вызвать проблемы, так как сервер не будет в состоянии установить соединение с необходимыми портами. Перед выполнением перезапуска, вы должны проверить синтаксис конфигурационных файлов с помощью параметра -t командной строки (см. описание httpd). Однако это всё ещё не гарантирует, что сервер перезапустится корректно. Чтобы проверить семантику конфигурационных файлов, равно как и их синтаксис, вы можете попробовать запустить httpd, будучи непривилегированным пользователем. Если ошибки отсутствуют, то httpd попытается открыть сокеты и log-файлы, но не сможет этого сделать, потому что у него отсутствуют необходимые для этого права (или потому что в текущее время работающий httpd уже установил соединение с нужными портами, заняв их). Если сбой происходит по любой другой причине - значит, скорее всего, существует ошибка в конфигурационном файле, которая должна быть исправлена перед началом мягкого перезапуска. Сигнал: HUP apachectl -k restart

Отправленный родительскому процессу сигнал HUP или restart вызывает немедленное уничтожение всех дочерних процессов, также как и при обработке сигнала TERM, однако родительский процесс не завершает работу. Он перечитывает конфигурационные файлы и открывает заново log-файлы (файлы, содержащие журнал работы сервера). Затем он порождает новых потомков и продолжает обработку запросов.

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

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

В Apache до версии 1.2b9 существовало несколько ситуаций гонки, возникающих при получении сигналов к перезапуску или останову (проще говоря, ситуация гонки - чувствительная ко времени проблема, возникающая, когда что-то происходит в неподходящее время или в неправильном порядке. Если то же самое происходит в подходящее время, никаких проблем не возникает). Для компьютеров с архитектурами, имеющими "правильный", "хороший" набор возможностей, подобные проблемы были устранены везде, где это возможно. Однако следует помнить, что на компьютерах с некоторыми архитектурами всё ещё существует возможность возникновения ситуаций гонки.

Компьютеры с архитектурами, на которых таблица статистики хранится в файле, заданном директивой ScoreBoardFile, имеют потенциальную возможность повреждения их таблиц статистики. Это может вызвать ошибку "bind: Address already in use" (после сигнала HUP) или "long lost child came home!" (после сигнала USR1). Последнее сообщение - фатальная ошибка, в то время как предыдущее сигнализирует только о потере связи с таблицей статистики. Поэтому можно порекомендовать использовать мягкий перезапуск, и лишь время от времени делать жесткий перезапуск. С этими проблемами очень сложно бороться, однако, к счастью, большинство архитектур не требуют хранить таблицу статистики на диске. Смотрите документацию к директиве ScoreBoardFile, чтобы узнать, на каких архитектурах используется этот файл.

Во всех архитектурах существуют небольшие ситуации гонки в каждом дочернем процессе, начиная со второго запроса при постоянном HTTP соединении (KeepAlive). Процесс может завершиться после чтения строки запроса, но перед чтением заголовков запроса. Исправление появилось позже выпуска версии 1.2, а потому не включено в него. Теоретически это не проблема, потому что KeepAlive-клиент должен ожидать таких событий из-за задержек сети и времени ожидания сервера. Практически складывается впечатление, что это также не оказывает никакого влияния - во время тестов сервер перезапускался с частотой 20 раз в секунду, а клиенты успешно просматривали сайт, не получая пустых документов и повреждённых картинок.

php5.kiev.ua

Удаленно перезагружаем Apache и MySQL

Чего мы только не делаем ради того, чтоб ничего не делать. Ситуация: есть сервер под Win2003, на котором работают Apache, MySQL, Serv-U. Периодически древний индеец вешается, причем в основном если обращение идет с клиента под Win98. Казалось бы простое решение — снести нафиг Win2003, поставить linux, настроить сервисы и нет проблем (а может просто Apache 2 поменять на Apache 1.3?). Нет, мы пойдем не таким путем (лень восстанавливать moodle на новом сервере).

Цель — создать скрипт, который каким-то образом перезагрузит Apache и MySQL (на всякий случай). Итак, поехали.

У многих «оконных админов» скорее всего уже давным давно готов bat-файлик примерно с таким содержанием:

1234

net stop mysql5net stop apache2net start mysql5net start apache2

У кого нет, объясню: останавливаем MySQL и Apache и запускаем их снова. Наша цель удаленно послать команду на запуск этого bat-файла.

У фтп-сервера есть возможность выполнять команды на машине, где он установлен (для этого пользователь, от имени которого подключились должен иметь права для запуска файлов (в Serv-U это называется Allow client to execute file on server as Windows programm)). Задача свелась к созданию скрипта, который подключится к FTP-серверу и пошлет ему команду на запуск bat-файла (его предусмотрительно ложим в папку, на которую пользователю даем права). Подключаться будем с паролем, который конечный пользователь введет в поле на странице.

Получился такой код:

1234567891011121314151617

if (isUser()){   /* Соединение с FTP сервером */   $serv="site.ru";   $port="2121";   $conn = ftp_connect($serv,$port);   if (!$conn) die('<span>Не удалось подключиться к '.$serv.'</span>');

  /* Вход под именем "user" с паролем $_POST["pass"] */  if (!ftp_login($conn, 'user', $_POST["pass"]))      die('<span>Не удалось войти на '.$serv.':'.$port.'</span>');

  /* Отправка команды на запуск bat-файла FTP серверу */  if (ftp_site($conn, 'EXEC restart_server.bat')) echo "<span>Перезагрузка запущена.</span>\n";    else echo("<span>Перезагрузка не запущена.</span>\n");  ftp_close($conn);}

Так как скрипт будет висеть в доступном месте, нужно хоть немного его защитить. Для этого и нужна функция isUser():

123456789101112131415

function isUser(){  if (isset($_POST["pass"]))  {    if (isset($_SESSION["passtime"]) && (time()-$_SESSION["passtime"])&lt;11)    {      $_SESSION["passtime"]=time();      print "<span>Повторную попытку доступа можно повторить не раньше чем через 10 секунд!</span>";      return false;    }    $_SESSION["passtime"]=time();    return true;  }  else return false;}

Она проверяет, заполнено ли поле с паролем, и ограничивает попытки входа 1 раз на 10 секунд.

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

P.S. Для совсем ленивых — готовый скрипт + bat-файл.

otadmina.ru

Как перезагрузить apache?

Самым популярным и многофункциональным HTTP-сервером на сегодня является Apache. Он очень стабилен и способен непрерывно функционировать в течение долгих лет. Однако для обновления параметров конфигурации, например, при изменении списка виртуальных хостов, необходимо перезагрузить Apache. Создать сайт самостоятельно с Wix.com

Вам понадобится
  • - права root на целевой машине;
  • - возможно, программа SSH-клиент.
Инструкция
  • Авторизуйтесь на локальной машине или подключитесь к удаленному серверу, на котором запущен Apache, и также выполните авторизацию. Если вы имеете физический доступ к машине, на которой функционирует сервер, требующий перезагрузки, и к ней подключены монитор с клавиатурой, процесс авторизации не составит проблем.Если к целевой машине имеется только удаленный доступ по SSH, примените программы-клиенты для осуществления подключения. Под Windows можно использовать свободно распространяемый графический клиент PuTTY, доступный для загрузки на сайте putty.nl. В Linux-подобных системах переключитесь в текстовую консоль или запустите эмулятор терминала, а затем выполните команду вида:ssh имя_пользователя@адрес_сервераПосле подключения введите пароль.
  • Начните сеанс суперпользователя. Выполните команду su. Введите пароль root.
  • Определите, какой из серверов Apache запущен на целевой машине. Выполните команду:service httpd statusСообщение вида httpd is running будет свидетельствовать о том, что функционирует Apache версии 1.x. Сообщение service: httpd: Unrecognized service указывает на то, что данная служба не установлена. Надпись httpd is stopped говорит, что сервер установлен, но не работает.Аналогичным образом проверьте, запущен ли Apache версий 2.x. Выполните команду:service httpd2 statusПо факту проверки будет выявлено наличие или отсутствие служб httpd и httpd2. При этом они (в том числе и одновременно) могут быть как запущены, так и остановлены. Если на целевой машине функционирует Apache, перейдите к следующему шагу.
  • Перезагрузите Apache. Для перезагрузки сервера путем его остановки и последующего запуска, выполните команду вида:service имя_службы restartВ качестве имени службы укажите httpd или httpd2 в зависимости от результатов, полученных на предыдущем шаге. Для осуществления «мягкой» перезагрузки с обновлением конфигурации вместо параметра restart используйте graceful. Например:service httpd2 gracefulЭтот метод более предпочтителен.
  • Завершите работу. Закройте сеанс суперпользователя, выполнив команду exit. Отключитесь от сервера при помощи команд exit или logout.
  • Оцените статью!

    imguru.ru

    Перезагрузка apache по cron / Блог о web-разработке и не только / nexus-it

    27 Января 2015

    Задача эта появилась после того, как я перенес один из проектов на хостинг 1Gb. После настройки домена и БД через ЛК хостинга все было прекрасно, пока через 2 дня я не обнаружил, что сервис лежит.

    Перезагрузка apache решила проблему и я списал все на случайность. Прошло еще дня 3 и... В общем, пришла пора писать в ТП. Вот что мне там ответили:

    С настройками внутри VDS вам нужно разбиратьсЯ самостоятельно. Права для установки ПО позволяющего анализировать процессы у вас есть, обратитесь к документации по администрированию сервера.

    Ну, ок, подумал я. Неплохой ответ, учитывая, что все ставилось "из коробки". Пришлось набросать скриптик для моего VDS с Ubuntu 12.04.3 LTS на борту, может кому-нибудь пригодится:

    #!/bin/bash APACHECHECK="/usr/sbin/apachectl status" APACHERESTART="/etc/init.d/apache2 restart" STATUS=$($APACHECHECK) if [[ $STATUS == *"is_running"* ]] then echo -e "[$(date)] Apache is running on port 80..." >> /var/apache_state.log else echo -e "[$(date)] Apache is down! Restart!" >> /var/apache_state.log echo -e $($APACHERESTART) >> /var/apache_state.log fi

    Внимание! Чтобы все корректно работало, по адресу http://localhost:80/server-status у вас должна отдаваться строка is_running.

    Вот такие логи выводит данный скрипт:

    [Mon Jan 26 12:30:03 MSK 2015] Apache is down! Restart! * Restarting web server apache2 ...done. [Mon Jan 26 12:45:02 MSK 2015] Apache is running on port 80... [Mon Jan 26 13:01:19 MSK 2015] Apache is running on port 80... [Mon Jan 26 13:15:01 MSK 2015] Apache is running on port 80...

    Настройа cron:

    $sudo crontab -e 0,15,30,45 * * * * /var/apache_check.sh 0 0 1 * * rm /var/apache_state.log

    nexus-it.ru

    Остановка и перезапуск Apache

    Apache HTTP Server Version 1.3

    Этот документ охватывает остановку и перезапуск на Unix и Cygwin системах.

    На Вашей системе Вы заметите несколько запущенных httpd, но отправлять сигнал надо не всем, а только главному процессу, который указан в директиве PidFile. Т.е. вам не надо посылать сигнал любому процессу, кроме родительского. Существует три сигнала, которые можно послать родительскому процессу: TERM, HUP и USR1, которые мы сейчас опишем.

    Для отправки сигнала вводим следующую команду:

    kill -TERM `cat /usr/local/apache/logs/httpd.pid` или kill -TERM `cat /var/run/httpd.pid` Вы можите прочитать о результатах выхода: tail -f /usr/local/apache/logs/error_log Измените эти примеры под Ваши ServerRoot и PidFile настройки.

    Для Apache 1.3 мы предоставляем сценарий называемый apachectl который может быть использован для старта, остановки и перезапуска Apache. Возможно он будет нуждаться в небольшой настройке для Вашей ОС, смотрите комментарии вверху сценария.

    Сигнал TERM: остановить сейчас

    Отправка сигнала TERM родительскому процессу приведет к немедленной остановке всех его дочерних процессов. Возможно это потребует несколько секунд. Затем родительский процесс самостоятельно выходит. Все запросы, которые выполнялись уничтожаются, и никакие новые запросы не принимаются.

    Сигнал HUP: перезапустить сейчас

    Отправка сигнала HUP радительскому процессу уничтожает все дочерние процессы как сигнал TERM но сам родительский процесс не выходит. Перечитывается конфигурационный файл, и переоткрывает некоторые лог-файлы. Затем порождаются новые дочерние процессы и продолжается обработка хитов.

    Пользователи status module заметят что сервер сбрасывает статистику в ноль когда получает сигнал HUP.

    Примечание: Если у Вашего конфигурационного файла имеются ошибки, тогда при перезапуске Вашего родительского процесса он не будет перезапущен и выйдет с ошибкой. Смотри ниже методы избавиться от этого.

    Сигнал USR1: мягкий перезапуск

    Примечание: в предыдущем релизе 1.2b9 этот сигнал неустойчивый и не должен использоваться вообще.

    Сигнал USR1 вызывает родительский процесс для проверки дочерних процессов на предмет выхода после корректного завершения запроса (или выхода сразу же если никакие запросы сейчас не обрабатываются). Родительский процесс перечитывает конфигурационные файлы и открывает по новой лог-файлы. Поскольку каждый дочерний процесс уничтожен, родительский процесс создает новое поколение дочерних процессов, которые сразу начинают обрабатывать новые запросы.

    Код обеспечит настройки MaxClients, MinSpareServers и MaxSpareServers. Кроме этого, важно значение StartServers потому, что: если после одной секунды StartServers не запустил ни одного дочернего процесса, тогда создается процесс достаточный для слабой работы. Т.е. код имея то количество запущенных дочерних процессов, распределяет по ним существующую нагрузку.

    Пользователи status module заметят, что статистика сервера не принимает значение ноль, при вызове сигнала USR1. Код был написан для минимизации времени за, которое сервер неспособен принять новые запросы (эти запросы будут стоять в очереди ОС и не будут потеряны) и сигнал сохранит Ваши настройки. Чтобы это могло осуществляться необходимо иметь scoreboard (таблицу состояния) используя записи в ней, для отслеживания состояний дочерних процессов.

    status module также используется для G индикации тех дочерних процессов, которые все еще обрабатывают запросы начатые до процесса мягкого перезапуска.

    В настоящее время нет никакого способы записывать в лог-файл все происходящее, чтобы знать, что все дочерние процессы записанные в лог-файл до перезагрузки были завершенные. Мы предлогаем Вам использовать нужную задержку после отправки сигнала USR1 до того как сделаете что-нибудь со страными логами. Например: большинство хитов закончатся менее чем через 10 минут при использовании низкой полосы пропускания, тогда Вы можите подождать 15 минут до того как, что-то сделаете со своими логами.

    Примечание: Если Ваш конфигурационный файл содержит ошибки Ваш родительский процесс не будет перезапущен и Вы получите сообщение об ошибке. А также оставит дочерние процессы запущенными. (Эти дочерние процессы при "мягком завершении" обработывают до конца последний запрос.) Это вызовет проблемы, если вы попытаетесь перезапустить сервер -- он не сможет связать прослушиваемые порты. До начала перезагрузки проверьте синтаксис конфигурационного файла с командным аргументом -t (смотри httpd ). Это не дает гарантию, что сервер будет перезапущен корректно. Для проверки семантики (понимания символов) конфигурационных файлов, а также синтаксиса, Вы можите запустить httpd как не пользователь root. Если ошибок нет, будет попытка открыть сокеты и лог-файлы и будет потерплена неудача, потому, что это не пользователь root (или потому, что запущенные httpd заняли порты). Если неудача по другой причине, есть смысл проверить конфигурационный файл на ошибки и устранитть их до попытки "мягкого" перезапуска.

    Приложение: сигналы и signals and race conditions

    Prior to Apache 1.2b9 there were several race conditions involving the restart and die signals (a simple description of race condition is: a time-sensitive problem, as in if something happens at just the wrong time it won't behave as expected). For those architectures that have the "right" feature set we have eliminated as many as we can. But it should be noted that there still do exist race conditions on certain architectures.

    Architectures that use an on disk ScoreBoardFile have the potential to corrupt their scoreboards. This can result in the "bind: Address already in use" (after HUP) or "long lost child came home!" (after USR1). The former is a fatal error, while the latter just causes the server to lose a scoreboard slot. So it might be advisable to use graceful restarts, with an occasional hard restart. These problems are very difficult to work around, but fortunately most architectures do not require a scoreboard file. See the ScoreBoardFile documentation for a architecture uses it.

    NEXT and MACHTEN (68k only) have small race conditions which can cause a restart/die signal to be lost, but should not cause the server to do anything otherwise problematic.

    All architectures have a small race condition in each child involving the second and subsequent requests on a persistent HTTP connection (KeepAlive). It may exit after reading the request line but before reading any of the request headers. There is a fix that was discovered too late to make 1.2. In theory this isn't an issue because the KeepAlive client has to expect these events because of network latencies and server timeouts. In practice it doesn't seem to affect anything either -- in a test case the server was restarted twenty times per second and clients successfully browsed the site without getting broken images or empty documents.

    Apache HTTP Server

    Hosted by uCoz

    kimih-2.narod.ru