Category
show
전체 (733)
웹표준, 웹접근성™ (5)
웹프로그래밍™ (343)
웹기획™ (0)
웹디자인™ (5)
서버™ (27)
데이터베이스™ (42)
개발자료 (9)
트랜드 (60)
Study English (2)
블루비 (62)
오피스 다이어리 (19)
Textcube (2)
이슈 (20)
컴퓨터 악세사리 (18)
엔터테인먼트 (24)
좋은글 (62)
재테크 (1)
이벤트 (4)
1 

hostname 변경 - sendmail 발송시 속도에 영향 줌

서버™/Linux 2008/04/24 16:17 by 블루비 Total 589 : Today 1 : Yesterday 4
메일 발송시 속도도 느리고 아래와 같은 로그 내용이 보인다면 hostname 을 변경해줘야 합니다.
Apr 24 02:51:15 ubuntu sendmail[1823]: My unqualified host name (ubuntu) unknown; sleeping for retry
Apr 24 02:51:16 ubuntu sm-msp-queue[1817]: unable to qualify my own domain name (ubuntu) -- using short name
Apr 24 02:52:15 ubuntu sendmail[1823]: unable to qualify my own domain name (ubuntu) -- using short name
Apr 24 02:52:15 ubuntu sendmail[1823]: My unqualified host name (ubuntu) unknown; sleeping for retry
Apr 24 02:53:15 ubuntu sendmail[1823]: unable to qualify my own domain name (ubuntu) -- using short name
호스트 네임 변경 방법
#hostname blueb.net

그리고 아래의 것들을 추가 수정해줍니다.

/etc/hosts 에도 아이피와 도메인 주소 추가
127.0.0.1 localhost
000.000.000.000 blueb.net
/etc/mail/local-host-names 에 도메인 주소 추가
blueb.net
localhost

2008/04/24 16:17 2008/04/24 16:17

TRACKBACK :: http://blueb.net/blog/trackback/1210

아시아눅스 sendmail 문제 해결방법

서버™/Linux 2007/12/12 10:20 by 블루비 Total 570 : Today 0 : Yesterday 2
아시아눅스에서 sendmail 실행시 아래와 같은 메시지가 뜨며 메일 데몬이 실행이 안되는 경우가 발생이 됩니다.
sm-client을 시작하고 있습니다: sendmail: fatal: flush queue mode requires no recipient

해결:rpm -qa | grep postfix 으로 검색된 패키지들을 모두 삭제 후 sendmail을 실행 하면 아무 문제 없시 잘 됩니다.

[root@localhost ~]# rpm -qa | grep postfix
postfix-pflogsumm-2.2.10-1.1AX
postfix-2.2.10-1.1AX
[root@localhost ~]# rpm -e postfix-pflogsumm-2.2.10-1.1AX
[root@localhost ~]# rpm -e postfix-2.2.10-1.1AX
[root@localhost ~]# /etc/rc.d/init.d/sendmail start


2007/12/12 10:20 2007/12/12 10:20

TRACKBACK :: http://blueb.net/blog/trackback/991

리눅스 시간설정

서버™/Linux 2007/06/29 16:04 by 블루비 Total 484 : Today 1 : Yesterday 2

- 시간설정


# date [MMDDhhmm[[CC]YY][.ss]

맞추려는 시간이 2004년 07월 15일 오후 4시 15분 50초라면

# date 071516152004.50

타임서버

time.bora.net
time.kriss.re.kr -- 주로 refuse .


타임서버 시간 보기
# rdate -p time.bora.net


타임서버 시간을 로컬 시간으로
# rdate -s time.bora.net


확인
# date


- cron 활용

/etc/crontab 에 아래 내용을 넣습니다.

00 1 * * * root rdate -s time.kriss.re.kr && clock -w

앞의 00은 분을 지정합니다. 0~59까지
두번째 1은 시간을 지칭합니다. 0-23까지
그 다음은 *는 날짜를 지칭합니다. 1-31까지
그 다음은 *는 월을 지칭합니다. 1-12까지
그 다음은 요일을 지정합니다. 0-6까지...0이면 일요일
root는 실행되는 권한을 지정합니다.
그 뒤는 명령어입니다.



출처 : http://blog.naver.com/2jaekoo?Redirect=Log&logNo=90003925739

2007/06/29 16:04 2007/06/29 16:04

TRACKBACK :: http://blueb.net/blog/trackback/890

리눅스(LINUX) 명령어

서버™/Linux 2007/05/30 09:58 by 블루비 Total 646 : Today 0 : Yesterday 4

출처 : http://hompy.info/83

1. ls
파일의 목록을 보기 위한 명령
#문법
ls [ -옵션]
-a : 디렉토리내의 모든 파일을 전부 보여준다.
-C : 가로 순서로 나열하여 출력한다.
-x : 세로 순서로 나열하여 출력한다.
-d : 현재 디렉토리에 대한 정보를 출력한다.
-l : 각 파일들에 대한 소유자, 권한, 갱신일 등의 자세한 정보를 출력한다.
-s : 파일이 얼마나 많은 디스크 블록을 차지하고 있는가를 1K블록 단위로 보여준다.
-t : 파일 갱신일 순서대로 정렬한다.
-u : 엑세스(access)한 날짜 순서대로 정렬한다.
-c : inode가 최근 변경 시간에 따라 순서대로 정렬해서 보여 준다.
-r : 정렬된 순서의 역으로 출력한다.
-i : 파일의 inode 번호를 보여준다.
-F : 파일의 특성을 쉽게 알 수 있는 문자를 나타낸다. +는 실행 가능한 파일을, /는 디렉토리 이름을 의미한다. @는 심볼릭 링크를 나타내고, =는 소켓(socket)을 나타낸다. 하지만 여러분의 리눅스는 기본적으로 이러한 특성을 보여줄 것이다.
-R : 현재의 작업 디렉토리의 내용과 하위 디렉토리의 내용까지 모두 보여준다.

2. cd
현재 디렉토리에서 다른 디렉토리로 경로를 변경하기 위한 명령으로 디렉토리 이름과 cd 명령 사이에 반드시 공백이 있어야 하며, 디렉토리 이름을 주지 않고 수행하면 사용자의 홈 디렉토리로 이동하고, 자신이 이동하고자 하는 디렉토리는 자신에게 실행 권한(execution permission)이 있어야 한다.
cd [ 디렉토리 ]
* . : 점 한개는 현재의 디렉토리 위치를 의미 한다.
* .. : 점 두개는 현재의 디렉토리의 한 단개 위의 상의 디렉토리를 의미한다.
* ~ : 자신의 계정 디렉토리 위치를 의미한다.

3. mkdir
새로운 디렉토리를 만들기 위해 사용하는 명령이다
mkdir [ -m mode ][ -p ] 생성 디렉토리
옵션
-m : 디렉토리를 만들 때 같이 사용하여 사용자 권한을 줄 수 있다.
-p : 만들 디렉토리의 상위 디렉토리까지 한꺼번에 만든다.

4. rmdir
mkdir에 의해 만들어진 디렉토리를 제거하는 명령이다.
rmdir [ -p ] 디렉토리
-p : mkdir의 -p 옵션의 반대 동작으로 하위 디렉토리와 그 상위 디렉토리 모두를 제거할 수 있다. 이때 모든 디렉토리는 비워져 있어야 한다. 수행 후 결과가 어떻게 되었는지를 보여준다.

5. rm
파일의 삭제
<문법>
rm [ -firv ] 파일명
<옵션>
-f : 보통 지울 수 있는 권한이 없으면 안되지만, 이 옵션을 사용하면 성가신 작업을 하지 않고서도 강제로 파일을 지울 수 있다.
-i : 파일을 지울 것인가 다시 물어본다. 지우기를 원한다면 y를 누른다.
-r : 서브 디렉토리의 파일도 모두 재귀적으로 지운다.
-v : 파일을 지우기 전에 파일의 이름을 나타내준다.

6. mv
파일의 위치를 이동하거나 파일의 이름을 바꾸어 주는 명령으로 기존에 있던 파일을 원치않게 잃어버리는 수가 있기 때문에 확실하지 않다면 -i 옵션을 사용하는 것을 권한다.
mv [ -fi ] 파일명1 파일명2
mv [ -fi ] 파일명(들) 디렉토리명

-f : 같은 이름의 파일이 존재하고 쓰기 권한이 금지되어 있더라도 물어보지 않고 덮어쓰기를 해버린다. 이런 경우 이 옵션을 사용하지 않으면 사용자에게 다시 확인을 할 것이다.
-i : 파일을 덮어쓰기 전에 사용자에게 확인한다.

7. cp
파일을 현재의 위치나 다른 디렉토리로 복사(copy)한다. 만일 파일명2가 이미 존재하는 파일의 이름이라면 기존에 있던 파일은 사라지고 새로운 복사본 파일로 바뀐다. 이것이 원하지 않는 결과라면 -i 옵션을 주어서 확인 작업을 거칠 수 있다. -i 옵션은 파일명2가 이미 존재하는 이름이라면 그대로 복사할 것인지 아닌지를 선택할 수 있게 물어온다.
문법
# cp [ -abdfilPprsuvxR ] 파일명1 파일명2
# cp [ -abdfilPprsuvxR ] 파일명(들) 디렉토리
-a : 가능한한 원 파일의 구조와 속성을 그대로 복사한다.
-b : 복사할 때 덮어쓰게 되는 파일은 백업을 만든다.
-d : 심볼릭 링크는 심볼릭 링크로 복사한다. 그리고 원본 파일과의 하드 링크 관계를 유지한다.
-f : 복사 위치에 존재하는 파일을 제거하고 복사한다.
-i : 복사시 같은 이름의 파일이 존재한다면 덮어쓸 것인가 확인한다.
-I : 하드 링크를 만든다.
-P : 원본 파일의 소유자, 그룹, 권한, 시간 기록을 그대로 복사한다.
-r : 파일과 하위 디렉토리에 포함된 파일 모두를 재귀적으로 복사한다.
-s : 디렉토리가 아닌 파일의 심볼릭 링크를 만든다. 소스 파일의 이름은 전체 경로 이름으로 한다. 목적지 파일 이름은 전체 경로를 주지 않아도 현재 디렉토리로 간주되므로 상관없다.
-u : 파일의 정보를 갱신한다.
-x : 다른 파일 시스템인 하위 디렉토리는 무시한다.
-R : 디렉토리를 재귀적(recursive)으로 복사한다.

8. cat
cat은 catenate(사슬로 잇다. 연결하다)에서 이름이 유래한다. 이것은 파일의 내용을 화면에 출력하는 데 사용되기도 하며 파일을 다른 곳에 순차적인 스트림으로 보내기 위해 사용된다.
cat [ -benstuvETA ] [ 파일명(들) ]
-b : 공백 외의 글자가 있는 모든 행의 개수를 센다.
-e : 제어 문자를 ^ 형태로 출력하면서, 각 행의 끝에 $를 추가한다. -vE와 같다.
-n : 각 행을 출력하면서 행 번호를 함께 첨부한다.
-s : 중복되고 겹치는 빈 행은 하나의 빈 행으로 처리한다.
-r : 행바꿈 문자를 제외한 제어 문자를 ^ 형태로 출력한다. -vT와 같다.
-u : 유닉스 호환성을 위해 추가된 옵션으로서 무시된다.
-v : tab과 행바꿈 문자를 제외한 제어 문자를 ^ 형태로 출력한다.
-E : 각 행마다 끝에 $ 문자를 출력한다.
-T : 시로서 탭(tab) 문자를 출력한다.
-A : -vET 옵션을 사용한 것과 같은 효과를 가진다.

9. pwd
현재 작업하는 디렉토리를 알기 위해서 pwd 명령으로 현재의 디렉토리(current directory)가 어떤 것인지를 보여준다.
pwd

10. finger
시스템 상의 사용자들에 대한 정보를 보여주는 명령으로 인수로 아무 것도 주어지지 않으면, finger는 현재 시스템에 로그인되어 있는 사용자들을 보여준다. 옵션이 주어지지 않으면, 기본적으로 -l 옵션을 사용한 것으로 간주된다.
finger [ -slpm ][ 사용자 ]
-s : 사용자의 로그온 이름, 실제이름, 터미널 이름, 로그온 시간 등등을 보인다.
-I : -s 옵션 정보에 몇 가지를 추가하여, 여러 줄에 걸쳐서 보여준다.
-p : -l 옵션 정보에서 .plan과 .project 파일을 보이지 않는다.

11. who
현재의 시스템에 접속한 사용자의 이름이나 로그온 정보를 보여준다.
who [ -uTHqs ] [로그온 정보파일 ]
whoamI
-u : 현재 시스템에 누가 로그온되어 있는지 보여준다.
-T : 사용자의 터미널이 메시지를 보낼 수 있는지를 알려준다. +기호는 메시지를 쓸 수 있고, -는 그렇지 않음을 보여준다.
-H : 헤더 라인을 프린트한다.
-q : 사용자 이름과 카운트가 구분된 목록을 보여줌, 다른 옵션은 무시된다.
-s : 호환을 위해 포함된 옵션으로 무시된다.
# $ whoamI [Enter]'
이런 명령도 가끔은 필요할 것이다. 가령 친구의 계정으로 로그인했는데 그것을 잊어버렸을 경우라든지 아무도 없는 학교 실습실에 켜진 채 놓여진 터미널을 발견했을 때 누가 사용하다가 자리를 비웠는지 알고 싶을 때 등이다.

12. more
한 화면씩 츨력을 보여주는 유틸리티, 한 번에 전체적으로 볼 수 없는 파일은 이것을 사용하여 스크롤을 제어할 수 있다.
more [ -ncdflspu ][ +줄번호 ][ 파일이름(들) ]
-n : 여기서 n은 숫자를 의미하여, 숫자는 출력 윈도우의 행수를 지정한다.
-c : 위에서부터 한 행씩 지운 후 한 행씩 출력한다. 보통은 화면 전체를 지운 후 각 행을 출력하기 시작한다. 특정한 터미널을 위해 사용한다.
-d : 스페이스나 q 키를 누르라는 프롬프트를 출력한다.
-f : 화면의 행이 아닌 논리적인 행 수를 계산한다. 보통은 긴 칼럼의 행은 화면에서 행바꿈을 하여 새로운 행으로 계산된다. -f 옵션을 사용하면 이러한 행은 계산하지 않는다.
-s : 여러 개의 빈 공백행은 하나로 취급한다.
-p : 스크롤하지 않는다. 대신 화면을 지우고 출력한다.
-u : 밑줄 차기를 금지한다.

13. clear
clear 명령은 도스의 cls와 마찬가지로 화면을 지우는 동작을 한다.

14. hostname
현재 설정되어 있는 호스트의 이름을 표시하거나 변경할 때 사용하는 명령으로 인수없이 사용된다면 현재 설정되어 있는 호스트 이름을 보여준다. 리눅스는 기본적으로 프롬프트에서 호스트의 이름을 보여줄 것이다. 혹은 사용자가 프롬프트에 호스트 이름이 나타나도록 할 수도 있다. 인수로서 새로운 호스트 이름을 지정한다면 새로 지정된 이름으로 호스트 이름을 바꾼다. 하지만 이런 작업은 수퍼 유저만이 할 수 있다.
hostname [ 호스트이름 ]

15. date
시스템은 현재의 날짜와 시간을 유지하고 있다. date 명령을 사용하면 그러한 시간을 확인할 수 있다. 또한 날짜와 시간 정보를 변경할 수 있다. 물론 시스템의 날짜와 시간은 슈퍼 유저만이 변경할 수 있다.
data


16. df
디스크의 여유 공간을 검사하여 보고한다. 이것은 바이트 크기를 사용하는 대신 블록 단위로 보고한다는 점을 유의해야 한다. 기본적으로 512바이트 크기로 한 블록을 다룬다.
df [ -aikpvtx ] 파일시스템
-a : 0 블록을 가진 파일도 보고한다. 기본적으로는 무시한다.
-i : 블록 사용 대신 incode 사용 정보를 보고한다.
-k : 블록의 크기를 1K바이트로 계산한다.
-p : POSIX 형태의 출력을 한다.
-v : System V의 df와의 호환을 위한 옵션이다. 무시된다.
-t 형태 : 특정 형태의 파일 시스템으로 검사를 제한한다.
-x 형태 : 특정 형태의 파일 시스템 이외의 것으로 검사를 제한한다.

17. env
현재의 환경에 영향을 주지 않고 원하는 환경을 만들어 명령을 실행한다. 또는 현재의 환경을 보고한다. '이름=값'의 형식으로 특정 환경 변수를 지정해서 명령을 실행한다. 이러한 값을 필요한 대로 여러 개 나열하면 되고, 현재의 환경은 변경하지 않으므로 명령의 수행이 끝나면 환경의 상태는 이전과 다름없게 된다.
env [ - ][-i ][ -u 이름 ][ 이름=값 ][명령]
- : 뒤에 오는 이름=값 목록으로 환경을 제한한다.
-i : 현재의 환경을 무시하고 빈 환경 상태로 시작한다.
-u 이름 : 현재의 환경에 그 이름의 변수가 있다면 제거한다.

18. find
원하는 특정 파일을 디렉토리를 탐색하여 찾는다. find는 매우 강력한 도구로 특정 디렉토리들을 순회하면서 지정된 조건에 만족하는 파일을 찾는다. 파일의 조건은 이름이나 크기, 날짜 등 다양하게 지정할 수 있다.
find [ 디렉토리 ] 탐색 조건
-name 파일명 : 찾고자 하는 파일의 이름을 정한다. 와일드 카드도 가능하다.
-perm 모드 : 파일 권한(permission)이 일치되는 것을 찾는다. 원하는 권한은 ls로 볼 수 있는 형태와 같이 지정한다.
-type : 형태가 같은 파일을 찾는다. 물음표() 부분에 디렉토리는 d, 파이프는 p, 심볼릭 링크는 l, 소켓은 s, 블록 파일은 b, 일반 파일은 f 등의 기호를 사용한다.
-links : 특정 개수의 링크를 가진 파일을 찾는다. 물음표 부분에 링크의 숫자를 표기한다.
-size : 파일의 크기가 일치하는 것을 탐색한다. 파일 크기는 블록단위로 물음표 부분에 지정한다. 한 블록은 512바이트로 내정되어 있지만 블록 숫자 뒤에 단위로 k자를 붙이면 1키로바이트 크기의 블록 숫자로 간주된다.
-user 사용자 : 파일 사용자의 ID에 따라서 검색한다. 로그인 이름이나 번호 모두가 가능하다.
-atime : 최근 며칠내에 엑세스한 파일을 검색한다. 날짜수는 에 명시한다.
-exec 명령 : 원하는 검색 조건에 맞는 파일을 찾으면 명시된 명령을 실행한다. 명령의 끝은 \;을 사용하여 끝낸다. find가 검색해낸 파일의 이름을 인수로 사용하고 싶다면 그 위치에 {}를 사용한다.
-newer 파일 : 어떤 파일보다 최근에 갱신된 모든 파일을 검색한다.

19. chmod
파일의 모드를 바꾼다. 파일의 모드는 권한(permission) 을 제어한다.
chmod [ -cfvR ] 모드 파일명(들)
chmod [ -cfvR ] 레벨 동작 권한 파일이름(들)
-c : 실제로 파일의 권한이 바뀐 파일만 자세히 기술한다.
-f : 파일의 권한이 바뀔 수 없어도 에러 메시지를 출력하지 않는다.
-v : 변경된 권한에 대해서 자세히 기술한다.
-R : 디렉토리와 파일들의 권한을 재귀적으로 모두 바꾼다.

20. file
파일이 어떠한 형태의 파일인지 알아낸다. 파일이 텍스트 문서인지 실행할 수 있는 파일인지 아니면 데이터 파일인지 등을 인식한다. 에디터를 사용해서 보거나 수정될 수 있는 파일인가 알아 보는 데에 많이 사용된다.
file [-czL ][ -fm 파일명 ] 파일명(들)
-c : 매직 파일의 파싱된 형태를 보여준다.
-z : 압축되어 있는 파일의 형태를 검사한다.
-L : 뒤따르는 심볼릭 링크를 야기시킨다.
-f 파일명 : 검사한 파일에 대해 리포트를 만들 파일의 이름을 지정한다.
-m 파일명 : 파일의 형태를 결정하는 데에 사용되는 매직 파일을 정한다.

21. ln
두 개의 파일 사이에 링크를 만들어, 하나의 파일을 두 개 이상의 이름으로 접근이 가능하도록 한다.
ln [ -s ] 파일명1 파일명2
ln 파일명들 디렉토리
-s : 하드 링크 대신 심볼릭 링크를 만든다.

22. man
사용하고자 하는 유닉스 유틸리티에 대한 매뉴얼(manual)을 검색해서 보여준다. 쉘을 사용할 때 어떤 명령의 사용법이 기억나지 않는 경우가 있다. 혹은 매번 사용하던 명령이라도 특수한 옵션이 필요할 때 그 기호나 사용법을 정확히 확인해야 하는 경우가 많이 있다. 물론 참고 서적을 보면 되겠지만 터미널 상에서 필요한 도움말을 언제라도 제공받을 수 있다. 시스템에 내장된 매뉴얼은 빠르게 볼 수 있을 뿐만 아니라 그 내용도 완벽한 것이어서 옵션의 종류 같은 것은 빠진 것이 없다. 만일 온라인 레퍼런스를 모두 종이로 출력한다면 그 분량은 엄청날 것이 틀림없다.
man [ 장 ] 단어
man -k 키워드
-k : 인수로 주어진 단어를 키워드로 사용하여, 해당 키워드가 발견되는 모든 매뉴얼의 내용을 검색하여 보여준다.

2007/05/30 09:58 2007/05/30 09:58

TRACKBACK :: http://blueb.net/blog/trackback/868

리눅스 비프(linux beep)음 제거

서버™/Linux 2007/04/30 20:57 by 블루비 Total 499 : Today 1 : Yesterday 4

vi 나 vim 등으로 /etc/profile 파일을 열어서 다음을 추가한다.

echo -ne '\033[11;0]'



2007/04/30 20:57 2007/04/30 20:57

TRACKBACK :: http://blueb.net/blog/trackback/845

Apache rewrite Module(mod_rewrite)

서버™/Linux 2006/11/03 16:19 by 블루비 Total 470 : Today 0 : Yesterday 0
출처 : http://www.superuser.co.kr/home/lecture/?leccode=308

Apache rewrite Module -작성자 : 윤일-


Apache 는 추가적으로 사용할 수 있는 유용한 모듈들을 제공합니다.

이번강좌에서는 Apache의 URL Rewrite 모듈을 사용하기 위한 컴파일,설치와 httpd.conf의 설정방법 그리고 활용방법에 대해 알아보겠습니다.


Apache 다운로드 : http://www.apache.org

1. rewrite 모듈을 사용하기 위한 Apache 컴파일옵션

Rewrite 모듈을 쓰기위한 Apache 컴파일 옵션은 --enable-rewrite 입니다.

Configure 실행시에 --enable-rewrite 만 추가하시면 Apache에서 rewrite 모듈을 사용할 있게 됩니다.

[root@superuser root]# ./cofigure prefix=/usr/local/apache2 --enable-rewrite
[root@superuser root]# make
[root@superuser root]# make install

1. Rewrite 를 적용할 수 있는 범위

Rewrite 설정은 Server Config, Virtual Host, Directory, .htaccess 에 설정할 수 있습니다.

즉 Apache 서버 전체에 Global 설정과 특정 가상호스트에만 적용하도록 할수 있고 특정 디렉토리에만 적용시킬수도 있습니다.

2. Rewrite 모듈 지시자

RewriteEngine
설정문법 : RewriteEngine On|Off

Rewriteing 엔진을 사용할지 여부를 설정합니다. 기본설정은 당연히 Off로 되어 있으며 RewriteEngine On 으로 설정하지 않는 이상 Rewritng 엔진을 활성화 시키지 않습니다.

현재 Apache에서 실행중인 모든 RewriteRule을 비활성화 시킬 때 RewriteRule 라인을 주석처리 하기보다 RewriteEngin Off 로 설정하는 것이 더 간편하고 올바른방법입니다.

RewreteLog
설정문법 : RewriteLog FILE-PATH

RewriteLog 지시자는 Rewrite 엔진의 로그를 그록할 파일을 지정합니다.
RewriteLog 파일을 항상 남기기 보다 잘못된 Rewrite 규칙들을 디버킹할 때 사용하기를 권장합니다. 아파치와 마찬가지로 RewriteLog 파일도 방문자수가 많은사이트에서는 감당못할 정도의 로그파일을 남기기 때문에 시스템 여유공간이 많이 없는 시스템에서는 해당 파티션의 하드사용률 100%로 인한 재앙(?)을 불러올수도 있습니다. 다음강좌에서 소개될 로그파일 분석에서 언급하겠지만 로그파일은 유용한 디버깅 도구가 될수 있지만 잘못 관리하면 시스템의 치명적인 악으로 존재할수도 있습니다.

RewriteLog 지시자는 반드시 RewriteLogLevel 지시자와 함께 사용하여야 됩니다.

RewriteLogLevel
설정문법 : RewriteLogLevel Level

RewriteLogLevel 지시자는 RewriteLog 지시자로 설정한 로그파일에 기록할 로그들에 대해 얼마나 자세한 내용을 로그로 남길것인가에 대해 설정하는 지시자입니다.

기록할 로그 Level 은 0 ~ 9까지 사용할 수 있으며 0은 로그를 기록하지 않겠다는 의미입니다. Level 숫자가 높을수록 자세한 로그를 기록합니다

RewriteCond
설정문법 : RewriteCond TestStirng CondPattern

RewriteCond 지시자는 RewriteRule 과 함께 사용되는 규칙으로 RewriteCond 다음에 오는 RewriteRule은 RewrieteCond 에서 설정한 패턴과 일치해야지만 RewriteRule들을 실행한다.

RewriteRule
설정문법 : RewriteRule Pattern Substitution

Rewrite 모듈의 실질적인 Rewrite 규칙들을 적용하는 지시자입니다.

Pattern(Input URL) 을 Subtitution(Return URL)로 변경하기 위한 모든 규칙들은 이 지시자를 사용해서 설정해야 됩니다.

Pattern(Input URL) 에는 Perl 정규표현식을 사용할수 있기 때문에 Input URL 의 규칙을 유연하게 적용할 수 있습니다. 이 강좌에서는 기초적인 정규표현식 사용방법만 다루고 정규표현식에 대해 자세히 알고 싶으신 분은 정규표현식에 대한 강좌나 인터넷 문서를 참고하시기 바랍니다.

정규표현식 기초

. : 다수의 한문자
? : 0개 이상의 한문자
* : 0개 이상의 문자 또는 문자열
+ : 1개 이상의 문자 또는 문자열
(chars) : (, ) 안의 문자또는 문자열을 그룹으로 묶습니다. 이 문자그룹은 Substitution(return URL)에서 $N 의 변수로 활용할수 있습니니다.
^ : 문자열의 첫문(열)을 지정합니다.
$ : 문자열의 끝 문자(열)을 지정합니다.
(역슬래쉬) : 정규표현식에서 특별한 의미로 사용되는 문자의 특수기능을 제거합니다.(예:(, ), [, ] . 등)
{n} : 정확히 n번 반복
{n,} : n번 이상 반복
{n,m} : n 이상 m 이하 반복
[chars] : 문자들의 범위 또는 표현할 수 있는 문자들을 설정합니다.
예) [a-z] : a 부터 z 까지의 소문자, [tT] : 소문자 t 또는 대문자 T

정규표현식 단축표현들

[:alpha:] : 알파벳. [a-zA-Z] 와 같은 표현
[:alnum:] : 알파벳과 숫자. [a-zA-Z0-9] 와 같은 표현
[:digit:] : 숫자 [0-9] 와 같은 표현
[:upper:] : 대문자. [A-Z] 와 같은 표현

RewriteRule 플래그

forbidden|F : 요청하는 페이지를 403 에러로 redirect 시킵니다. RedirectRule 이 적용되고 있는 페이지를 일시적으로 사용중단을 시키거나 사용자로 하여금 페이지 접근을 할수 없게 할 때 사용합니다.

예) RewriteRule ^/test /home/blog/html/test.php [F]

사용자가 /test 로 접근할 경우 403 에러를 보냅니다.

gone|G : 요청하는 페이지를 410 에러로 redirect 시킵니다. 410 에러는 페이지가 사라젔거나 존재하지 않는다는 메시지입니다. 이것도 forbidden 과 마찬가지로 RedirectRule 이 적용되던 페이지를 일시적으로 중단시킬 때 유용하게 사용할 수 있습니다.

last|L : 이 플래그가 적용되면 뒤에 어떤 룰이 있더라도 이룰 아래의 규칙들은 적용되지 않고 RewriteRule 을 빠져나가게 됩니다. C, Perl, PHP 프로그램에서 루프를 빠져나가는 break 와 같은 의미를 가집니다.

chain|C : 이 플래그의 결과를 다음 RewriteRule 의 input 값으로 사용합니다.
예)

RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+).domain.com(.*) /home/$1/public_html$2

이 룰은 사용자 홈의 도메인을 2차 도메인으로 자동설정해 줄 때 많이 쓰는 룰입니다. RewriteRule의 input은 도메인을 제외한 URI 를 인식하기 때문에 도메인까지 인식을 시켜서 다음 RewriteRule 로 체크를 하기 위해 사용한 것입니다.

즉 http://user_id.domain.com/hello.html 이란 요청이 들어오면 /home/user_id/public_html/hello.html 로 redirect 시켜줍니다. 위와 같이 2차 도메인을 이용해 계정 사용자의 홈을 지정하기 위해서는 DNS 세팅이 선행되어야 됩니다.


RwriteRule 설정예

1. http://yourdomain.com/user_id -> http://yourdomain.com/home.php?id=user_id

RewriteRule ^/([a-zA-Z0-9])$ /home/user_id/public_html/home.php?id=$1

설명 : 도메인(http://yourdomain.com) 뒤에 오는 영문숫자로된 문자열을 지정하면서 그룹으로 묶었습니다. 이렇게 그룹으로 설정된 문자열 Pattern 은 Substitution(return URL) 에서 $1 이라는 변수로 받아 사용하게 됩니다. 즉 http://yourdomain.com/superuser 라는 페이지 요청이 들어오면 실제로는 http://yourdomain.com/home.php?id=superuser 라는 페이지로 redirect 시켜줍니다. 블로그나 카페(동호회) 사이트에서 블로그 사용자의 ID 로 개인 블로그 주소를 부여할 때 http://blog.com/user_id 로 부여해 주지만 실제 실행되는 파일은 이와 같이 redirect 시켜주는 경우가 많습니다.


2. http://yourdomain.com/daum -> http://www.daum.net

RewriteRule ^/daum$ -> http://www.daum.net

설명 : http://yourdomain.com/daum 라는 페이지 요청이 들어오면 도메인이 다른 http://www.daum.net 이라는 페이지로 redirect 시켜줍니다.

RewriteOptions
설정문법 : RewriteOptions Options

현재 사용할 수 있는 option 은 MaxRedirects=number 를 사용할 수 있으며 설정된 number값에 도달하게 되면 500 Internal Server Error 를 남기고 RewriteRule을 종료합니다. 잘못된 RewriteRule에 의한 무한 루프를 방지하기 위한 목적으로 사용되는데 시스템이 이유없이 다운된다거나 할 때 이 옵션과 Log 기록을 참고하여 디버깅 및 시스템 다운을 방지할 수 있습니다.

이 지사자는 Apache 2.0.45 이상에서 사용할 수 있습니다.


3. 실제 적용예

가상호스트 www.superuser.co.kr 에 대해 Rewrite Rule을 적용한 예입니다. 이 부분은 실제 운영되는 블로그 사이트를 위해 RewriteRule 을 적용한 예입니다.

DocumentRoot /home/blog/html
ServerName blog.xxx.ac.kr

# 여기까지는 일반적인 가상호스트 설정입니다.

RewriteEngine on

# RewriteRule을 사용하기 위해 On 으로 설정합니다.


RewriteLog /home/blog/rewrite_log_admin3.log
RewriteLogLevel 9

# Rewrite 실행중 Log를 남기기 위해 로그파일과 로그레벨을 지정했습니다.

RewriteRule ^/tb/([a-zA-Z0-9]+)/([0-9]+)$ /home/blog/html/blog/trackback.php?id=$1&post_no=$2

# 위설정은 블로그에 등록된 포스트의 트랙백 주소를 부여하기 위해 설정한 RewriteRule 로써 Pattern에 두개의 그룹이 존재하고 return URL에 순서대로 각 그룹을 $1 과 $2 로 받아 GET 변수로 치환한것입니다.

RewriteRule ^/xml/([a-zA-Z0-9]+)$ /home/blog/html/blog/rss_feed.php?id=$1

# 각블로그별 RSS 주소를 실제 파일로 지정한것입니다.

RewriteCond %{REQUEST_URI} !^/admin$
RewriteRule ^/([a-zA-Z0-9]+)$ /home/blog/html/blog/main.php?id=$1

# 먼저 RewriteCond 로 실제 존재하는 admin 이라는 디렉토리를 이어지는 RewriteRule에서 제외시키고 http://domain.com/user_id 로의 요청을 모두 /home/blog/html/blog/main.php?id=user_id로 redirect 시키는 룰입니다.

RewriteRule ^/([a-zA-Z0-9]+)/([0-9]+)$ /home/blog/html/blog/main.php?id=$1&post_no=$2

# /user_id/1345 로 요청하는 페이지를 /home/blog/html/blog/main.php?id=user_id&post_no=1345 로 redirect 시키는 룰입니다.

4. 마치면서

위에서 언급한 RewriteRule 뿐만 아니라 여러가지 상황에서 RewriteRule을 잘 활용한다면 아주 유용하게 웹페이지를 컨트롤 할수 있습니다. RewriteRule 을 세팅하기 이전에 반드시 정규표현식에 대해 어느정도 공부한후 적용해 보실 것을 권합니다.


강사 소개
rootman
이름 : 윤 일

email : admin골뺑이rootman.org, rootman골뺑이intermerit.com

homepage : http://rootman.org

2006/11/03 16:19 2006/11/03 16:19

TRACKBACK :: http://blueb.net/blog/trackback/678

리눅스 디렉토리 용량/크기 보는 명령; Unix-Linux Directory Size

서버™/Linux 2006/11/01 23:09 by 블루비 Total 670 : Today 0 : Yesterday 2

출처 : mwultong Blog ― 소설 / IT

하위 디렉토리까지 포함하여 "트리 사이즈 (Tree Size)"를 구하려면, du 라는 명령어를 사용합니다.

du -h --apparent-size
이 명령은 현재 디렉토리와 하위 디렉토리의 크기를 출력합니다.

-h 옵션은, 블록 사이즈 대신 사람이 읽을 수 있는 (킬로바이트)KB, 메가바이트(MB) 단위로 출력하라는 것이고

--apparent-size 옵션이 없으면, 파일들이 차지하는 "여분 공간"까지 다 디렉토리 사이즈에 포함되기에 용량이 더 크집니다.

du -h --apparent-size /

이렇게 하면 전체 하드에 있는 디렉토리들의 용량이 다 출력됩니다. "/"가 루트 디렉토리이기에.

하위 디렉토리를 포함하지 않으려면
-s
옵션을 소문자로 붙입니다. 도움말에는 대문자로 -S 이렇게 되어 있던데, 실제로는 소문자로 해야 하더군요-_-?
2006/11/01 23:09 2006/11/01 23:09

TRACKBACK :: http://blueb.net/blog/trackback/674

출처 : mwultong Blog ― 소설 / IT

리눅스나 유닉스에서는 df 라는 명령으로 현재 디스크의 남은 용량 등의 정보를 얻을 수 있습니다.

메가바이트(MB)/기가바이트(GB) 단위로, 알아보기 쉽게 출력하기 위해서는

df -h
이렇게 -h 옵션을 붙입니다.

그리고
df -h -T
이렇게 -T 옵션을 붙이면 파일 시스템의 종류까지 출력됩니다.


우분투 리눅스에서의 df -h -T 명령 결과:
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext3 7.6G 435M 6.8G 6% /
varrun tmpfs 62M 36K 62M 1% /var/run
varlock tmpfs 62M 4.0K 62M 1% /var/lock
udev tmpfs 62M 80K 62M 1% /dev
devshm tmpfs 62M 0 62M 0% /dev/shm
/dev/sda1 이 첫번째 하드 디스크 첫번째 파티션입니다. (스카시SCSI가 아닌 IDE 방식 하드의 경우에는 /dev/hda1)

* 하드디스크 전체 Size(사이즈)는 7.6 기가바이트
* Used(사용한 용량)는 435메가이고
* Avail(사용 가능한 용량)은 6.8기가이고
* 현재 6퍼센트 사용했습니다.

2006/11/01 23:05 2006/11/01 23:05

TRACKBACK :: http://blueb.net/blog/trackback/673