#20140418-01 :: Apache :: (13)Permission denied
오늘 서버 작업을 하면서 매우 곤란한 문제를 마주했었습니다.
환경
- Cent OS 6.4
- Apache 2.4.9
간단한 웹서비스 페이지를 하나 올려야 했고
서비스 포트로 8082를 지정 받았습니다.
아파치를 설치하고 몇 가지 설정을 하니 아래와 같은 에러와 마주하게 되었습니다.
$ sudo service httpd start
Starting httpd: (13)Permission denied: make_sock: could not bind to address [::]:8082
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:8082
no listening sockets available, shutting down
Unable to open logs
한참을 검색하고 삽질을 하다가 알게 된 사실은
Cent OS에서는 httpd에 대하여 특정 포트만을 허용하고 있다는 것이었습니다.
자세한 내용은 아래와 같이 볼 수 있습니다.
$ sudo semanage port -l|grep http
http_cache_port_t tcp 3128, 8080, 8118, 8123, 10001-10010
http_cache_port_t udp 3130
http_port_t tcp 80, 443, 488, 8008, 8009, 8443
pegasus_http_port_t tcp 5988
pegasus_https_port_t tcp 5989
위의 목록에서 http_port_t에 8082가 없기 때문에 계속 에러가 난 것입니다.
해결 방법은 다음과 같습니다.
$ sudo yum -y install policycoreutils-python
$ sudo semanage port -a -t http_port_t -p tcp 8082
검색을 해 보니 SELinux에는 semanage 가 기본으로 있는 것 같은데
Cent OS에는 설치되어 있지 않았기 때문에 별도로 설치하였습니다.
그리고 semanage를 통해 8082 포트를 허용해 주도록 추가 등록 하였습니다.