What to restart after editing rpilot62.ru?

Мадагаскар / Антананариву

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

В теории всё было совсем просто (в PHP полно команд запускающих внешние программы), однако, перезапустить Apache без администраторских прав, увы.

Я ошибочно полагал, что перезагрузить конфигурацию Apache из PHP могу таким кодом:

<?php

exec(“apache2ctl graceful”);

?>

или таким:

<?php

exec(“/etc/init.d/apache2 reload”);

?>

Вы получите сообщение вроде:

httpd not running, trying to start

failed!

Рабочее решение

Операционная система Debian/Etch, но на других дистрибутивах оно так же должно работать за исключением некоторых названий (может быть не apache2, а httpd).

Скрипт перезагрузки конфигурации выглядит так:

<?php
exec(‘echo “/usr/bin/sudo /etc/init.d/apache2 reload” | /usr/bin/at now’);
?>

Но не спешите пробовать, для этого в sudo необходимо прописать все эти разрешения.

В файл /etc/sudoers добавьте следующую строчку:

и закомментируйте эту строку:

Сверьтесь, что именно такое имя пользователя (www-data), от которого у вас работает Apache.

Затем в файле /etc/at.deny удалите строчку с этим же пользователем (www-data).

И если такого файла нет, то создайте /etc/at.allow и пропишите туда строчку www-data.

Я использовал скрипт cron (написанный на PHP, не выполненный с веб-сервера), чтобы проверить сервер на перезагрузке сервера.

Путеводитель по Антананариву

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

Самый простой способ — создать файл / tmp / RESTART_APACHE, который может создать PHP, и который проверяет cron-скрипт. Если cron-скрипт видит файл / tmp / RESTART_APACHE, то он делает правильный перезапуск Apache.

Использование cron-скрипта приведет к задержке (до 60 секунд, если вы запустите ее каждую минуту), но кроме того, она будет работать так, как вы хотите.

В зависимости от того, как вы собираетесь использовать это, это может сделать трюк.

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

EDIT: Пожалуйста, см. Комментарий Aaron H к этому сообщению. Я согласен с тем, что он говорит: вы действительно хотите быть осторожным, что возможность перезапуска вашего веб-сервера не является общедоступной услугой.

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

Обновление версии PHP на сервере.

23 Марта 2015

В данной статье мы расскажем, как обновить версию PHP на виртуальном или выделенном сервере ( VPS, VDS, DS ) под управлением самой популярной операционной системы для веб серверов, ОС CentOS.

Предостережения. Сразу хотим предупредить Вас, многие популярные движки требовательны к версиям PHP и набору модулей. Поэтому, перед обновлением PHP на сервере, проверьте совместимость Ваших CMS с новой версией PHP. Обычно эту информацию можно найти на официальных сайтах разработчиков. Некоторые модули могут быть недоступны на более новых версиях PHP. Например Zend Optimizer работает только с версиями php до 5.2, на версии PHP 5.3 используется его аналог, Zend Guard Loader. При этом, если скрипт закодирован с помощью Zend Optimizer, Zend Guard этот скрипт обработать не сможет.

Установка SSH клиента. Вам понадобится SSH доступ к серверу и SSH клиент. Если на Вашем ПК установлена операционная система Linux — SSH клиент Вам не нужен, можете использовать для подключения по SSH стандартный Linux терминал. Владельцам компьютеров с ОС Windows мы рекомендуем использовать SSH\Telnet клиент Putty. Данная программа бесплатна и проста в использовании.

Скачать последнюю версию с официального сайта можете по ссылке :

https://the.earth.li/~sgtatham/putty/latest/x86/putty.exe

Подключитесь к Вашему серверу по SSH от имени суперпользователя root или другого пользователя с аналогичными привилегиями. Проверка текущих версий. В первую очередь проверим текущую версию PHP и список модулей. Чтобы узнать версию PHP используйте команду :

php -v

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

php -m

Обновление PHP. Для обновления версии PHP, подключитесь к серверу по SSH и используйте следующую команду :

yum update php

Возможно Вам повезет, и yum сразу предложит Вам обновление до нужно версии PHP, но это вряд ли. Скорее всего Вы получите такой ответ :

«No packages marked for update»

Значит нужно добавить репозиторий.

Антананариву и Окрестности

Репозиторий — специальное удаленное хранилище, из которого будет установлен пакет. Рассмотрим процесс добавления репозитория и обновления PHP более подробно. Для обновления PHP используйте репозитории epel и remi. Эти репозитории проверенны годами верной работы администраторам виртуальных и выделенных серверов на Unix подобных системах. Из сторонних репозиториев устанавливать пакеты не рекомендуем. Выполнить установку репозитория epel можно такой командой :

yum install epel-release

Чтобы добавить репозиторий remi на CentOS 6 используйте следующие команды :

wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

sudo rpm -Uvh remi-release-6*.rpm

Для установки репозитория remi на CentOS 7 используйте такие команды :

wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

sudo rpm -Uvh remi-release-7*.rpm

Теперь можно обновить PHP. Обновите PHP до версии 5.4 с помощью команды :

yum update — -enablerepo=remi php

Если Вам нужно обновление до версии 5.5, используйте команду :

yum update —enablerepo=remi-php55 php

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

yum update —enablerepo=remi-php56 php

Для обновления до новой ветки PHP 7 используйте такую команду :

yum update —enablerepo=remi-php70

После обновления, обязательно перезагрузите веб сервер.

Для этого используйте команду :

service httpd restart

Если на Вашем сервере нет httpd — скорее всего работает связка Nginx + PHP-FPM, тогда перезагрузите PHP-FPM :

service php-fpm restart

Проверьте версию PHP с помощью команды :

php -v

Также рекомендуем сразу установить пакет популярных расширений PHP. Используйте для этого одну из команд (в зависимости от версии PHP) :

yum install —enablerepo=remi php-{mysql,mcrypt,mbstring,gd,xml}

yum update —enablerepo=remi-php55 php-{mysql,mcrypt,mbstring,gd,xml}

yum update —enablerepo=remi-php56 php-{mysql,mcrypt,mbstring,gd,xml}

yum update —enablerepo=remi-php70 php-{mysql,mcrypt,mbstring,gd,xml}

После установки обновлений,еще раз перезагрузите веб сервер. Для этого используйте команду :

service httpd restart

Если на Вашем сервере нет httpd — скорее всего работает связка Nginx + PHP-FPM, тогда перезагрузите PHP-FPM :

service php-fpm restart

Если возникнут какие-либо проблемы — откройте тикет из личного кабинета, и наши специалисты обязательно Вам помогут.

ХостингVPSВыделенные серверы

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

Закрыть меню