Проблема переключения между openresty и nginx

Я пытаюсь переключаться между nginx и openresty с помощью php с помощью exec.

Я использую это, чтобы переключиться на openresty, exec('/bin/systemctl stop nginx ; /usr/local/openresty/nginx/sbin/nginx -p /usr/local/openresty/nginx');

и этот exec('/usr/local/openresty/nginx/sbin/nginx -s stop ; /bin/systemctl start nginx'); переключиться на nginx.

Оба работают из ssh, однако из php не могу запустить nginx. Этот /bin/systemctl start nginx не выполняется. Вместо этого я попытался выполнить код из .sh файлов, но это не сработало.


person Dan Bray    schedule 25.01.2019    source источник
comment
Привет, прежде всего, для запуска этих служб потребуются привилегии, особенно им нужен привилегированный порт (который может быть открыт только пользователем root). Во-вторых, можете сказать, какой дистрибутив вы используете? Может быть несколько проблем, таких как apparmor или SELinux. Можно ли получить ваш php-код, который меняет сервис? Служба изменена, переведена в фоновый режим и отключена от сеанса?   -  person Alex Baranowski    schedule 28.01.2019
comment
@AlexBaranowski Я использую Centos 7, а php работает с правами root.   -  person Dan Bray    schedule 28.01.2019
comment
Можете ли вы попробовать следующий трюк. exec('/usr/bin/nohup $(sleep 2; /usr/local/openresty/nginx/sbin/nginx -s stop ; /bin/systemctl start nginx) &'); . Это должно сделать подоболочку, которая отсоединяется от nginx.   -  person Alex Baranowski    schedule 28.01.2019
comment
Я думаю, что это похоже на Как запустить и остановить PHP dev с помощью exec().   -  person Mohit Rathore    schedule 28.01.2019


Ответы (2)


попробуйте использовать

exec('/usr/local/openresty/nginx/sbin/nginx -s stop && /bin/systemctl start nginx');
person Yasii    schedule 03.02.2019

Я заработал, используя это, чтобы переключиться на openresty:

shell_exec('/bin/systemctl stop nginx; /usr/local/openresty/nginx/sbin/nginx -p /usr/local/openresty/nginx');

и это, чтобы переключиться на nginx:

shell_exec('/usr/local/openresty/nginx/sbin/nginx -s stop; /bin/systemctl restart nginx');
person Dan Bray    schedule 09.02.2019