0

I downloaded Apache HTTP server, compiled it and installed it in a unix box.

I tried to start my Apache HTTP server in unix but got the below error so I thought of changing the port.

(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down 

I tried to change the listening port for my Apache HTTP server in UNIX by modifying the httpd.conf file (present under conf directory) but this doesn't seem to have any effect when I restart my server.

# # Listen: Allows you to bind Apache to specific IP addresses and/or # ports, instead of the default. See also the <VirtualHost> # directive. # # Change this to Listen on specific IP addresses as shown below to # prevent Apache from glomming onto all bound IP addresses (0.0.0.0) # #Listen 12.34.56.78:80 Listen 82 

I tried changing the port number to a value greater than 1024 (non privileged port numbers) but I am getting the same error as above(error still list port 80).

I am using httpd for starting the server. I even tried starting using the below command but I am still getting the same error..

apachectl -f ./conf/httpd.conf

Am I missing something?

2 Answers 2

3

When you say you downloaded Apache and installed it on a "UNIX" box, what Operating System are you actually running? Are you running Linux? Solaris? FreeBSD? OpenBSD? Etc.?

Further, whatever system you are running should likely have Apache as a package to install from its package management utility.

Also, apachectl shouldn't likely take a configuration parameter. Can you try instead running...

# httpd -f ./conf/httpd.conf 

Probably better if you use the full path and not relative just to make sure nothing is going wrong. Your best bet, though, is tell us what OS you are using and maybe get this installed with a more supportable way that has documentation behind it.

1
  • apachectl has a pass through mode so it just passes what it doesn't understand to httpd. Commented Mar 22, 2013 at 14:30
2

Check that you're actually using the httpd.conf file that you're specifying on the command line, on the Centos System I have to hand specifying ./conf/httpd.conf still uses the /etc/httpd/conf/httpd.conf file (relative paths appear to be rooted at /etc/httpd).

Check also that you're not running up against SELinux which can be configured to only allow httpd to bind to certain ports, as root you can get the list with

semanage -port -l | grep http_port_t http_port_t tcp 80, 443, 488, 8008, 8009, 8443 

You can add your own port using

 semanage port -a -t http_port_t -p tcp 1025 

as root but if you don't have root access you'll have to choose one from the list above.

3
  • Its throwing the same error even if I try to bind the port with some value greater than 1024... Commented Mar 21, 2013 at 18:36
  • @Learner: oops missed that bit, updates my answer with other possibilities, Commented Mar 21, 2013 at 19:05
  • Using absolute path did the trick... Commented Mar 22, 2013 at 19:03

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.