AWS AH00072: make_sock: could not bind to address ERROR – 아파치 실행 문제 해결하기

AWS AH00072: make_sock: could not bind to address ERROR – 아파치 실행 문제 해결하기
Photo by Taylor Vick / Unsplash

서론

안녕하세요. AWS에서 아파치를 실행하려고 할 때 흔히 마주치는 문제 중 하나를 다루려고 합니다. 혹시 아래와 같은 오류(AH00072: make_sock: could not bind to address ERROR) 메시지가 보이셔서 찾아오셨나요?

$ sudo apachectl start

Invoking 'systemctl start apache2',
Use 'svstemcti status apache2' for more info.
Job for apache2.service failed because the control process exited with error code.
See "systemct1 status apache2.service" and "journalctl -xe" for details.
Action 'start' failed.

문제 해결

문제 상황

서론에서 언급한대로 journalctr -xe | tail -n 25 커맨드를 입력해봅니다. tail -n 25는 보기 편하게 하기 위하여 제일 뒷 라인 25번째 만큼 출력하는 명령어입니다.

~$ journalctr -xe | tail -n 25

Aug 25 15:50:10  apachectl[8796]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80

Aug 25 15:50:10  apachectl[8796]: (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80

Aug 25 15:50:10  apachectl[8796]: no listening sockets available, shutting down

Aug 25 15:50:10  apachectl[8796]: AH00015: Unable to open logs

Aug 25 15:50:10  apachectl[8796]: Action 'start' failed.

Aug 25 15:50:10  apachectl[8796]: The Apache error log may have more information.

Aug 25 15:50:10  systemd[1]: apache2.service: Control process exited, code=exited status=1

Aug 25 15:50:10  sudo[8766]: pam_unix(sudo:session): session closed for user root

Aug 25 15:50:10  systemd[1]: apache2.service: Failed with result 'exit-code'.

Aug 25 15:50:10  systemd[1]: Failed to start The Apache HTTP Server.
아파치와 시스템 로그

문제 원인

[A] 해당 포트를 이미 사용 중이다.

많은 웹 서비스가 80 포트를 사용하기 때문에, 이 포트에서 충돌이 일어날 확률이 높습니다. 예를 들면, Nginx나 다른 버전의 Apache 같은 다른 웹 서버가 이미 80 포트를 사용하고 있을 수 있습니다.

[B] 아파치의 실행에 문제가 있다.

아파치의 설정 파일에 문제가 있거나, 아파치 자체에 오류가 있는 경우에도 위와 같은 문제가 발생할 수 있습니다.

해결 방법

[A] 해당 포트를 이미 사용 중이다.

아파치의 설정 파일인 ports.conf에서 사용하는 포트를 확인합니다:
~$ find / -name ports.conf
find 명령어 사용

이 명령어를 실행하면 아파치의 ports.conf 파일의 위치를 찾을 수 있습니다. 대부분의 경우 /etc/apache2/ports.conf 위치에 있을 것입니다.

파일을 열어 포트 설정을 확인하거나 수정합니다:
~$ vim /etc/apache2/ports.conf
vim 명령어 사용
vim이 없다는 에러가 발생한다면 nano, vi로 수정하시면 됩니다.

...

Listen 80
<IfModule ssl_module>
	Listen 443
</IfModule>
<IfModule mod_gnutls.c>
	Listen 443
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

...
ports.conf

위에서 Listen을 다른 포트로 써주면 됩니다. 기본 값은 80입니다.

[B] 아파치 실행 문제 해결

80 포트를 사용 중인 네트워크의 PID를 확인합니다:

~$ netstat -nap | grep 80

나타난 프로세스를 종료합니다:

~$ kill -9 <PID>

아파치를 다시 시작합니다:

~$ sudo service apache2 start

결론

AWS에서 아파치를 실행할 때 AH00072: make_sock: could not bind to address 오류를 마주치게 되면, 위의 방법을 통해 문제를 해결할 수 있습니다. 포트 충돌 또는 아파치 설정 문제, 두 가지 주요 원인 중 하나일 가능성이 높으니, 순차적으로 따라해 보시기 바랍니다. 이런 문제들이 은근 흔하니, 끈기와 문제 해결 능력으로 꼭 문제를 해결하시길 바랍니다!

함께 읽으면 좋은 글

http, https, hsts의 차이와 이해: HTTP vs HSTS vs HTTPS
들어가며 웹 세상은 매일 수많은 데이터 패킷이 오가는 복잡한 생태계입니다. 이 글에서는 HTTP, HTTPS, 그리고 HSTS에 대한 깊은 이해를 목표로 합니다. 개발자라면 이러한 기초적인 웹 통신 규약에 대해 확실히 알고 있어야 웹 애플리케이션의 보안과 성능을 최적화할 수 있습니다. HTTP(HyperText Transfer Protocol): 웹의 기초 HTTP란? HTTP는 HyperText Transfer Protocol의 약자로,
SSL v3란 무엇인가?: SSL 3.0에 대하여
들어가며 웹 트래픽을 보안하는 방법에 대해 깊게 생각해본 적이 있나요? SSL(Secure Sockets Layer)은 이를 가능하게 하는 암호화 프로토콜 중 하나입니다. SSL의 여러 버전 중 하나인 SSL 3.0(SSL v3)은 이제는 거의 사용되지 않지만, 그 역사와 작동 원리, 그리고 왜 더 이상 사용되지 않는지를 이해하는 것은 여전히