Apache nenastartuje: could not bind to address 0.0.0.0:80

Poradna při řešení nejrůznějších problémů spojených s provozem virtuálních serverů.
Zamčeno
V0174
Příspěvky: 3
Registrován: pát 04. led 2013 19:58:32

Apache nenastartuje: could not bind to address 0.0.0.0:80

Příspěvek od V0174 »

Zdravím,
mám u vás virtuální server s Apache serverem.
Chtěl jsem nastavit virtuální servery a měnil jsem nastavení hosts a httpd.conf. Server ale přestal fungovat a nefunguje ani když jsem změnil nastavení zpátky, zkoušel restartovat Apache i server.
Hledal jsem na Internetu, tento problém byl většinou způsobený jinou službou běžící na portu 80, já však žádnou takovou nenašel.
Je možné, že je to způsobeno aktualizacemi, byl to nejspíš první restart Apache po apt-get upgrade.
Web samozřejmě nefunguje.
Výpisy:

Kód: Vybrat vše

localhost:/etc/apache2# apache2ctl graceful
httpd not running, trying to start
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'graceful' failed.
The Apache error log may have more information.

Kód: Vybrat vše

localhost:/etc/apache2# apache2ctl status

Looking up localhost
Making HTTP connection to localhost
Alert!: Unable to connect to remote host.

lynx: Can't access startfile http://localhost/server-status
'www-browser -dump http://localhost:80/server-status' failed.
Maybe you need to install a package providing www-browser or you
need to adjust the APACHE_LYNX variable in /etc/apache2/envvars
localhost:/etc/apache2#

Kód: Vybrat vše

localhost:/etc/apache2# apache2ctl configtest
Syntax OK
localhost:/etc/apache2#

Kód: Vybrat vše

localhost:/etc/apache2# netstat | grep :80
localhost:/etc/apache2# netstat | grep http
localhost:/etc/apache2#

Kód: Vybrat vše

localhost:/etc/apache2# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
# Auto-generated hostname. Please do not remove this comment.
77.93.202.125 jarysnet

Kód: Vybrat vše

localhost:/etc/apache2# cat /etc/apache2/httpd.conf
# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual host requests on all IP addresses
#NameVirtualHost *:80

Kód: Vybrat vše

localhost:/etc/apache2# cat /var/log/apache2/error.log
[...]
[Fri Jan 04 22:25:18 2013] [notice] Apache/2.2.16 (Debian) PHP/5.3.3-7+squeeze3 with Suhosin-Patch configured -- resuming normal operations
[Fri Jan 04 22:26:42 2013] [notice] Graceful restart requested, doing restart
[Fri Jan 04 22:26:42 2013] [error] (9)Bad file descriptor: apr_socket_accept: (client socket)
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Nějaké nápady? Není až takový problém začít znovu od nuly, je to pokusný server, ale třeba je to jen nějaká maličkost.
cz-helper
Příspěvky: 96
Registrován: čtv 20. pro 2012 12:22:30

Re: Apache nenastartuje: could not bind to address 0.0.0.0:8

Příspěvek od cz-helper »

V0174 píše:

Kód: Vybrat vše

localhost:/etc/apache2# netstat | grep :80
localhost:/etc/apache2# netstat | grep http
Nějaké nápady? Není až takový problém začít znovu od nuly, je to pokusný server, ale třeba je to jen nějaká maličkost.
Zrejme zustal viset daemon, jen se odstranil pid soubor... V postupu vidim jeden detail. Ve vysezminemen byste nevidel odpoved, ani kdyby tam byla (ona tam je ;) ). Problem je, ze tato syntaxe vypise jen otevrene spojeni ne stavy "LISTEN", coz je prave to, co nas zajima.

Je potreba zadat:

Kód: Vybrat vše

netstat -tapn| grep :80
  • -t
  • TCP spojeni
  • -a
  • [b]vsechny, tedy i LISTEN[/b]
  • -p
  • jaka aplikace (vcetne pid procesu)
  • -n
  • neprevadi cisla na nazvy sluzeb (necha cislo portu) ani nehleda IP adresy v DNS
pripadne

Kód: Vybrat vše

netstat -tlpn| grep :80
  • -t
  • TCP spojeni
  • -l
  • [b]pouze stav LISTEN[/b]
  • -p
  • jaka aplikace (vcetne pid procesu)
  • -n
  • neprevadi cisla na nazvy sluzeb (necha cislo portu) ani nehleda IP adresy v DNS
Zvolte si variantu, ktera se Vam libi vice. Tak jako tak by mel "vybublat" ten sotek, ktery nam "blokuje" port 80. Je potreba mit opravneni root, jinak nebude fungovat parametr "-p".

Vystup muze vypada napr.:

Kód: Vybrat vše

tcp        0      0 :::80                   :::*                    LISTEN      1689/httpd2-prefork
pak uz staci jen

Kód: Vybrat vše

kill 1689
(pid podle vzoroveho vystupu ;) ). Pripadne

Kód: Vybrat vše

kill -9 1689
kdyby se mu moc nechtelo... Pak by jiz nemelo stat nic v ceste v "nastartovani" sluzby.
cz-helper
Příspěvky: 96
Registrován: čtv 20. pro 2012 12:22:30

Re: Apache nenastartuje: could not bind to address 0.0.0.0:8

Příspěvek od cz-helper »

pripadne me napada jeste moznost

Kód: Vybrat vše

netstat -tuapn |grep http
pak by melo vyjet vse (TCP i UDP; jakykoli stav - LISTEN, CONNECTED, ...) pricemz se profiltruje vse, co ma v nazvu programu http (nebot vse ostatni se necha v cisle - port, adresa).

Pak jiz staci ten "kill" a nastartovani sluzby ;-) .
V0174
Příspěvky: 3
Registrován: pát 04. led 2013 19:58:32

Re: Apache nenastartuje: could not bind to address 0.0.0.0:8

Příspěvek od V0174 »

Díky za rychlou odpověď!
S tím netstatem se omlouvám, zkoušel jsem předtím i to co píšete a fakt tam nic naslouchajícího není :( Při aktuálním pokusu bez úprav:

Kód: Vybrat vše

localhost:~# netstat -tlpn| grep :80
localhost:~# netstat -tuapn |grep http
localhost:~# apache2ctl graceful
httpd not running, trying to start
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'graceful' failed.
The Apache error log may have more information.
localhost:~#
Co je kde na fórech za řešení, tak se týká právě toho, že je port 80 už "obsazený", jak píšete i vy.

Pro jistotu - netstat jinak funguje :)

Kód: Vybrat vše

localhost:~# netstat -tlpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1357/portmap
tcp        0      0 77.93.202.185:53        0.0.0.0:*               LISTEN      8164/named
tcp        0      0 192.168.0.64:53         0.0.0.0:*               LISTEN      8164/named
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      8164/named
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      9771/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1821/master
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1642/mysqld
tcp6       0      0 :::53                   :::*                    LISTEN      8164/named
tcp6       0      0 :::22                   :::*                    LISTEN      9771/sshd
V Error logu Apache nic nového není. Server jsem restartoval už dvakrát.

EDIT: Napadá mě, jestli se to nemůže nějak "mlátit" s Tomcatem, předtím to ale fungovalo oboje, Tomcat běžel na portu 8080 a aktuálně pokud vím není ani spuštěný.
cz-helper
Příspěvky: 96
Registrován: čtv 20. pro 2012 12:22:30

Re: Apache nenastartuje: could not bind to address 0.0.0.0:8

Příspěvek od cz-helper »

Ta chyba rika jednoznacne, ze nemuze spustit daemona, protoze nema volny port, na kterem by ho pustil, nebot se mu zda, ze je obsazeno...

Zkuste jeste jeden prikaz (jako root):

Kód: Vybrat vše

lsof -i :80
Melo by to vypsat co otevrelo "soubor" v tomto pripade tedy sitove spojeni na port 80 (mohou tam byt i odchozi spojeni). Ve vypisu by mel byt (pokud neco vrati) ve druhem sloupci PID, ktery by melo jit pouzit pro kill...

Dejte vedet, jak jste pochodil.
cz-helper
Příspěvky: 96
Registrován: čtv 20. pro 2012 12:22:30

Re: Apache nenastartuje: could not bind to address 0.0.0.0:8

Příspěvek od cz-helper »

V0174 píše:

Kód: Vybrat vše

localhost:~# netstat -tlpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1357/portmap
Jeste koukam, ze mate RPC. Zkuste se podivat, ktere porty "okupuji" sluzby skrze RPC (opet jako root):

Kód: Vybrat vše

rpcinfo -p
Tam by teoreticky take neco mohlo sedet na portu 80 - pro jistotu ...
V0174
Příspěvky: 3
Registrován: pát 04. led 2013 19:58:32

Re: Apache nenastartuje: could not bind to address 0.0.0.0:8

Příspěvek od V0174 »

Bohužel, k ničemu jsem se nedobral:

Kód: Vybrat vše

localhost:~# lsof -i :80
localhost:~# rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
localhost:~# apache2ctl graceful
httpd not running, trying to start
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'graceful' failed.
The Apache error log may have more information.
Nicméně nakonec mi pomohl kamarád - problém se vyřešil zakomentováním řádku v /etc/apache2/httpd.conf:

Kód: Vybrat vše

#Listen 80
Prý to mohlo kolidovat s /etc/apache2/sites-enabled/000-default (o jehož existenci jsem neměl ani tušení), kde je:

Kód: Vybrat vše

<VirtualHost *:80>
Každopádně díky za rady, snad to někomu v budoucnu pomůže.
cz-helper
Příspěvky: 96
Registrován: čtv 20. pro 2012 12:22:30

Re: Apache nenastartuje: could not bind to address 0.0.0.0:8

Příspěvek od cz-helper »

V0174 píše:Nicméně nakonec mi pomohl kamarád - problém se vyřešil zakomentováním řádku v /etc/apache2/httpd.conf:

Kód: Vybrat vše

#Listen 80
Prý to mohlo kolidovat s /etc/apache2/sites-enabled/000-default (o jehož existenci jsem neměl ani tušení), kde je:

Kód: Vybrat vše

<VirtualHost *:80>
Každopádně díky za rady, snad to někomu v budoucnu pomůže.
Jsem rad, ze se vyresil problem. Nicmene zkuste se podivat co kde je nastaveno/zmeneno. Toto by nemelo primarne kolidovat - je takto vyreseno nekolik hostingu (ruzne "DNS" adresy) na jedne IP adrese. Viz. priklady definic http://httpd.apache.org/docs/2.4/vhosts/examples.html.

Co me napada, jestli pri uprave konfiguracnich souboru nebylo neco nevedomky "zdvojeno" a tim padem by bojoval sam se sebou (coz zrejme nastalo)... Vychozi ("vzorova") konfigurace tyto vsechny veci obsahuje a pritom nekoliduje ;-).
Zamčeno