반응형
반응형

해당 오류 발생 시에

php가 설치된 디렉토리 /sapi/apache2handler/php_functions.c 를 열어서

 

unixd_config를 검색 후

모두 ap_unixd_config로 바꾸어 준 후, 다시 컴파일 해준다. 

 

아파치 버전업이 되면서, 모듈 명이 바뀌었다고 한다. 

반응형
,
반응형

crossdomain.xml 파일 내용을 아래와 같이 구성


<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="*" secure="false" />
</cross-domain-policy>




apache를 사용하는 경우 htdocs에 위치시키며,

tomcat의 경우 webapps/ROOT 폴더에 포함시키면 해결.

반응형
,
반응형

1. /etc/sudoers 파일을 열어,

Defaults requiretty 부분을 주석처리 한다.


2. SSH -t 옵션을 붙인다.


WinScp 같은 경우에는 1번 방법을 사용하면 해결이 된다.


출처 : http://dev.naver.com/projects/dist/forum/5402

반응형
,
반응형

# 30일 이후 /usr/local/apache2/logs/ 경로에서 *.log로 끝나는 파일을 찾아서 삭제한다.

find /usr/local/apache2/logs -type f -name "*.log" -mtime +30 -delete


apache cronolog가 날짜별 rotate는 해주지만, 삭제까지는 지원을 안해주므로

이걸 crontab에 등록하여 이용하기로 결정.

반응형
,
반응형

기본적으로 아파치를 앞단에 두는 경우 access_log에서 IP를 확인할 수가 있는데,

Proxy를 타고 들어오는 경우, 해당 Proxy의 IP만 확인이 되게 된다.


이럴 경우 Request Header의 X-Forwarded-For 옵션을 참조하여,

진짜 클라이언트 IP와 Proxy IP를 둘다 가져올 수가 있다.



1. Apache Access 로그에서 확인하기 

LogFormat에 들어가서 아래 내용을 교체한다.

가장 뒤에 붙은 common은 alias같은 역할을 하니, 자신이 사용하는 LogFormat을 잘 찾아서 교체해주어야 한다.

## 수정전
## LogFormat "%h %l %u %t \"%r\" %>s %b" common

## 수정후
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common


2. Was를 이용하여 확인하기 

String ip = request.getHeader("X-Forwarded-For");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
    ip = request.getHeader("Proxy-Client-IP"); 
} 
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
    ip = request.getHeader("WL-Proxy-Client-IP"); 
} 
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
    ip = request.getHeader("HTTP_CLIENT_IP"); 
} 
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
    ip = request.getHeader("HTTP_X_FORWARDED_FOR"); 
} 
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
    ip = request.getRemoteAddr(); 
}


3. Spring을 이용하여 확인하기 

import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
 
 
@Controller
public class HomeController {
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Model model) {  
        HttpServletRequest req = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest();
        String ip = req.getHeader("X-FORWARDED-FOR");
        if (ip == null)
            ip = req.getRemoteAddr();
         
        model.addAttribute("clientIP", ip);
        return "home";
    }
}
반응형
,
반응형

SuperPutty를 사용중인데,

TeamViewer로 집 PC에 원격 접속을 할 일이 있어서, 접속을 했었다.


근데 그 이후부터, SuperPutty에 Putty가 Docking이 되지 않는 현상이 생겼다.


TeamViewer를 종료해버리면 원래대로 되긴한다.


SuperPutty버그인거 같아서 찾다보니 해결책을 발견..

https://code.google.com/p/superputty/issues/detail?id=309


TeamViewer 옵션 -> 고급 -> 고급 옵션 보기 -> 컴퓨터 및 연락처 고급 설정 -> 빠른 연결 단추 설정 클릭 -> 상단 input box에 putty.exe 입력 후 추가 버튼 클릭 -> OK


아니면 그냥 빠른 연결 단추를 보지 않음으로 설정해도 된다.


이렇게 하니깐, 팀뷰어를 실행해도 도킹이 잘된다!!

반응형
,
반응형

MSSQL에서 몇십만건 정도되는 데이터를 엑셀에 보기좋게 넣으려다 보니

한번에는 클립보드 공간 limit가 있는지 안되길래, 10만건씩 나누어서 해보았다.


그런데, 복사할때마다 이전껄 초기화하고 다시 넣는 방식이 아니고

쌓아놓는 방식인가보다. 

몇번 하니까, 클립보드 공간이 모자라다고 나오고 ㅋㅋ 


아래 명령어를 입력하면, 클립보드가 초기화된다.


cmd /c "echo off | clip"
반응형
,
반응형

물리 장비에다가 여러대의 가상머신을 두는 가상환경을 구축하는 경우가 많다.


가상머신이 많아지는 경우, 동일한 물리 장비에서 제공되는 환경이다보니,

특정 가상머신이 CPU를 많이 차지하게 되면, 다른 머신들도 따라서 느려지게 되는데,

이 현상을 CPU Steal이라고 한다.


CPU를 많이 차지하고 있는 머신의 CPU Steal Time은 낮게 측정이되고,

같은 물리 장비에 구성된 다른 가상 머신의 경우 CPU Steal Time이 높게 측정이 되게 된다.


가상 환경을 구축해볼 일이 거의 없는데, 갑자기 이런 질문이 와서 당황을 했는데

아는 분이 답변을 해주셔서 정리를 하게 되었다.

반응형
,
반응형

최근 퍼블리셔에서 Linux Application을 깔아주지 못하겠다고 얘기를 해와서

어디서 줏어들은 Docker나 써보자! 하고 생각을 하였다.


Docker Image라는 것을 잘 구성해서, 다른 서버에서도 동일한 Docker Image를 가지고 Container로써 이용이 가능하다고 한다. 

(Docker Image를 띄우면 Container가 됨)


GitHub이나 Yum Repository처럼, 누군가 만들어둔 어플리케이션을 아래 url에서 검색하여, pull 명령어 하나만으로 받을 수 있다.


https://registry.hub.docker.com/


※ Docker 설치 과정은 간단해서 생략.


나는 Tomcat 8.0 버전을 설치할 것이므로, 아래와 같이 입력을 한다.

$ docker pull tomcat:8


Tomcat8 버전에 대한 Docker Image가 받아졌으므로, 준비해둔 war파일과 함께 daemon 형태로 띄우고, 외부에서 접근 가능하도록 port forwarding 설정까지 명령어 한번으로 해결을 해보자.

$ docker run -d -i -t --name="tomcat8-test" -p 8081:8080 -v /mypath/test.war:/usr/local/tomcat/webapps/test.war tomcat:8.0



docker run --help 명령어를 통해 옵션들에 대해 알아볼 수 있지만, 위에서 사용된 중요한 키워드에 대해 짚고 넘어가도록 하자.


-d : 데몬으로 띄움

-p 8081:8080 : image를 8080으로 띄우는데, host에서는 8081로 접근이 가능하도록 한다. (port forwarding)

-v /mypath/test.war:/usr/local/tomcat/webapps/test.war : -v는 볼륨 관련 명령어로써, host에 있는 파일을 container로 이동할 수가 있다. host와 container는 콜론 (:)으로 구분을 한다. host에 /mypath/test.war 파일을 docker container의 /usr/local/tomcat/webapps/test.war로 이동시킴.


추가로 옮겨야할 파일 (jdbc Driver 등)들은, docker cp 명령어를 이용하면 될 것 같다.  


DockerFile을 작성해서 운영하면 더 편하다고 하는데, 이건 좀 더 연구해서 다음 포스팅에 작성하도록 해야겠다.

반응형
,
반응형

Vagrant로 ubuntu 기본을 세팅해서 일일히 설치하는 방법도 있지만..

대부분 잘되지 않는 경우가 많기 때문에, 아예 Docker사용에 특화되어 있는 CoreOS를 직접 깔아서

Docker를 사용해보면 어떨까하는 마음에 시작하였다.


※ Vagrant는 워낙 설치가 간단해서 생략. (그냥 다운로드 받아서 더블클릭만 하면 끝)


1. git bash를 이용하여 VagrantFile이 들어있는 CoreOS를 받아온다. 

$ git clone https://github.com/coreos/coreos-vagrant.git


2. 받아온 폴더로 이동하여 vagrant up

$ cd coreos-vagrant
$ vagrant up


3. 터미널 띄우기

$ vagrant ssh


이제 윈도우에서 docker를 사용할 수 있는 환경이 구축되었습니다.

반응형
,
반응형