[JAVA 개발환경설정] 2. 폴더의 구성 2014-10-15

> jsp & php의 웹개발을 위한 개발폴더 구성이다.

webservice_folder
- 개발환경 폴더에는 개발도구별로 폴더를 만들고 아래 버전별로 폴더를 두어 설치한다.
- 개발소스 폴더에는 프로젝트별 소스폴더를 구분하여 저장한다.
- 개발툴 폴더에는 개발툴별로 폴더를 만들고 버전별로 다른 환경을 제공하는 경우 아래 버전별 폴더를 두도록 한다.

 


 

> XAMPP를 사용하여 쉽게 최적화된 형태의 로컬 서버를 구성한다.

webservice_folder2
- xampp는 기본적으로 apache + php + mysql + tomcat + perl을 설치해 준다.
- 추가로 필요한 서버가 있다면 같은 폴더에 구성해서 사용한다.

[JAVA 개발환경설정] 1. 고려사항 2014-10-15

 개발환경은 프로젝트 진행에 있어서 상당히 중요한 부분이다. 하지만 상당수의 기업은 이를 무시하는 경향이 많다.

 사업기회를 놓치지 않기위해 촉박하게 프로젝트 일정을 잡기 때문에 급한 마음에 ‘구현되는게 우선이다’라는 생각으로 접근하기 때문이 아닐까 한다. 이러한 성급한 결정은 위험요소를 가지고 있다. 구성원간 개발한 소스의 충돌을 일으키기도 하며 심지어 소스를 지우기도 한다. 또한 개발자는 프로젝트의 로직을 생각하는것 말고도 신경써야하는 부분이 많아진다. 결국 촉박하게 진행된 프로젝트는 일정안에 끝나지 못하게 되며 난잡하게 구성된 결과물만 남게되어 리펙토링시 더욱 험난한 길을 가게된다. 결과적으로 기업의 입장에서는 마이너스인 것이다.

 프로젝트가 원활히 진행되기 위해서는 다음사항을 고려하여 구성원간 충분히 공유하고 대화하여 최대의 효율을 낼 수 있도록 진행 되어야 한다.

 무조건 이렇게 되어야 한다는 것은 아니며 필요없다고 생각하는 구성은 생략해도 된다.

 

1. 로컬개발환경

로컬에 웹서비스를 구성하고 개발자별 단위 테스트를 하는 것이 좋다. 이때 디비는 개발서버의 것을 사용해도 좋다.

 

2. SVN서버

로컬에서 개발된 소스는 팀원별로 SVN서버에 커밋하여 종합한다. 충돌이 나지 않는 것이 최선이지만 그렇게 되기는 힘들고 팀원간의 대화로 개선해 최소화 해나간다.

 

3. 개발서버

SVN서버에 종합된 소스를 개발서버로 옮겨 테스트 해야한다. 문제점이 발견된다면 팀원간의 회의로 해결할 수 있도록 한다.

 

4. 테스트서버

개발이 완료 되어 개발서버에서 문제가 없다면 별도의 테스트서버에서 QA(Quality Assurance) 를 진행해야 한다.

 

5. 폴더구성

프로젝트 구성원간에 동일하게 구성하는 것이 좋다. 폴더구성을 변수화 해서 다르게 갈수도 있지만 많은 폴더의 구조를 모두 변수화 하기에는 무리가 아닐까 생각한다.

 

6. 배포시스템

개발이 아닌 다른부분은 스크립트화 하여 신경쓰이는 일이 없도록 자동화해야 한다.

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