Error de Ubuntu con apache:(98) Dirección ya en uso
ubuntu-11.10 (14)
Recibo este error cuando intento iniciar Apache en Ubuntu.
(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 ''start'' failed.
Tengo esto en mi ports.conf
NameVirtualHost *:80
Listen 80
Este es mi archivo vhost
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName rails.server.com
# ServerAlias
DocumentRoot /var/www/sample_app/current/public
ErrorLog /var/www/sample_app/error.log
RailsEnv production
<Directory "/var/www/sample_app/current/public">
Options Indexes FollowSymLinks MultiViews
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
¿Qué me estoy perdiendo?
Lista de servicios actualmente en ejecución,
$ sudo netstat -tulpn
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:8069 0.0.0.0:* LISTEN 6399/python
tcp 0 0 0.0.0.0:53670 0.0.0.0:* LISTEN 6681/Brackets-node
....
....
Encuentra solo servicios específicos,
$ sudo netstat -tulpn| grep python
jpa@jpa-dell:~/odoo/master-hr-holidays-newapi-jpa$ sudo netstat -tulpn| grep python
tcp 0 0 0.0.0.0:8069 0.0.0.0:* LISTEN 6399/python
tcp 0 0 127.0.0.1:41974 0.0.0.0:* LISTEN 3123/python
Notaste el resultado anterior PID (6399) ejecutando python.
Mata ese servicio usando el siguiente comando,
$ sudo kill -9 -6399
Ahora los servicios están completamente parados, puedes comenzar de nuevo normalmente.
Comando extra para encontrar servicios en ejecución,
$ ps -ef
$ ps -ef | grep python
Asegúrese de no tener el comando Listen 80
en más de un lugar.
En mi caso, recibí el mismo error y el motivo fue que este comando estaba en ports.conf y sites-enabled / 000-default.
Cuando reinicie o inicie su servidor a través de la terminal, es posible que haya olvidado agregar sudo antes del comando.
Use sudo /etc/init.d/apache2 reload
lugar de /etc/init.d/apache2 reload
En mi caso fue nginx (porque lo tengo en mi servidor).
sudo service nginx stop
sudo service apache2 start
En mi caso, ssl.conf
archivo ssl.conf
predeterminado ( ssl.conf
nombre se cambió a ssl.conf.bak
), y tenía mi propio archivo de configuración ssl.
Luego hice una yum update
y actualicé apache ... Lo cual también reintrodujo el archivo ssl.conf
, lo que significa que tuve 2 archivos de configuración con Listen 443
.
Solución (genérico - CentOS): vaya a /etc/httpd/conf.d
, haga un grep -r ''Listen'' .
, vea si tiene declaraciones de Listen XXX
duplicadas, elimínelas según sea necesario.
En todos los casos, matar el proceso puede no funcionar, ya que el proceso que usa el puerto 80 se reiniciará y no permitirá usar el puerto. Entonces, lo que se puede hacer es cambiar el puerto de apache, si eso no importa.
Dos cosas deben ser cambiadas para eso:
Abra
/etc/apache2/ports.conf
con cualquier editor de texto y cambie el valor de la entradaListen 80
al puerto deseado (por ejemplo,Listen 8080
).Cambie la entrada para
<virtualhost 80>
al mismo número de puerto que dio en el archivo/etc/apache2/ports.conf
en/etc/apache2/sites/enabled/000-default
(por ejemplo,<virtualhost 8080>
).
Excepto el proceso de búsqueda de soluciones que se ejecuta en: 80 y kill, luego vuelve a comenzar
Este error podría aparecer si tiene varias entradas "Escuchar" en el archivo apache conf o en cualquier archivo .conf incluido en el archivo apache conf. Espero que esto ayude a alguien .. !!
Parece que el puerto 80 ya está tomado. Use otro puerto o pruebe netstat
( grep
el resultado para seleccionar solo la fila con el valor 80 en él), ps
y kill
para ver qué aplicación ocupa el puerto y apagarlo.
Tuve el mismo problema con una causa muy diferente. Estoy ejecutando Apache 2.4.7 con PHP 5.5.6 en CentOS 6.5.
Desordenado php.ini al tener AMBOS output_handler = ob_gzhandler AND zlib.output_compression = On (cualquiera de los dos, no ambos, puede configurarse).
Así que al reiniciar Apache, se enlaza al puerto 80 pero no sucede nada más. Parece que se está ejecutando, pero el error de php lo ha bloqueado en alguna parte.
La clave fue verificar "php -v" ... cuando vi que no devolvía nada (escribió el error en error_log), reparé php.ini y Apache estaba feliz de nuevo.
Tal vez esto ayude a alguien ...
sudo kill -9 -2321 (pid) Reiniciar BT Hecho ..... no es necesario realizar cambios en la configuración. expediente.
Obtuve este error en una instalación nueva de Ubuntu 12.10 al iniciar apache2.
Es un error en el apache2. Se cuelga en el fondo. Aquí está mi tutorial de dónde podrían estar los errores en el software.
Aquí está el error que tengo:
el@titan:~$ sudo service apache2 start
* Starting web server apache2
(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 ''start'' failed.
The Apache error log may have more information.
[fail]
¿Dirección ya en uso? ¿Qué podría estar usando? Echale un vistazo:
el@titan:~$ grep -ri listen /etc/apache2
/etc/apache2/apache2.conf:# supposed to determine listening ports for incoming connections, and which
/etc/apache2/apache2.conf:# Include list of ports to listen on and which to use for name based vhosts
/etc/apache2/ports.conf:Listen 80
/etc/apache2/ports.conf: Listen 443
/etc/apache2/ports.conf: Listen 443
Eso significa que apache2 está evitando que se inicie apache2. Extraño. Esto confirmará:
el@titan:~$ ps -ef | grep apache2
root 1146 954 0 15:51 ? 00:00:00 /bin/sh /etc/rc2.d/S91apache2 start
root 1172 1146 0 15:51 ? 00:00:00 /bin/sh /usr/sbin/apache2ctl start
root 1181 1172 0 15:51 ? 00:00:00 /usr/sbin/apache2 -k start
root 1193 1181 0 15:51 ? 00:00:00 /bin/bash /usr/share/apache2/ask-for-passphrase 127.0.1.1:443 RSA
el 5439 5326 0 16:23 pts/2 00:00:00 grep --color=auto apache2
Sí, en este caso se está ejecutando apache2, estaba intentando iniciar apache2 por segunda vez en el mismo puerto.
Lo que me confunde es que el service
informa que apache2 NO se está ejecutando:
el@titan:~$ sudo service apache2 status
Apache2 is NOT running.
Y cuando consulta a apache2ctl por su estado, se bloquea.
root@titan:~# /usr/sbin/apache2ctl status
**hangs until Ctrl-C is pressed.
Así que Ubuntu parece tener problemas para administrar apache2 en el arranque. Tiempo para detener apache2:
root@titan:~# /usr/sbin/apache2ctl stop
httpd (no pid file) not running
Una gran pista! ¡Tratas de detener apache2 y se pierde la identificación del proceso! ¡Así que Ubuntu no puede detener apache2 porque no sabe dónde está!
Usted pensaría que un reinicio lo arreglaría, pero no lo hace porque apache2 comienza en el arranque y se bloquea. El proceso de arranque normal para apache2 no funciona correctamente.
Entonces, ¿cómo solucionarlo?
Pude arreglar esto analizando la salida del comando ps
. Observe que el comando ps
nos dice que ese proceso se inició con "/etc/rc2.d/S91apache2 start".
Ese es el programa ofensivo que necesita una patada rápida.
/etc/rc2.d/S91apache2
es el enlace simbólico que se utiliza para iniciar apache2 cuando se inicia la computadora. Por alguna razón, parece estar iniciando apache2 y luego se cuelga. Así que tendremos que decirle que no hagamos eso.
Así que ve a ver /etc/rc2.d/S91apache2
.
el@titan:/etc/rc2.d$ ls -l
lrwxrwxrwx 1 root root 17 Nov 7 21:45 S91apache2 -> ../init.d/apache2*
Es un enlace simbólico que no queremos que esté allí. Haga esto para evitar que apache2 se inicie en el arranque:
root@titan:~# sudo update-rc.d -f apache2 remove
Removing any system startup links for /etc/init.d/apache2 ...
/etc/rc0.d/K09apache2
/etc/rc1.d/K09apache2
/etc/rc2.d/S91apache2
/etc/rc3.d/S91apache2
/etc/rc4.d/S91apache2
/etc/rc5.d/S91apache2
/etc/rc6.d/K09apache2
Reinicie la computadora para asegurarse de que apache2 no se inicie y se bloquee. Bien. Ahora PODRÍAS poner a apache2 de la forma en que estaba, pero eso haría que vuelva a fallar.
root@titan:~$ sudo update-rc.d apache2 defaults //(don''t do this)
Adding system startup for /etc/init.d/apache2 ...
/etc/rc0.d/K20apache2 -> ../init.d/apache2
/etc/rc1.d/K20apache2 -> ../init.d/apache2
/etc/rc6.d/K20apache2 -> ../init.d/apache2
/etc/rc2.d/S20apache2 -> ../init.d/apache2
/etc/rc3.d/S20apache2 -> ../init.d/apache2
/etc/rc4.d/S20apache2 -> ../init.d/apache2
/etc/rc5.d/S20apache2 -> ../init.d/apache2
En su lugar, inicie el apache2 de esta manera:
sudo service apache2 start
Y el apache2 está de vuelta y vuelve a servir páginas. Parece que hay algunos errores graves con apache2 / Ubuntu 12.10 que hacen que apache2 se inicie y se bloquee. Esta es una solución, supongo que la solución es obtener nuevas versiones de apache2 y Ubuntu y esperar lo mejor.
netstat -ltnp | grep :80
Esto devolvería lo siguiente:
tcp6 0 0 ::: 80 ::: * ESCUCHAR 1047 / apache2
A continuación, ejecute el siguiente comando:
sudo kill -9 1047
(1047 - pid no)
(El pid que aparece en su instancia particular.)
Reinicie Apache.
sudo service apache2 restart
Referencia a los foros de Ubuntu .
sudo netstat -tulpn| grep :80
pkill
el proceso (nginx?)
Desactive cualquier host virtual que esté enlazando al puerto 80 que no desea (nginx?). Está en / etc / nginx / sites-enabled o / etc / apache2 / sites-enabled