2

I'm managing Nginx with a custom web app (python) running over apache in a Debian 10 system.

It works fine, I can restart, reload, stop, check syntax of nginx without issue.

The problem arise when Nginx is started via custom web app (apache) and then if I restart/stop the apache via "service apache2 restart" or "/etc/init.d/apache2 restart", Nginx get stopped too.

the way that I start nginx is with python subprocess:

subprocess.Popen(['sudo', '/opt/waf/nginx/sbin/nginx'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)

this works, but if I do a manual restart/stop of apache, the nginx service is stopped too. I tried changing the nginx.conf from "user www-data" to "user root", to see if changing the user this can be solved, but no, the problem persist.

inspecting with ps aux --forest with "user www-data" in nginx.conf

root       2637  0.0  0.2  20312  7984 ?        Ss   15:20   0:00 /usr/sbin/apache2 -k start
www-data   2638  2.4  1.9 461320 59732 ?        Sl   15:20   0:09  \_ /usr/sbin/apache2 -k start
www-data   2639  0.0  0.9 2014312 28572 ?       Sl   15:20   0:00  \_ /usr/sbin/apache2 -k start
www-data   2640  0.0  0.9 2014328 28528 ?       Sl   15:20   0:00  \_ /usr/sbin/apache2 -k start
root       3322  0.0  1.9 190476 59156 ?        Ss   15:27   0:00 nginx: master process /opt/waf/nginx/sbin/nginx
www-data   3323  0.0  2.8 212248 85172 ?        S    15:27   0:00  \_ nginx: worker process
www-data   3324  0.0  2.8 212248 85232 ?        S    15:27   0:00  \_ nginx: worker process
www-data   3325  0.0  2.8 212248 85172 ?        S    15:27   0:00  \_ nginx: worker process
www-data   3326  0.5  2.8 212248 85172 ?        S    15:27   0:00  \_ nginx: worker process
www-data   3327  0.0  2.1 190556 64440 ?        S    15:27   0:00  \_ nginx: cache manager process
www-data   3328  0.0  2.1 190556 64440 ?        S    15:27   0:00  \_ nginx: cache loader process

inspecting with ps aux --forest with "user root" in nginx.conf

root       2637  0.0  0.2  20312  7984 ?        Ss   15:20   0:00 /usr/sbin/apache2 -k start
www-data   2638  5.2  1.5 455400 47264 ?        Sl   15:20   0:01  \_ /usr/sbin/apache2 -k start
www-data   2639  0.2  0.8 2014236 24608 ?       Sl   15:20   0:00  \_ /usr/sbin/apache2 -k start
www-data   2640  0.1  0.7 2014328 23160 ?       Sl   15:20   0:00  \_ /usr/sbin/apache2 -k start
root       2758  0.0  1.9 190476 59156 ?        Ss   15:20   0:00 nginx: master process /opt/waf/nginx/sbin/nginx
root       2759  0.0  2.8 212248 85232 ?        S    15:20   0:00  \_ nginx: worker process
root       2760  0.0  2.8 212248 85232 ?        S    15:20   0:00  \_ nginx: worker process
root       2761  0.0  2.8 212248 85232 ?        S    15:20   0:00  \_ nginx: worker process
root       2762  0.0  2.8 212248 85232 ?        S    15:20   0:00  \_ nginx: worker process
root       2763  0.0  2.1 190556 64352 ?        S    15:20   0:00  \_ nginx: cache manager process
root       2764  0.0  2.1 190556 64352 ?        S    15:20   0:00  \_ nginx: cache loader process

I don't know how to solve this issue, I need nginx started by the web app as totally independent process.

Any help is really appreciated.

Cheers.

chrigu
  • 21
  • 2

1 Answers1

0

I guess this should help for you question: Launch a completely independent process

I think there is great explanation of what are you tring to achieve with PIPEs.

Dawid Gacek
  • 544
  • 3
  • 19
  • Thanks @Dawid Gacek, I tried the recommendations of the suggested post but without luck. I tried piping the stdout, stderr to dev null, starting the nginx with an external script and appending "&" to keep the task in background and removing the PIPES. But I keep getting the same result, nginx starts ok, but if apache is restarted, nginx get stoped. Maybe I will have to do it with a cronjob who read a file and look for a value to start nginx and keep it separate from apache. – chrigu Jul 24 '20 at 16:06
  • Maybe you can create unit file so it's run as seperate service if you can move it out from script? – Dawid Gacek Jul 25 '20 at 18:19