레이블이 Apache인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Apache인 게시물을 표시합니다. 모든 게시물 표시

2010년 4월 20일 화요일

Apache 웹 서버 장애 해결하기 1 (접속이 느려지거나 접속이 안 될 때)

접속이 느려지거나 접속이 안 될 때
가끔 접속자가 많은 서버를 운영하다 보면 갑자기 웹 접속이 되지 않거나 접속 이 너무 느려 아파치 데몬 개수를 확인해 보면 httpd가 256개나 떠 있는 경우 가 있다.
기본적으로 아파치 웹 서버의 경우 Max Clients가 256으로 설정되어 있어 동시에 256개의 데몬이 뜨게 되면 더 이상의 접속을 받아들이지 않고, 기 존의 프로세스가 죽을 때까지 대기한 후 접속이 끊기게 되면 그제서야 접속을 받아들이게 된다.
따라서 동시 접속이 많은 경우에는 이전의 웹 접속이 끊길 때까지 대기해야 하 므로 접속 속도가 느린 것처럼 느끼게 되는 것이다.
일반적으로 정상적인 접속 의 경우에 256개의 프로세스가 모두 뜨는 경우는 그리 많지 않기에 현재의 상 태가 비정상적인 접속인지 여부를 판단해야 한다. 이를 판단할 수 있는 방법 은 netstat -na grep ES로 ESTA BLISHED된 연결 상태를 확인하여 클라이언트 의 IP가 정상적인 연결인지 여부를 확인하면 된다.
또는 netstat -nagrep ESawk '{print $5}'sort로 클라이언트의 IP만 따로 소트하여 확인해 봐도 된다. 통상적으로 HTTP 1.1 규약에서부터 적용되기 시작 한 KeepAlive 기능을 지정하였을 경우 한 클라이언트 IP에서 동시에 3~5개 정 도의 http 프로세스를 생성하므로 한 IP에서 3~5개 정도의 프로세스를 생성하는 것은 정상적인 현상이다.
비정상적인 접속의 경우에는 다음과 같은 이유가 있을 수 있다.

Apache의 access_log에 관련된 파일형식 남기지 않게 하는 방법

이미지 서버를 구축해 사용하다 보면 access_log에 여러가지 파일형식의 로그들이 쌓여서
용량이 초과하는 경우가 많았을것이다. 여기서 로그들을 주석처리해서 막아 버리는 방법도
있지만 아래와 같이 해서 부분적으로 로그 쌓임을 방지 할수가 있다.

Apache httpd.conf 파일을 열어 다음의 내용들을 추가 하도록 하자.

### JPG Red Deny ####
SetEnvIf Request_URI \.jpg worm
SetEnvIf Referer \.jpg worm

### GIF Red Deny ####
SetEnvIf Request_URI \.gif worm
SetEnvIf Referer \.gif worm

### SWF Red Deny ####
SetEnvIf Request_URI \.swf worm
SetEnvIf Referer \.swf worm

### html Red Deny ####
SetEnvIf Request_URI \.html worm
SetEnvIf Referer \.html worm

### CodeRed Deny ####
SetEnvIf Request_URI \.ida worm
SetEnvIf Referer \.ida worm

### Nimda Deny #####
SetEnvIf Request_URI cmd\.exe worm
SetEnvIf Referer cmd\.exe worm
SetEnvIf Request_URI root\.exe worm
SetEnvIf Referer root\.exe worm
SetEnvIf Request_URI admin\.dll worm
SetEnvIf Referer admin\.dll worm

CustomLog /usr/local/apache/logs/access_log common env=!worm

진한 부분이 CustomLog 부분에 추가해줘야 할 부분이다.

Apache log들 용량을 줄이고 싶을때 사용하는 명령어

아파치 로그를 확인 하다보면 엄청난 양의 access_log,error_log를 확인할때가 있을것이다.
이때 이 양을 0으로 만드는 방법을 소개 하겠다.

cat /dev/null > access_log
cat /dev/null > error_log

Apache 버젼 확인 방법

부끄럽지만 내가 일하면서 알게 된 명령어ㅋㅋ
/usr/local/apache/bin/httpd -v
끝~~

2010년 4월 14일 수요일

Apache 웹서버에서 폴더 리스트가 출력 안되게 할려면...

Apache를 이용해 웹서버를 구축후에 이런 문의를 받았다
"폴더 리스트가 나오는데 안나오게 할 수 없나요"
이 문의를 받고 난 열심히 웹서핑을 시작하였다.

찾아낸 정보는 다음과 같다.

Apache 설정 파일인 httpd.conf 파일을 열고
/를 키워드 검색을 하자. 찾을 단어는 'FollowSymLinks'
찾게 되면 다음과 같은 문구를 볼수 있다.
Options Includes Indexes FollowSymLinks

그럼 여기서 어떻게 하면 되느냐 indexes를 지워주도록 한다.
그리고 Apache Restart를 해준후에 접근을 해보자. 그럼 원하던대로...

p.s 가상호스트일 경우에는 가상호스트 설정부분에도 indexes를 삭제해주면 된다.

2010년 1월 11일 월요일

cakePHP 설치 시 주의 할 사항...

그냥 cakePHP를 설치 하는 분들이 다 설치 해놓고 아파치 설정이라 던지 간단한 설정들을 빼먹고 하실까봐 이렇게 정리 해 봐요.

우선 제가 겪은 문제점 cakePHP 1.2.5 + PHP 5.3 궁합이 안 맞다는 점.
타임 관련 함수 때문에 오류가 발생!!!

그래서 PHP 버젼을 5.2로 다운그레이드 해서 오류 해결하였음.

혹시나 하는 맘에 mod_rewrite 설정을 하면서 몇가지 실수 할 사항을 정리 해 보면
우선 mod_rewrite.so가 존재 하지 않는 다면 다음과 같이 설치를 한다.

/아파치 경로/bin/apxs -a -i -c /아파치 설치본 경로/modules/mappers/mod_rewrite.c

설치가 완료 되거나 이미 설치가 되어 있다면 httpd.conf에서 다음과 같이 설정이 되어 있는지 혹은 추가 해야 되는지 확인하도록 한다.

LoadModule rewrite_module     modules/mod_rewrite.so
추가가 되어 있는지

<Directory "/아파치 경로/htdocs">
   AllowOverride All
</Directory>

위와 같이 All로 되어 있는지를 확인 한 후 저장 하도록 한다.(.htaccess 파일을 사용할 수 있게 하기 위함.)
그리고 apache를 재시작 해주도록 한다.

그럼 설정 완료.
그외의 오류 들은 웹페이지 들을 보며 해결 하시길...
(해결 하는데 별 어려움 없이 해결 하실 수 있을 꺼에요.)