글 작성 하는 시점에서 Nginx Stable 버전은 1.6.0 버전 이다. 


1.1.x 버전을 사용하고 있었고, Nginx + WebSocket 을 사용할 수 있다는 글을 보고, 테스트 하는 도중 지원하지 않는 버전이라 테스트가 불가피 했다.

해당 글 URL (http://nodeqa.com/nodejs_ref/80) 흥미가 있다면 가보셔도 좋아요.



헉


Requirements

  • gzip module requires zlib library
  • rewrite module requires pcre library
  • ssl support requires openssl library

위 3가지 항목은 설치 전 요구되는 라이브러리다. 사전에 설치가 되어 있지 않다면, 진행을 할 수 없다.


1.  zlib library

C로 작성된 데이터 압축 라이브러리의 일종이다.

공식 사이트: http://www.zlib.net/

다운로드: http://zlib.net/zlib-1.2.8.tar.gz


tar zxvf zlib-1.2.8.tar.gz

cd zlib-1.2.8

./configure

make

sudo make install


2.  pcre library

PCRE 라이브러리, POSIX 정규식 API 지원

공식 사이트: http://www.pcre.org/

다운로드: http://sourceforge.net/projects/pcre/files/pcre/8.35/pcre-8.35.tar.gz/download


tar zxvf pcre-8.35.tar.gz

cd pcre-8.35

./configure

make

sudo make install


3. openssl library

일반적으로 Linux 설치 시 포함 되어 있다.


위 작업이 끝났다면, nginx 설치할 준비는 된 것이다.  오키



nginx Installation


다운로드: http://nginx.org/en/download.html


원하는 버전 파일을 다운로드 하도록 하자.


tar zxvf nginx-1.6.0.tar.gz

cd nginx-1.6.0

./configure

make

sudo make install


위 요구되는 라이브러리 설치만 성공적으로 끝났다면, 무사히 설치는 완료 되었을 것이다.


참고 사이트: http://wiki.nginx.org/GettingStarted





프로젝트 수행 시 소스 관리 툴로 svn, git 을 주로 사용 한다.


svn은 파일 auto merge 기능이 없지만, git 의 경우는 존재 한다. 자동은 한계가 있기 때문에 수작업으로 맞춰줘야 하는 경우도 종종 발생 하곤 한다.

svn과 git의 차이 점을 봤을 때 저장소(하드디스크) svn은 저장소가 1개 지만, git은 저장소를 여러 개를 만들 수 있다는 차이도 있다. 흔히 branch를 생성 했다 라고 표현 할 수 있다.


svn 작업 시 파일 충돌이 났을 경우 대처법에 대해서 알아 보자.

svn을 사용 하는 경우 퇴근 할 때 Commit, 출근 할 때 Update 는 기본이다. 본인도 매번 그렇게 작업을 한다.


Step 1.  동기화 확인

프로젝트 마우스 오른쪽 클릭 > Team > Synchronize with Repository 



Step 2.  파일 비교

충돌 나는 파일이 있다면 빨간 색으로 표시가 된다. 

더블클릭을 해보면 옆과 같이 내 PC : 서버 파일이 표시 되는대 눈으로 확인 하면서 직접 수정을 하는 방법, Revert(이전으로 돌림) 방법이 있다.


본인이 작업을 한 경우에는 보통 직접 수정을 하고 힘든 경우에는 작업자에게 도움을 요청 한다. 작업 물이 거의 없는 경우는 이전(기존 파일)으로 돌린다.



Step 3.  파일 업데이트

위의 설명과 같이 파일을 직접 수정을 했다 라고 하면, Override and Commit 을 수행 한다. 서버에 파일을 덮어 씌우는 행위 이기 때문에 신중하게 하도록 하자.

파일을 이전으로 바꾼 경우, 정상적으로 Update 를 수행 하자. 정상적으로 바꿨다면 빨간색 아이콘이 사라졌을 것 이다.





개발 시 보통 GET, POST 를 많이 사용 한다.


HTTP Method

  • GET
  • POST
  • HEAD
  • OPTIONS
  • PUT
  • DELETE
  • TRACE
  • CONNECT

사용하지 않는 아래의 Method로 서버에 대해 악용을 할 수 있기 때문에 서비스 오픈 시 보통은 차단 한다.


설정 방법


web.xml (root)

설정 파일 최하단에 아래와 같이 추가 한다.


<security-constraint> <web-resource-collection> <web-resource-name></web-resource-name> <url-pattern>/*</url-pattern> <http-method>PUT</http-method> <http-method>OPTIONS</http-method> </web-resource-collection> <auth-constraint> <role-name></role-name> </auth-constraint> </security-constraint>


테스트 방법 (telnet)

telnet 으로 tomcat 서버 에 접속 한 후 제한을 걸었던 메소드로 request 하자.


telnet 192.168.0.xxx xxxx
Trying 192.168.0.xxx...
Connected to 192.168.0.xxx.
Escape character is '^]'.
OPTIONS /
<html>
  <head>
    <title>Apache Tomcat/5.5.35 - Error report</title>
  </head>
  <body>
   // ... views
  </body>
</html>Connection closed by foreign host.


위 처럼 제한이 되었다면 성공적으로 막혔다고 볼 수 있다.


'Server,Was' 카테고리의 다른 글

Ubuntu Nginx 설치 및 테스트 하기  (0) 2014.09.21
Nginx 1.6.0 설치 하기  (0) 2014.07.17
CentOS 에서 JDK 설치 하기  (0) 2013.12.11
CentOS Gitlab 설치 시 Redis Port 변경 방법  (0) 2013.12.05
CentOS System Log 확인 하기  (0) 2013.09.06


Javascript 로 암호화 할 일이 생겨서 Search 중 발견 했다.


※ github - https://github.com/tomyun/crypto-js


보통 서버에서 암호화 작업을 하거나, SSL 을 사용 하는대 어쩔 수 없이 암호화 를 하는 점도 있는거 같다.


단방향 암호화 알고리즘 사용에는 편리 한것 같다. 


적용 방법

소스 다운 후 아래와 같이 적용 한다. 다른 알고리즘을 사용할 경우 다른 js를 사용 한다.


<script type="text/javascript" src="/core.js"></script>
<script type="text/javascript" src="/sha256.js"></script>

CryptoJS.SHA256('test').toString()



WEB 개발을 JAVA 로 하는 경우 SpringFramework 를 많이 사용 하고 있다.


※ 공식 사이트: http://spring.io/


가장 많이 사용하게 되고, 빠질 수 없는 DispatcherServlet 의 구조에 대해 알아보자



위 그림은 Spring MVC 의 전체 흐름도 이다. 중요하게 봐야 할 부분은 HandlerExceptionResolver 이다. 



  • HandlerExceptionResolver
    • DispatcherServlet 에 셋팅을 했을 경우 모든 Exception 을 위임 받아 해당 페이지로 이동 한다.

dispatcher-servlet.xml (Spring 2.5 기준)
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <property name="order" value="1" />
    <property name="exceptionMappings">
        <props>
            <prop key="Exception">error</prop>
        </props>
    </property>
</bean>

HandlerExceptionResolver 에 해당되는 Class 이다. 위에서 설명 한대로 exceptionMappings 에 예외 Class와, 이동할 Page를 설정 한다.

Annotation 지원은 Spring 3.0 이상 부터 된다고 한다. 


SampleController.java

@RequestMapping(value="sample", method=RequestMethod.GET)
public ModelAndView sample(String sample) throws Exception {
    
    ModelAndView mav = new ModelAndView("sample");
    
    try {
        
        // ... logic
        
        return mav;
    } catch(Exception e) {
        e.printStackTrace();
        throw e;
    } 
}

Exception 모두 던질 경우 trace를 할 수 없기 때문에 중요한 부분은 위와 같이 trace 를 하는 부분이 좋다고 생각 한다.


dispatcher-servlet 셋팅 후 아래와 같이 예외를 위임 하는 경우 에러 페이지로 이동하는 것을 확인 할 수 있다.


※ 참고 사이트

  - https://code.google.com/p/developerhaus/wiki/SpringException

  - http://www.cnblogs.com/fangwenyu/archive/2012/10/11/2716665.html



Web 개발 시 `Scroll` 과 상당한 씨름을 하게 된다.

요구 사항에 따라 다양하게 적용을 해야 하는데 각 브라우저 마다 `Scroll` 값을 조회 하는 방법이 다르다.


`jQuery` 를 확장해서 여러 브라우저에서 사용 할 수 있게 작성된 라이브러리가 있다.



사용 방법


$(window).scrollMaxX();
$(window).scrollMaxY();


위와 같이 적용 하면 된다.


'Javascript' 카테고리의 다른 글

jQuery Checkbox 전체 선택, 해제 방법  (0) 2014.09.22
Javascript 암호화 하기  (2) 2014.04.30
Html Tag Default 동작 제거 하기  (0) 2013.03.06
jQuery Enter Event 걸기  (0) 2013.02.18
Date 관리 하기 sugar.js 이용  (0) 2013.02.18


npm global 설치 시 주로 발생 한다. 


centos 기준 /usr/local/lib/node_modules 폴더 접근 권한이 없기 때문에 root 권한을 줘야 한다.


sudo npm install -g [package name]


root 에서는 node 명령어를 못찾는 경우가 있다. 그럴 경우


sudo ln -s /usr/local/bin/node /usr/bin/node
sudo ln -s /usr/local/lib/node /usr/lib/node
sudo ln -s /usr/local/bin/npm /usr/bin/npm


위 명령어를 추가 한 후 사용 하자.



Node.js 요즘에 주목 받고 있는 언어 같다.


Node.js 는 자바스크립트, 구글 V8 엔진을 사용 하는데, 자바스크립트는 개발자들에게 익숙한 언어이고, 웹 애플리케이션 서버 개발시 직접 구현도 가능 하지만 Expressjs 라는 대표적인 웹프레임워크를 많이 사용 하는 편이다.


전화통화로 몇일 전 위 이유 때문에 많이 사용 하지 않을까? 라고 말했던 형도 있었다.


Express 공식 사이트


여기서 한가지 짚고 넘어갈 것이 있다.


Node 공식 사이트 소개 글 

Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.


위 내용을 보자면 쉽게 확장이 가능한 네트워크 애플리케이션을 구축 하기 위한 플렛폼이고, 추가적인 기능으로 이벤트 기반, non-blocking I/O 를 지원 한다.


웹프레임워크로 상대적으로 쉽게 개발을 하기 때문에 망각 할 수 있지만, 기억하고 있어야 할 부분이라고 본다.


Node.js 기반으로 만들어진 놀라운 10가지 프로젝트가 있다. 그냥 읽고만 넘기기엔 내용이 좋다고 판단이 되어 글을 남겨 본다.


이거 정말 필요할 것 같다. 라고 생각 된건 두 가지!! 


실제 개발이 완료 된 후 운영에 들어간다면 데스크톱 애플리케이션 처럼 사용하면서 정보를 가공할수 있는 Node-Webkit, 서버 로그 관리 차원에서 훌륭한 도구가 될 Log.io 보고 와~ 했다.


  [그림 1] log.io 공식 페이지


틈틈히 한번씩을 사용해봐야 겠다. 먼가 도움이 많이 될거 같다.


※ 참고 사이트

  - http://nodejs.org/

  - http://www.itworld.co.kr/slideshow/85221



+ Recent posts