The Best Way to Restart an Apache Web Server

Restart Apache on Ubuntu, RedHat, Gentoo and other Linux Distros

If you are hosting your website on an open source platform, it is very likely that this platform is Apache. If this is the case, and you are hosting with an Apache server, then when you're working on editing the Apache httpd.conf file or another configuration file (like adding a new virtual host), you will need to restart Apache so that your changes will take effect. This may seem scary, but luckily this is very easy to do. In fact, you can do so in about one minute (not counting the time it will take to read this article to get the step by step instructions).

Getting Started

To restart your Linux Apache web server, the best way is to use the init.d command. This command is available on many distributions of Linux including Red Hat, Ubuntu and Gentoo. Here's how you would do this:

  1. Login to your web server using SSH or telnet and make sure that your system includes the init.d command. It is usually found in the /etc directory, so list that directory: ls /etc/i*
  2. If your server uses init.d, you will get a listing of the initialization files in that specified folder. Look for apache or apache2 in that folder next. If you have init.d, but do not have an Apache initialization file, go to the section of this article with the heading that reads “Restarting Your Server Without Init.d”, otherwise you may continue.
  3. If you have init.d and an Apache initialization file, then you can restart Apache using this command: /etc/init.d/apache2 reload You may need to sudo in as the root user to run this command.

The Reload Option

Using the reload option is the best way to restart your Apache server, as it keeps the server running (the process isn't killed and restarted). Instead, it just reloads the httpd.conf file, which is usually all you want to do in this instance anyway. 

If the reload option does not work for you, you can also try to use the following commands instead:

  • /etc/init.d/apache2 restart - this command kills the server process and then restarts it
  • /etc/init.d/apache2 stop - this command kills the server process
  • /etc/init.d/apache2 start - this command starts the server (and will throw an error message if the server is already running)

Restarting Your Server Without Init.d

OK, so this is where we asked you skip to if your server doesn't have init.d . If this is you, don't despair, you can still restart your server. You just have to do it manually with the command apachectl. Here are the steps for this scenario:

  1. Login to your web server machine using SSH or telnet
  2. Run the apache control program: apachectl graceful You may need to sudo in as the root user to run this command.

The apachectl graceful command tells Apache that you want to restart the server gracefully without aborting any open connections. It automatically checks the configuration files before initiating the restart to make sure Apache doesn't die.

If apachectl graceful doesn't restart your server, there are a few other things you can try.

  • apachectl restart to restart the server. If the server is not running it is started. This command also runs a configuration test to make sure Apache won't die when it restarts.
  • apachectl stop to stop the Apache server
  • apachectl start to start the Apache server (will throw an error message if Apache is running)
  • apachectl configtest to test the configuration file syntax.

Tips for Restarting Your Apache Server:

  • init.d reload and apachectl graceful both reload the configuration files and gracefully restart the web server. Any current connections are allowed to complete. This is the preferred approach and it should be what you try first.
  • init.d restart and apachectl restart reloads the configuration files and restarts. Any current connections are terminated immediately.
  • If the server isn't running, these commands will start it up.
  • If neither of these commands work, you should turn off your Apache server (taking it down for a short time) with the init.d stop or apachectl stop command, wait at least 10 seconds and then run the init.d start start apachectl start
  • If that doesn't work, you should run a check on your configuration files to make sure there isn't a problem with them by running apachectl graceful