Ugacomp

How to resolve Apache’s “Address already in use” error?

Where necessary, you may need to have access to a VPS server so you can follow how to implement the steps in this article.  You can get a cheaper VPS Server from Contabo with 4vCPU cores, 8GM RAM, and 32TB Bandwidth for less than $5.50 per month. Get this deal here now

Table of Contents

Cloud VPS S

$5.50 Monthly
  • 4 vCPU Cores | 8GB RAM

CLOUD VPS M

$15.50 Monthly
  • 6 vCPU Cores | 16GB RAM

CLOUD VPS L

$17.50 Monthly
  • 8 vCPU Cores | 24GB RAM

This error occurs when Apache attempts to start, but another process or instance is already using the same port or address that Apache is configured to listen on. In this article, we will explore the various causes of this error and provide detailed steps to resolve it.

Understanding the Error

When you try to start Apache and encounter the “Address already in use” error, it means that the port (usually port 80 for HTTP) or IP address that Apache is configured to listen on is already being used by another process. This can happen due to several reasons, such as another instance of Apache running, a different web server using the same port, or a lingering process that has not released the port properly.

The first step in resolving this error is to identify the process that is using the conflicting port. You can use command-line tools like netstat or lsof to find out which process is bound to the port.

Using the netstat command

The following netstat command will list all active connections and listening ports, along with the process ID (PID) and process name associated with each connection or port.

netstat -aon

If you want to filter the results to only show listening ports, you can use the following command:

netstat -an | findstr LISTEN

To further filter the results to only show listening ports on a specific port number, use the following command:

netstat -an | findstr LISTEN | findstr [port_number]

For example, to find all processes bound to port 80, which Apache uses, you would use the following command:

netstat -an | findstr LISTEN | findstr 80

The output of the command will show you the PID and process name for each process bound to the specified port number.

C:\> netstat -an | findstr LISTEN | findstr 80

  TCP    0.0.0.0:80           0.0.0.0:0              LISTENING       499790

This output shows that the process with PID 499790 is bound to port 80. You can use this information to troubleshoot any problems you may be having with processes bound to specific ports.

Kill the undesirable running Process

If the conflicting process is something you can stop, such as another instance of Apache or a different web server, you can stop it using system commands. For example, on Unix-based systems, you can use the kill command to stop a specific process. For example, the following command would terminate an arbitrary process with PID 499790:

taskkill /pid 499790 /f

Using fuser tool

Sometimes, even after stopping a process, it might not release the port immediately. In such cases, you can use tools like fuser or ss to check for lingering processes and kill them. For example, you can use fuser to list all processes that are listening on any port:

fuser -n tcp

The output of the above command will look as follows;

# List all processes that are listening on port 80
$ fuser -n tcp 80
USER       PID ACCESS COMMAND
apache     2345 F.... httpd

# List all processes that are listening on any port
$ fuser -n tcp
USER       PID ACCESS COMMAND
apache     2345 F.... httpd
ssh        1234 F.... sshd

To use fuser to kill processes on port 80, you can use the following command:

fuser -k -v 80

This will kill all processes that are using port 80, and will also display the process IDs of the killed processes.

Here is an example of how to use the command:

$ fuser -k -v 80
Killed process 1234 (httpd)
Killed process 5678 (nginx)

You can also use fuser to kill processes on a specific IP address. For example, to kill all processes that are using port 80 on the IP address 192.168.1.100, you would use the following command:

fuser -k -v 192.168.1.100:80

Safety guidelines:

  • Be careful when using fuser to kill processes. If you kill the wrong process, you could cause your system to crash.
  • It is generally best to use fuser to kill processes that you know are no longer needed.
  • If you are unsure whether or not a process is needed, it is best to consult with a system administrator.

RECOMMENDED READING: How to kill processes in Linux Systems using the terminal

Changing Apache’s Configuration

If you think there is already another process running on the standard Apache port, you can always assign your web server with a different port number which it uses for incoming and outgoing traffic requests. You will need to open Apache’s configuration file (usually located at /etc/apache2/apache2.conf or /etc/httpd/conf/httpd.conf) in a text editor.

Then you will have to search for the line that starts with Listen followed by the port number (e.g., Listen 80). Change this port number to an available port, such as 8080 (Listen 8080). For example, the default listening port for Apache would be set to 80 as shown below:

Listen 80

But if you think port 80 is already being used by another service or process, then you can change this in the Apache configuration file and set it to port 8080 as shown below;

Listen 8080

Save the configuration file and restart Apache.

RECOMMENDED READING:

Firewall and Security Software

Ensure that your firewall or security software is not blocking the Apache port. Adjust firewall settings to allow traffic on the necessary ports.

RECOMMENDED READING: How to configure iptables to secure Apache server on Ubuntu

Conclusion

Resolving the Apache “Address already in use” error involves identifying the conflicting process, stopping it if necessary, and reconfiguring Apache to use an available port. By following the steps outlined in this article, you can effectively troubleshoot and resolve this common issue, ensuring that your Apache web server operates smoothly without encountering port conflicts. Remember to always back up your configuration files before making any changes to avoid unintended complications.

Hire us to handle what you want

Hire us through our Fiverr Profile and leave all the complicated & technical stuff to us. Here are some of the things we can do for you:

  • Website migration, troubleshooting, and maintenance.
  • Server & application deployment, scaling, troubleshooting, and maintenance
  • Deployment of Kubernetes, Docker, Cloudron, Ant Media, Apache, Nginx,  OpenVPN, cPanel, WHMCS, WordPress, and more
  • Everything you need on AWS, IBM Cloud, GCP, Azure, Oracle Cloud, Alibaba Cloud, Linode, Contabo, DigitalOcean, Ionos, Vultr, GoDaddy, HostGator, Namecheap, DreamHost, and more.
 

We will design, configure, deploy, or troubleshoot anything you want. Starting from $10, we will get your job done in the shortest time possible. Your payment is safe with Fiverr as we will only be paid once your project is completed.