Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you restart Apache with a (web) button click?

I'm playing around with my VM and the code I'm developing requires that I restart apache every time to capture the changes. I thought it would be nice to just have a bookmarklet, or link or button click I could run to do this. Any thoughts on how to accomplish this with PHP on a CentOS 5 dev VM?

like image 285
qodeninja Avatar asked Aug 25 '11 16:08

qodeninja


People also ask

What is command used to restart Apache?

Method 1: Restart Apache Server Using Systemctl Command The service should restart. The restart command can take several moments to complete, depending on the complexity of your server configuration. If you're running a large or complex server configuration, this can cause disruptions for users who rely on the server.

Do you need to restart Apache?

You might need to restart Apache® when you want changes that you make take effect, or when you need to bring Apache's resource use back to a normal range. However, sometimes Apache fails to restart. This article shows you how to check your configuration settings and restart Apache when it fails.


2 Answers

As Marc B said, you need root privs to be able to restart Apache. The best way to handle this, IMHO, is to give the user that Apache runs under access to restart Apache via the sudo command.

You'll want to edit your /etc/sudoers file and add lines similar to the following:

Cmnd_Alias      RESTART_APACHE = /sbin/service apache2 restart

www-data ALL=NOPASSWD: RESTART_APACHE

You may need nobody instead of www-data, it depends on the user which Apache runs under. On Debian, Apache typically runs under user www-data, whereas under Red Hat, often Apache runs under user nobody. Also, the /sbin/service apache2 restart may need to be /sbin/service apache restart or maybe /sbin/service httpd restart. All depends on your system's configuration.

Once that's done, in PHP you can use the code:

exec('/sbin/service apache2 restart');

(Obviously changing that if the command to restart Apache differs on your server.)

Please note: this could very well be considered a security risk! If you do this, you fully trust the sudo binary, the service binary, and your system to obey the rules and not let an Apache/PHP process get a root shell. I highly recommend asking on http://serverfault.com for the implications of what you're doing here.

like image 117
Josh Avatar answered Sep 22 '22 01:09

Josh


<?php echo shell_exec('service httpd restart &'); ?>

You might have permissions problems with such a script attempting to do this though. It sounds like you're in a full-on dev environment though, so it shouldn't matter for you to give elevated privileges to it.

like image 22
Rogus Avatar answered Sep 22 '22 01:09

Rogus