Knowledgebase: Dedicated Server Guide
Cannot Start apache No space left on device
Posted by on 06 October 2008 11:18 PM
Sometimes Apache refuses to start. When this happens sweat instantly appears on your forehead because without apache running none of your website's are available. Here are some things you can try based on problems we've come across. Hitting the reset switch isn't the solution and not something you should do when you come across a problem like this.

How to start apache

The correct way to start, stop or restart apache is by using the apachectl program
apachectl graceful
apachectl stop
apachectl restart

Checking Apache configuration

Apachectl can also be used to check the apache configuration with command
apachectl configtest
This will return warnings and errors.

Check the Apache error logs

Take a look at the error logs (usually "/var/log/httpd/") and see if you can find what's causing the problem.

Or run tail -20 /usr/local/apache/logs/error_log

(98)Address already in use: make_sock: could not bind to address
no listening sockets available, shutting down

This is caused by one or more processes running on the 443 (secure socket) port. To fix this problem first find the process ID's that are running on port 443:
fuser 443/tcp
This will return results which look something like:
443/tcp: xxxx yyyy zzzz <- processes using 443
Where xxxx yyyy & zzzz are numbers for the process ID's. Now kill the processes with:
Kill -9 xxxx yyyy & zzzz

Apache will not start. Error log contains:
[emerg] (28)No space left on device: Couldn't create accept lock

[crit] (28)No space left on device: mod_rewrite: could not create rewrite_log_lock Configuration Failed
Checking your disk shows that you have plenty of space. The problem is that apache didn't shut down properly, and it's left myriads of semaphore-arrays left, owned by my apache-user. Run the following commands
ipcs -s | grep nobody
Removing these semaphores immediately should solve the problem and allow apache to start.
ipcs -s | grep nobody | perl -e 'while (<STDIN>) { @a=split(/\s+/); print `ipcrm sem $a[1]`}'

(346 vote(s))
This article was helpful
This article was not helpful