11

(Strangley) My installed Apache2 does not start up when logging in to Linux Mint.

Running this command gets it going:

sudo service apache2 start

How should I attempt to start up this service upon each login?

  • You could place that command in ~/.xinitrc, which will be run at startup. – n0pe Mar 8 '12 at 19:25
  • 2
    @MaxMackie On the contrary, ~/.xinitrc is run at login time, which isn't right. Apache needs to be started by root at boot time. – Gilles Mar 8 '12 at 23:23
  • @Gilles, right I forgot about that, thanks for correcting. However, why does apache need to be started at boot? Wouldn't login accomplish roughly the same thing? – n0pe Mar 8 '12 at 23:54
  • @MaxMackie Not if you don't log in immediately after boot, obviously. Also Apache doesn't run as you, so you'd have to grant it privileges. It should start at part of the boot scripts, and normally does. – Gilles Mar 8 '12 at 23:57
  • @Gilles right. Thanks for shedding light on that. – n0pe Mar 9 '12 at 0:32
12

Debian (Ubuntu/Linux Mint)

rcconf (CLI-GUI)

sudo apt-get install rcconf
sudo rcconf

update-rc.d

sudo update-rc.d -f apache2 add

or

sudo update-rc.d apache2 defaults

RedHat/Fedora/CentOS

chkconfig

sudo chkconfig --add apache2

or

sudo chkconfig -- level 35 apache2 on
  • Apache was already checked when I ran rcconf. – eoinoc Jun 24 '12 at 6:52
  • Running the update-rc.d command lead to an error: update-rc.d: warning: apache2 start runlevel arguments (none) do not match LSB Default-Start values (2 3 4 5). – eoinoc Jun 24 '12 at 6:53
  • Have you given update-rc.d apache2 defaults or update-rc.d -f apache2 add 3 5 – earthmeLon Jun 24 '12 at 20:35
  • 1
    Thanks, but neither worked. First resulted in an "already exists" warning, the second resulted in warning: apache2 start runlevel arguments (none) do not batch LSB default-Start values (2 3 4 5). – eoinoc Jun 27 '12 at 19:38
6

Since Mint is based on Ubuntu, and Ubuntu has switched to Upstart, the Upstart Cookbook has all of the info for having a service start on boot, or at any specified runlevel.

This site Gives a detailed cookbook for starting Apache at boot.

  • That page talks about placing a bash script in /etc/init.d/apache2. But that file is full of a much more complicated bash script already, which must have been placed there by Apache itself. – eoinoc Jun 24 '12 at 6:50
3

Another cause of the same problem is the priority of the apache links in rc[0-6].d. Mine were S90 and K09, and Apache wouldn't start at boot. Setting the priorities at their defaults, 20, worked for me. The existing links need to be removed first.

sudo update-rc.d -f apache2 remove
sudo update-rc.d apache2 defaults
2

At shutdown, I saw an error:

Syntax error on line 230 of /etc/apach2/apache.conf .... /etc/apache/sites-enables/mysite: No such file or directory

The thing was, mysite was symlinked to a file in my home folder.

That normally shouldn't be a problem, I thought.

But as far as I know, my home partition is encrypted. Therefore, I'm guessing that Apache could not read the virtual site file when it was loading. The file wasn't accessible until I type in my password.

A complex situation, and took months to work it out :)

0

A new answer updated in 2019:

sudo systemctl start httpd

sudo systemctl enable httpd

The systemctl command is a new tool to control the systemd system and service. This is the replacement of old SysV init system management. Most of modern Linux operating systems are using this new tool. If you are working with CentOS 7, Ubuntu 16.04 or later or Debian 9 system. They have opted systemd now.

The enabled service autostarts on system boot. This is the similar option for systemd than chkconfig for the SysV init.

  • 1
    You might consider flipping the order, so that it's enabled before you ask it to start. – Jeff Schaller Feb 25 at 1:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.