우체국에서 우편번호 조회 API 를 제공하고 있다.
http://biz.epost.go.kr/eportal/custom/custom_10.jsp?subGubun=sub_4&subGubun_1=cum_20  

php 에서 사용하다보면 잘 안 될 것이다. 인코딩을 utf-8, euc-kr 등으로 바꿔봐도 안될 것이다.

문제는 한글 검색시 헤더값에 accept-language: ko 값을 넘겨줘야 한다.
(우체국 openAPI 에서 저 값을 확인하는 듯 하다.)
$api_key = "우체국에서 받은 API KEY";
$epost_url = "http://biz.epost.go.kr/KpostPortal/openapi?regkey=$api_key&target=post&query=을지로3가"; 
 
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: ko\r\n" 
  )
);

$context = stream_context_create($opts);

$fp = file_get_contents($epost_url , false, $context);
이런식으로 하면 되는데, php 버전 5.0.x 이상에서 사용가능하다.(file_get_contents 에서 context 사용)

php 버전 5.0.x 이하 버전인 경우, curl 이나, fsockopen 을 사용한다.

fsockopen 으로 열고, 
fputs($fp, "Accept-language: ko\r\n");
처럼 헤더를 넘겨준다.

curl 에서는
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept-language: ko") ); 
처럼 헤더를 넘겨준다.
 
반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
얼마전 우분투 11.04 가 출시되었다.
그런데, 개인적으로 바로 업그레이드 하지 않고 있다.(좀 말이 많은 버전이다. unity 등)
좀더 상황을 지켜보기로 했다.


ubuntu 버전에서 firefox 4 를 설치하고자 한다. (우분투 공식? 버전은 3.5 또는 3.6 일 것이다)

PPA 저장소를 추가해서 설치한다.

# add-apt-repository ppa:mozillateam/firefox-stable
명령으로 저장소를 추가한다.
# apt-get update
# apt-get upgrade
로 업그레이드 한다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
nginx 와 php-fpm 을 설치하고, tomcat 을 연동해서
php 와 jsp(spring,ibatis) 를 구동하기 위한 작업을 하고자 한다.

tomcat 설치는 생략. (centos 에서 패키지로 설치하는 방법을 사용했다.)
방법은 이곳을 참조
http://wavded.tumblr.com/post/258713913/installing-tomcat-6-on-centos-5
http://www.how2centos.com/installing-tomcat-6-on-centos-5-5-tutorial/
설치한 후에는 tomcat 구동설정.

주의 : java(jsp) 쪽은 잘 몰라 용어,설명에 오류가 있을 수 있으니 알아서 해석하세요.

1. invoker 주석해제.(서블릿 자동호출?)
  tomcat 기본 샘플,예제는 잘 돌아가는데, 본인이 만든 예제가 안된다면 아마도 invoker 설정이 되어 있을 것이다.   /etc/tomcat6/web.xml 을 열어서 2곳의 주석을 해제.
이 부분과
    <servlet>
        <servlet-name>invoker</servlet-name>
        <servlet-class>
          org.apache.catalina.servlets.InvokerServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>
이 부분이다.
    <servlet-mapping>
        <servlet-name>invoker</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>
 이렇게 했는데 안되면.
context.xml 을 열면
그냥 <Context> 로 되어 있는데, <Context reloadable="true" privileged="true"> 이렇게 바꿔준다.

localhost:8080 으로 정상구동되는지 확인한다.
여기까지 되면 tomcat 쪽은 완료된것이다.

2. nginx 에서 php/static html 이외에는 모두 톰캣으로 넘기기

tomcat 을 연동할 부분은 다음과 같다.
이런식으로 server 설정한 부분에 추가해준다(php 등의 설정한 곳.)
    location / {
        try_files $uri $uri/ @tomcat;
    }

    location @tomcat {
        proxy_pass      http://localhost:8080;
    }
이렇게 설정하면 php 파일이외의 모든 접속은 톰캣에서 처리하게 된다.

이때 CI(Codeigniter) 등을 쓴다면, 따로 설정해 준다.
내 경우는 CI 로 된 어플을 각 CI_forum , KI_Board 폴더에 넣은 경우이다.
    location /CI_forum/ {
        try_files $uri $uri/ $uri/index.html @ciforum;
    }
    location /KI_Board/ {
        try_files $uri $uri/ $uri/index.html @kiboard;
    }

    location @ciforum {
        rewrite ^/CI_forum/(.+)$ /CI_forum/index.php/$1 last;
    }
    location @kiboard {
        rewrite ^/KI_Board/(.+)$ /KI_Board/index.php/$1 last;
    }
위 설정은 최적의 설정이 아닐 수 있으니, 참조 정도로만 쓰길 바람.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
nginx 는 보통 다음과 같은 설정을 사용한다
location ~ \.php$ {
    #fastcgi_pass  127.0.0.1:9000;
    fastcgi_pass  unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_index  index.php;
    include        fastcgi_params;
}
이때 보안 문제가 생긴다.

aaa.com/bad.hack/bbb.php  이런식으로 비정상적인 접근이 허용된다.
이를 막기 위해 설정을 변경해줘야 한다.

참조 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=73442
/etc/nginx/fastcgi_params 파일에 다음을 추가한다.
set $fastcgi_script_realname $fastcgi_script_name;
if ( $fastcgi_script_name ~ ^(.*\.php)(/.*)$ ) {
    set $fastcgi_script_realname $1;
    set $path_info $2;
}
if (!-f $document_root$fastcgi_script_realname) {
    return 404;
}

또는 /etc/php.ini  설정을 바꿔준다.
cgi.fix_pathinfo=0
nginx 에서 php-fpm 으로 넘기기전에 막아주는 것이 좋을 듯 하니 첫번째 방법이 좋을 듯 하다.


참조 : CI 에서는 다음처럼 rewrite 룰을 적용했다.
if (!-f $request_filename) {
    rewrite ^/CI_forum/(.+)$ /CI_forum/index.php/$1 last;
}
CI 를 설치한 폴더에 따라 변형해서 사용하면 된다.



반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
bind 에서는 nsupdate 로 zone 파일을 동적으로 변경할 수 있다.
ddns , dynamic dns 라고 한다.

1. 키값 만들기
 아무나 변경하면 안되니까, 보안을 위해 키값을 만든다.
 dnssec-keygen -a HMAC-MD5 -b 512 -n USER  mail.domain.com.
USER 대신에 ZONE , HOST 등으로 할 수 있다.
    -n <nametype>: ZONE | HOST | ENTITY | USER | OTHER
         (DNSKEY generation defaults to ZONE)
각각의 정확한 의미는?

위 명령을 내리면
Kmail.domain.com.+157+43746.key
Kmail.domain.com.+157+43746.private
두개의 파일이 생긴다. 보안키에서 흔히 볼 수 있는 public key , private key 라고 보면 된다.

2. named.conf 설정바꾸기.
  centos / chroot named 에서는  설정파일은
 /var/named/chroot/etc 에 있다.
rndc.key 에 다음을 추가한다. 별도 파일을 만들고 include 시켜도 된다.
key "mail.domain.com." {
   algorithm  hmac-md5;
   secret     "wTd1YkCIdFtpa4ncsdfsdfwMiGB789p8xR1fixWqDAW8fO9urKmdbalkjdsklfjAQqPA==";
};
Kmail.domain.com.+157+43746.key  값의 뒤 부분을 복사해서 넣으면 된다.
( 설정의 }; -> ; 를 빼먹지 않게 주의한다. )

 그리고, 변경하려는 도메인의 zone 을 업데이트 허용해야 한다.
zone "domain.com" {
  type master;
  file "domain.com.zone";
  allow-update { key "mail.domain.com."; };
};
위와 같이 allow-update 에 key "keyname" 형태로 넣어준다.

여기까지 하면 기본 준비는 끝난다.  named 재시작.

3. 외부에서 nsupdate 로 zone 변경해보기.

생성한 키쌍에서 private 키를 외부에 복사한다(로컬에서도 해도 되지만, 외부에서 해보자)
그리고 다음 명령으로 접속해 변경할 수 있다.
nsupdate -v -k Kmail.domain.com.+157+43746.private
접속하면 다음 처럼.
> server ns.domain.com
> zone domain.com
> update add some.domain.com. 86400 A 192.168.10.10
> show
> send
위 명령들을 파일로 만들어서 일괄처리할 수 있다.

DDNS 는 IP 가 동적으로 변경하는 환경 또는 서버의 Failover 처리등을 위해 사용하면 편리하다.
nsupdate 로 변경된 zone 파일은 직접 수정하지 않는것이 좋다.
named 에서 {zone file}.jnl 에 해당하는 임시파일을 만들고 추후 실제 zone 파일을 업데이트하기 때문에
zone 파일을 직접수정하면 수정한 부분이 사라질 수 있다.
직접 수정하려면 다음 방법중 하나를 사용한다.
# 방법1 - 9.3 이전버전
        rndc stop
        remove the journal file (.jnl)
        edit the zone
        start named
# 방법2 - 새버전 9.3
        rndc freeze zone
        edit the zone
        rndc unfreeze zone


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,