글쓴이 글 목록: opener

[문제해결] mysql 접속에러 2014-09-24

1. 문제상황

> 다음과 같은 에러가 발생하였다.


ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'


2. 해결과정

> my.cnf 파일의 옵션을 확인한다.


vi /etc/my.cnf
## /etc/my.cnf
[client]
socket = /var/lib/mysql/mysql.sock
[mysqld]
socket = /var/lib/mysql/mysql.sock

> /var/lib/mysql/mysql.sock 파일의 심볼릭 링크를 만든다.


ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

[문제해결] 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 정책에서는 기본적으로 허용하지 않는 포트가 있다. [지난 포스트]를 확인하도록 하자.

System architecture 2014-09-22

1. 사전적 정의

> 시스템이 반드시 갖추어야 할 기능적, 비기능적 사항들을 정의하는 수단으로서, 시스템의 서비스 및 기능을 정의하고, 서비스/기능영역의 경계와 참여주체를 정의하고 표현하며, 사업계획, 사업범위 설정 및 통합의 틀을 제공하는 작업


2. 실무적 관점

> 시스템 전체의 구조를 사전에 정리하고 이를 기반으로 체계적인 개발이 진행될 수 있도록 틀을 제공하는 작업으로 시스템 구성의 목적에 기반하여 기획의 요구사항을 효율적으로 반영 할 수 있도록 설계& 문서화 한다.


3. 체계적인 개발진행이 주는 이점

> 비즈니스적인 요구사항을 신속, 정확하게 시스템에 적용할 수 있다.

> 체계적으로 문서화 하게 되면 IT기업의 자산이 된다.

> 문서화 함으로써 프로젝트 참여자들끼리의 소통이 원활해 진다.


4. 설계시 필수 정의사항

> FLOW Diagram : 프로세스, 프로그램, 데이터의 요소들의 구성 및 흐름도를 작성한다.

> DATA IN / OUT : 데이터의 입출력방식/ 통신방식 / 프로토콜을 정의한다.

> DB schema : 데이터 저장에 대한 구조를 정의한다.

> Data Mapping : 서버간 통신시에 데이터를 효과적으로 맵핑시키기 위한 정의서

> API 정의서 : 클라이언트에서 서버의 api를 활용하는 방식이라면 문서화하고 공유한다.