No se puede iniciar Apache en Ubuntu 12.10: no hay enchufes de escucha disponibles

9

No puedo iniciar apache2 instalado usando apt-get. Recibo el mismo error en 2 instalaciones separadas de Ubuntu 12.10, una en mi PC de escritorio y la otra en VirtualBox:

michal@michaltest:~$ sudo service apache2 start
 * Starting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
           [fail]

lsof dice:

michal@michaltest:/var/log/apache2$ sudo lsof -i :80
COMMAND     PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ubuntu-ge  2074 michal   11u  IPv4  23978      0t0  TCP michaltest.local:47578->mulberry.canonical.com:http (CLOSE_WAIT)
firefox   25194 michal   71u  IPv4  42477      0t0  TCP michaltest.local:59793->69.59.197.29:http (ESTABLISHED)
firefox   25194 michal   76u  IPv4  41834      0t0  TCP michaltest.local:59698->69.59.197.29:http (ESTABLISHED)
gvfsd-htt 25320 michal   12u  IPv4  42568      0t0  TCP michaltest.local:56203->lb260.amst.cotendo.net:http (CLOSE_WAIT)

netstat dice:

michal@michaltest:/var/log/apache2$ sudo netstat -lnp | grep '80'
unix  2      [ ACC ]     STREAM     LISTENING     8030     876/acpid           /var/run/acpid.socket

/var/log/apache2/error.log:

[Thu Nov 08 11:13:30 2012] [notice] Apache/2.2.22 (Ubuntu) configured -- resuming normal operations
[Thu Nov 08 11:17:32 2012] [notice] caught SIGTERM, shutting down

/etc/apache2/ports.conf:

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

Gracias por tu ayuda.

EDITAR # 1:

michal@michaltest:~$ sudo netstat -ano | grep '443'
tcp       54      0 10.0.2.15:58504         91.189.92.70:443        CLOSE_WAIT  off (0.00/0/0)
michalstanko
fuente

Respuestas:

9

solo necesita eliminar nginx (3 paquetes), entonces eso es todo .....

Su problema principal es que no hay enchufes de escucha disponibles . Se enfrenta a este problema porque otra aplicación / servicio adquirió el puerto 80 en su servidor Ubuntu.

Ahora necesita matar el proceso que adquirió el puerto 80. Puede encontrarlo fácilmente con el siguiente comando: -

sudo netstat -ltnp | grep ': 80'

Esto devolverá algo como: -

tcp 0 0 127.0.0.1:80 0.0.0.0:* ESCUCHE 1588 / aolserver4-nsd

para el caso anterior, el proceso número 1588 adquirió el puerto 80 , debe eliminar ese proceso 1588.

sudo kill -9 1588

Ahora puede iniciar su servidor apache siguiendo el comando

sudo /etc/init.d/apache2 start

Vikas Dwivedi
fuente
3
¡Gracias! Esto me sorprendió un poco, porque dice que "El registro de errores de Apache puede tener más información", sin embargo, no hay nada allí, también "No se puede abrir registros", pero no hay información sobre qué archivo de registro (¿Apache? ¿Los vhosts? ) Resulta que nodejs todavía está utilizando el puerto 80 ..
andyk
Me sale el mismo error, pero netstat no enumera nada usando el puerto 80 ...
Cerin
@Cerin deberías probar sudo antes de netstat.
Vikas Dwivedi
2

Para resolver "apache2: no se pudo determinar de manera confiable el nombre de dominio completo del servidor, usando 127.0.1.1 para ServerName" , especifique amablemente lo siguiente en su archivo apache2.conf

ServerName HOSTNAME_OF_THE_SERVER

Guarde el archivo conf y reinicie el servidor apache.

Publica amablemente la salida de sudo netstat -ano | grep '443'

Asegúrese también de que si está configurando apache para escuchar en el puerto 443 / ssl, debería haber configurado el certificado ssl en el servidor web apache.

Vidyadhar
fuente
Publiqué la salida de sudo netstat -ano | grep '443'. Lo de ServerName no es un problema. Muchas gracias.
michalstanko
1

Has visto:

Unable to open logs

¡Creo que podría verificar los permisos en / var / log / apache2!

martin-mystere
fuente
Soy un poco novato, sin embargo, hice que el /var/log/apache2directorio se escribiera recursivamente en todo el mundo, luego intenté ejecutarlo sudo service apache2 startnuevamente y la salida todavía estaba Unable to open logsallí. ¿Alguna sugerencia? Gracias.
michalstanko
Hmm Entonces, ¿podría ser algo así? cpanelblog.in/apache-error-unable-to-open-logs
martin-mystere
1

Parece que puede haber un servicio nginx ejecutándose detrás. Por lo tanto, detenga el nginx "service nginx stop" y ahora intente iniciar el servicio apache2, debería aparecer sin ningún problema. (deténgase si hay otros servicios de aplicaciones en ejecución)

Tuve el mismo problema hoy y se resolvió.

root@ip-172-31-16-xxx:~# **service nginx stop**
root@ip-172-31-16-xxx:~# **service nginx status**
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Tue 2017-12-26 08:48:21 UTC; 1min 12s ago
  Process: 5897 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
  Process: 1220 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 1158 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 1229 (code=exited, status=0/SUCCESS)

Dec 26 06:56:32 ip-172-31-16-xxxsystemd[1]: Starting A high performance web server and a reverse proxy server...
Dec 26 06:56:32 ip-172-31-16-138 systemd[1]: Started A high performance web server and a reverse proxy server.
Dec 26 08:48:21 ip-172-31-16-138 systemd[1]: Stopping A high performance web server and a reverse proxy server...
Dec 26 08:48:21 ip-172-31-16-138 systemd[1]: Stopped A high performance web server and a reverse proxy server.

root@ip-172-31-16-xxx:~# **service apache2 start**
root@ip-172-31-16-xxx:~# **service apache2 status**
● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   **Active: active (running) since Tue 2017-12-26 08:49:51 UTC; 14s ago**
     Docs: man:systemd-sysv-generator(8)
  Process: 5845 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
  Process: 5937 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
    Tasks: 55
   Memory: 6.5M
      CPU: 46ms
   CGroup: /system.slice/apache2.service
           ├─5954 /usr/sbin/apache2 -k start
           ├─5957 /usr/sbin/apache2 -k start
           └─5958 /usr/sbin/apache2 -k start

Dec 26 08:49:50 ip-172-31-16-138 systemd[1]: Starting LSB: Apache2 web server...
Dec 26 08:49:50 ip-172-31-16-138 apache2[5937]:  * Starting Apache httpd web server apache2
Dec 26 08:49:51 ip-172-31-16-138 apache2[5937]:  *
Dec 26 08:49:51 ip-172-31-16-138 systemd[1]: Started LSB: Apache2 web server.
root@ip-172-31-16-138:~#
Nagaraj Jalawadi
fuente
0

Parece que el problema es que otro proceso tiene el puerto 443 abierto. Tendrás que matar ese proceso primero.

linux - ¿Cómo elimino una conexión de socket CLOSE_WAIT? - Stack Overflow dice:

CLOSE_WAITsignifica que su programa aún se está ejecutando y no ha cerrado el socket (y el núcleo está esperando que lo haga). Agregue -pa netstatpara obtener el pid y luego mátelo con más fuerza (con SIGKILLsi es necesario). Eso debería deshacerte de tus CLOSE_WAITenchufes. También puedes usar pspara encontrar el pid.

Peter V. Mørch
fuente