500 internal server error

 

 

웹서핑을 하다보면 간혹 웹사이트에서 위 그림처럼 문구가 뜰때가 있습니다.

이 500에러가 무엇인지 한번 알아 볼게요.

 

500 : Internal server error

(서버 내부 에러)

 

서버의 일부(예를들어 CGI프로그램)가 멈추었거나 설정에서 오류(잘못된 결과나 적절하지 않은 헤더를 생성시키는 경우)가 나타났음을 의미한다.

 

 

이렇게 에러 내용을 정의하고 있는데

보통 DATA처리 오류로 인해 발생되는 문제로 생각할 수 있습니다.

응답자 server측의 문제가 대부분이며 data를 server에서 인식하지 못하거나

어떤 응답조건을 만족하지 못했을때 나타나는 에러메시지라고 볼 수 있습니다.

이런 문제가 본인의 홈페이지에 나타난다면 홈페이지를 운영하고 있는 웹호스팅 업체에 문의하면

이 부분은 쉽게 해결 될 수 있습니다.

 

이런 내용들을 정리하다 보니

아파치에러가 발생될 경우 보통은 홈페이지에 에러메시지가 뜨면서

사이트가 나오지 않게 되는 경우인데요.

이럴경우 매일 실시간으로 홈페이지를 접속해 모니터링 하기는 쉽지가 않죠.

 

모 업체에서는 이런걸 프로그램화 해서 문자나 메일로 받아볼 수 있도록 하는 서비스를 제공하고 있더군요.

이 업체에서 호스팅을 이용하지 않더라도

미어캣이라는 사이트에서 이런 모니터링 알림 서비스만 이용할 수 있다고 해요.

홈페이지를 운영하시는 분이라면 한번 이용해 보시는것도 홈페이지 운영에 도움이 될 것 같네요.

 

*서비스사이트: www.meerkat.kr

 

 

 

홈페이지를 접속하다 보면 간혹

 

404 Not found

404 Not found

404 Not found

404 Not found

404 Not found

404 Not found

 

이 에러코드가 우리를 당혹스럽게 할때가 있는데요.

이게 과연 뭘 말하는 걸까요?

그건 바로!!

 

'문서를 찾을 수 없음'을 나타냅니다.

이 에러는 클라리언트가 요청한 문서를 찾지 못한 경우 발행하는데,

URL을 다시 잘 보고 주소가 올바로 입력되었는지 확인해봐야하고

올바로 입력이 되었는데도 저 404에러 메시지가 뜬다면 그건 홈페이지 자체에 문제가 있는거랍니다.

웹호스팅 서버 아파치 트래픽 제한걸기

 

아파치 트래픽 제한.

1. 웹호스팅 아파치 트래픽 제한.

*먼저 http://www.snert.com/Software/mod_throttle/mod_throttle312.tgz
mod_throttle312.tgz 다운받는다.
#tar xvfpz mod_throttle312.tgz(압축푼다)
#cd /usr/local/src/mod_throttle-3.1.2

#make install 시킨다.
apxs -i -a -n 'throttle' mod_throttle.so
make: apxs: Command not found
make: *** [install] Error 127

(참고 인스톨시 에러가 발생한다. 그리고 APM세팅 방식을 DSO방식으로 설치한다.
STATIC방식으로 설치해도 되지만, 그 부분은 다시 설정해야한다.)

* static방식으로 설치 했을 경우 ...
configure 시--add-module=$mod_throttle_source_PATH/mod_throttle.c 추가.

* 그럼 DSO방식으로 설치 했을 경우...
* 모듈을 만들어준다.
[root@abcd mod_throttle-3.1.2]# /usr/local/apache/bin/apxs -c mod_throttle.c(모듈을 만들어준다)
gcc -DLINUX=22 -DUSE_HSREGEX -fpic -DSHARED_CORE -DSHARED_MODULE
-I/usr/local/apache/include -c mod_throttle.c
gcc -shared -o mod_throttle.so mod_throttle.o

* 에러부분에 추가 해주면 된다.

[root@abcd mod_throttle-3.1.2]# /usr/local/apache/bin/apxs -i -a -n 'throttle' mod_throttle.so
[activating module `throttle' in /usr/local/apache/conf/httpd.conf]
cp mod_throttle.so /usr/local/apache/libexec/mod_throttle.so
chmod 755 /usr/local/apache/libexec/mod_throttle.so
cp /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf.bak
cp /usr/local/apache/conf/httpd.conf.new /usr/local/apache/conf/httpd.conf
rm /usr/local/apache/conf/httpd.conf.new

* 이부분까지 설치 과정 끝 그럼 httpd.conf 파일 설정.

%공통 설정 부분

Order deny,allow
Denny from all
Allow from 211.174....

앞에서 처럼 설정했으면 http://mydomain/throttle-status/로 접속시
모든 도메인에 대한 트래픽이나 접속자수 등의 중요한 정보가 노출된다. 그래서.
특정 IP대역에서만 (211.174..)접근이 가능하도록 제한한는 설정.

%전체 적으로 트래픽을 조정시 일반설정


ThrottlePolicy Volume 300M 1d // 1일 300 M 로 제한

SetHandler throttle-status

SetHandler throttle-me

Order deny,allow
Deny from all
Allow from all
SetHandler throttle-me

위의 설정은 전체적으로 트래픽을 제한한것이다.
그러나 실질적으로는 throttlePolicy none으로 설정해주는것이 대분이다.
throttle-me는 http://atpple.com/throttle-me/접속시 atpple.com이라는
하나의 도메인에 대해서만 정보를 확이 할 수 있더로 하는 방벙입니다.

%가상호스트

ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /www/docs/dummy-host.example.com
ServerName dummy-host.example.com
ServerAlias example.com www.example.com
Throttle Policy Volume 100M 1d //1일 100M 제한
Throttle Policy Request 1000 1d //1일 히트수 1000회 제한
Throttle ClientIP 100 volume 200 300 //로그를 100K남기며 300초간 200K 의 전송량제한
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common


위와 같이 설정 후 정송량이나 히트수등을 초과하면 example.com접속시 원래의 페이지
아니 503에러 화면이뜨게 된다. ErrorDoucumet503 /에러메세지 경로 혹은 주소로 redirect
설정을 추가해 주면 트래픽 초과시 503에러 화면 대신 리다이렉트하여 지정헤준 에러화면을
보여준다.
그래서 이 에러화면에 경고문이하니 추고 히트및 트래픽에 대해 경고문을 만든다.

% 일반 설정 부분

ThrottlePolicy Volume 300M 1d

SetHandler throttle-status


% 가상호스트 설정부분

ServerAdmin webmaster@example.com
DocumentRoot /home/atpple/public_html
ServerName example.com
ThrottlePolicy Volume 500M 1d // 하루에 전송량 500M


위와 같이 설정시 별도로 제한을 설정하지 않은 모든 도메인은 하루 정송량이 1일 300메가로
제한 되지만. example.com은 500M로 제한된다.

그러나 위와 같이 설정할 경우 제대로 동작하지 않은 경우가 있으므로 특정 도메인에 대해서
가상호스트 설정시 선택적으로 적용하는것이 좋다.

모든 설정에 대한 관리는 http://mydomain/throttle-status에서 가능하며 각 개인별 도메인에
대한 트래픽 사용 양이나 히트수 등은 http://mydomain/throttle-me에서 볼 수 있다.
특히 throttle-status의 경우 현재까지 사용한 트레픽 양을 초기화 시킬 수도 있으므로 꼭 특
정 IP에 대한 대역을 설정해주기 바랍니다.

 

 

[출처] http://blog.naver.com/ssol_x/90051264923

APACHE(아파치)에서 제공하는

Common Validator사용하기

 

apache 에서 제공하는 common-validator jar 이란??

 => 데이터 Validator 체크를 위해서 공통클래스를 만들곤 하는데 이미 만들어진걸

씀으로서 수고를 덜 수 있는 방법!!

 

것을 잘 활용한다면 많은 수고를 덜수 있다. 열심히 만들어 사용할 수도 있지만.. 모방은 창조의 어머니(?)라는 말이 있듯이 이미 있는걸 찾아내 활용해서 확보되는 시간을 업무나 다른 활동에 중할수 있는것도 능력이라 할 수 있지 않을까 생각된다.

 

그렇다면! 이제 APACHE(아파치)에서 제공하는 Common Validator 사용하기에 관한 본격적인 내용을 살펴 봅시다~!!

 

http://commons.apache.org/validator/index.html

현재 1.3.1 까지 나와있는 상태이며 그대로 활용해도 되지만 ,

jar 내부에 제공하는 클래스들을 상속받아 좀더 구체적인 로직을 구현해서 사용하는것도 확장성 면에서 고려해볼만하다. 1.3. 에선 xml 검증 엔진도 추가 되어있다.

 

 

 

 

 

routines 패키지 내에 보면 구체적으로 Validator 체크를 할수 있도록 클래스가 제공된다.

클래스 이름만 봐도 어떤 종류의 데이터를 체크할수 있을지 감이 올 것이다.

그리고 제일 위 3개는 Abstract 라는 이름이 붙어있다. 이것은 추상클래스를 나타내며 3개를 제외한 클래스들에서 상속받아 구체적으로 구현한 것이다. 그러므로 3개를 제외한 클래스들을 쓰면 된다.

 

common-validator API 를 보면 http://commons.apache.org/validator/api-1.3.1/

설명에도 나와있지만 어떤 특정데이타를 다룰때 그 데이타에 해당하는 validator 체크할수 있도록 클래스가 분류 되어있는 것을 볼 수 있다. 

 

 

데이타에 대한 validator 가 아닌 일반적인 체크는 아래 클래스들을 사용하면되는데 보통 Genericvalidator 를 많이 사용한다.

 

[몇가지 함수예제]

 

public static boolean isBlankOrNull(String value) : blank or null 체크

public static boolean isByte(String value) : Byte 변환가능한지 여부

public static boolean isShort(String value) : Short 변환가능한지 여부

public static boolean isInRange(byte value, byte min, byte max)

범위지정한 곳에 속하는지에 대한 여부

 

[위 함수들을 사용해서 구현한 예제]

 

private static final int ID_CHECK_ID = 2;

   public void validateId(String id){

   if (!GenericValidator.minLength(id, ID_CHECK_ID)){

       throw new IllegalArgumentException("ID 길이가 너무 작다");

   }

}

 

+ Recent posts