태그 글목록: semanage

[문제해결] redis 접속 에러 2014-09-23

1. 문제상황

> Apache + PHP(Codeigniter) + redis + mongoDB 로 구성된 서버에서 접속에러가 발생하였다. 무엇인가 설정하는 과정에서 발생한것 같지만 도무지 기억이 나질않는다.


2. 해결과정

> 아파치 로그 확인


tail -f /var/log/httpd/access_log
000.000.000.000 - - [22/Sep/2014:16:59:28 +0900] "POST /test HTTP/1.1" 200 44 "-" "UnityPlayer/4.3.0f4 (http://unity3d.com)"

>>> ‘200’ 정상접근 되고 있다.

> Codeigniter 프레임워크 로그 확인

tail -f /var/log/ci/log-{date}.php
err=47[REDIS_CONNECT_ERROR],pconnect(127.0.0.1,6201)
>>> 소스상에 예외처리 & 로그를 심어 놓아 다행이다. 문제사항은 redis가 접속이 안되고 있다.

> 콘솔에서 redis에 접속해보자.

redis-cli -p {포트번호} -a {비밀번호}
127.0.0.1:{포트번호}>ping
PONG
>>> 잘된다. PHP소스상에서 접속할 때만 안되는 거다. 뭐지?

> 소켓이 잘열리는지 확인한다.

if(!@fsockopen ( '127.0.0.1', {포트번호}, $errno, $errstr, 3 )){
      echo "Error NO : ".$errno.' // Error String : '.$errstr;
}
Error NO : 13 // Error String : Permission denied

> 권한이 없단다. 구글링…다음의 글을 발견하였다.

seems SELinux is blocking the socket connections. Disabled SE Linux ...
## 정책제거 하라고 나와있다.
setenforce 0
## 정책에서 기본적으로 허용하지 않은 포트 이므로 추가한다.
semanage port -a -t http_port_t -p tcp {포트번호}
>>> SELinux 정책에서는 기본적으로 허용하지 않는 포트가 있다. [지난 포스트]를 확인하도록 하자.