태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
[UNIX] shutdown
from O.S/Unix 2010/06/07 16:16

출처 : http://unix.co.kr/bbs/board.php?bo_table=03_4&wr_id=273

shutdown 명령

목적

시스템 조작을 종료합니다.

구문

shutdown [ -d ] [ -F ] [ -h ] [ -i ] [ -k ] [ -l ] [ -m ] [ -p ] [ -r ] [ -t mmddHHMM [ yy ] ] [ -u ] [ -v ] [ +Time [ Message ] ]

설명

shutdown 명령은 운영 시스템을 정지시킵니다. 루트 사용자 권한이 있는 사용자만이 이 명령을 실행할 수 있습니다. 디폴트 값으로 종료할 때는, 사용자에게 메시지로 시스템 종료가 임박했음을 통지합니다(wall 명령 사용). 시스템이 종료되면 종료 완료 메시지가 나타납니다. 종료 완료 메시지가 나타나기 전에 시스템을 재시작하거나 끄지 마십시오. 그렇지 않으면, 파일 시스템이 손상될 수 있습니다.

주: 멀티포트 어댑터로 시스템과 연결된 tty에서 종료 명령을 수행했다면, tty에는 halt completed 메시지가 나타나지 않습니다.

시스템 종료 시간이 가까워지면 시스템의 모든 사용자의 터미널에 경고 메시지가 나타납니다.

시스템은 지정된 시간(디폴트는 60초)이 지난 후 사용통계 및 오류 로그 프로세스를 정지하고 항목을 오류 로그에 기록합니다. 그런 다음 shutdown 명령은 killall 명령을 실행하여 나머지 프로세스를 종료하고 sync 명령을 실행하여 나머지 모든 메모리 디스크 블록을 삭제합니다. 마지막으로 파일 시스템을 마운트 해제하고 halt 명령을 호출합니다.

주: shutdown 명령을 실행 중인 노드의 파일을 열어 놓았지만 해당 노드에 로그인되어 있지 않은 사용자에게는 시스템 종료를 통지하지 않습니다.

운영 시스템에 완전한 정지를 요청하면 shutdown 명령이 모든 프로세스를 정지시키고 모든 파일 시스템을 마운트 해제하며 halt 명령을 호출합니다.

시스템 관리자가 조정된 국지 종료 프로시저를 쉘 스크립트 /etc/rc.shutdown에 둘 수 있습니다. 이 스크립트는 존재할 경우, 시스템 종료 시작 시 실행됩니다. 스크립트가 실행되었으나 제로가 아닌 리턴 코드로 실패하면 종료가 정지합니다.

주의: 시스템을 유지보수 모드로 할 경우에는 파일 시스템을 깨끗하게 마운트 해제할 수 있도록 shutdown 명령을 /(루트) 디렉토리에서 실행해야 합니다.

주: 디폴트로, 소프트웨어를 제어할 수 있는 전원이 있는 모델에서 shutdown 명령이 발행되면 시스템의 전원을 끕니다.

플래그

-d 시스템을 분산 모드에서 다중 사용자 모드로 전환합니다.
-F 다른 사용자의 메시지를 생략하고 시스템을 가능하면 빨리 종료하게 하는 신속한 시스템 종료를 수행합니다.
-h -v 플래그와 동일하며 운영 시스템을 완전히 정지시킵니다.
-i 대화식 모드를 지정합니다. 대화식 메시지를 표시하여 시스템 종료 조작을 사용자에게 안내합니다.
-k 시스템 관리자가 시스템 종료의 원인 없이 시스템이 종료된다는 경고 메시지를 모두에게 알리도록 허용합니다. -k 플래그를 사용할 때는 메시지 전송을 제외한 다른 시스템 종료 활동은 일어나지 않습니다. 예를 들어, -l 플래그가 지정되고, 실행되지 않는 /etc/rc.shutdown 스크립트가 존재할 경우에는 종료되는 프로세스도 없고, /etc/shutdown.log에서의 로그인 활동도 없습니다.
-l 다운되는 파일 시스템, 디먼, 사용자 로그인, 라이센스 서비스, 네트워크 인터페이스에 대한 정보를 포함하는 /etc/shutdown.log 파일을 작성/추가합니다. 파일은 종료 장애 발생 시 진단 및 디버깅 목적으로 사용할 수 있습니다.

주: 플래그를 사용하는 동안 항목을 기록하기 위해 shutdown 명령에 대한 디스크 공간이 충분한지 확인하십시오.
-m 시스템을 유지보수(단일 사용자) 모드로 전환합니다.
-p 전원을 끄지 않고 시스템을 정지시킵니다. 이것은 무정전 전원 공급장치(UPS)에서 사용합니다. 이 플래그는 AIX 4.2 이상에만 적용됩니다.

주: -p 플래그는 영구 시스템 정지가 필요없는 플래그와 함께 사용되면 유효하지 않습니다. 다른 피연산자가 지연된 전원 공급을 요청하고 재부트해도 여전히 전원이 꺼집니다.
-r reboot 명령으로 시스템 종료한 후 시스템을 재시작합니다.
-t mmddHHMM [ yy ] mmddHHMM [ yy ]이 지정한 날짜에 시스템을 종료한 후 즉시 재시작합니다. 여기서
mm
달을 지정합니다.
dd
일을 지정합니다.
HH
시간을 지정합니다.
MM
분을 지정합니다.
yy
연도를 지정합니다.

shutdown -t 플래그는 -v 또는 -h 옵션과 함께 사용할 수 없습니다.

주: 이 옵션은 시스템 종료 시 전원을 자동으로 차단하는 전원 공급장치와 나중에 재부트할 수 있게 해 주는 경보 기능이 있는 시스템에서만 지원됩니다. 이 기능이 없는 시스템은 종료 후 즉시 정지하거나 재부트할 수 있습니다.
-u 이 플래그는 플래시 메모리를 갱신하고 재부트하기 위해 진단 프로그램에서 사용됩니다.
-v 운영 시스템을 완전히 정지시킵니다.

매개변수

+Time shutdown 명령이 시스템을 정지시키는 시간을 지정합니다. 즉시 종료는 화면에 now라는 단어가 나타납니다. 미래 시간은 +숫자 또는 시:분 형식 중 하나로 지정할 수 있습니다. 첫 번째 양식은 지정된 분 후에 시스템을 종료하며 두 번째 양식은 표시된 시간(24시간제로)에 시스템을 종료합니다. Message 매개변수가 지정되면 Time 매개변수도 지정되어야 합니다.
Message 메시지를 지정합니다.

예제

  1. 시스템을 끄려면 다음과 같이 입력하십시오.

    shutdown

    그러면 1분 후 사용자 프로세스와 init 프로세스를 정지시켜 시스템을 종료합니다.

  2. 사용자가 시스템에서 수행하던 작업을 종료하고 시스템을 유지보수 모드로 전환하는데, 사용자에게 더 많은 시간을 주려면 다음과 같이 입력하십시오.
    shutdown  -m +2
    그러면 2분 대기 후 시스템을 다중 사용자 모드에서 유지보수 모드로 전환합니다.

파일

/usr/sbin/shutdown shutdown 명령을 포함하고 있습니다.


*. gcc패키지 및 liggcc는 아래 링크에서 다운로드한다.
ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/gcc/



Compiling Apache2+ on AIX using the GNU GCC compiler - By Example for Apache 2.2.2 and 2.2.4

This was performed on AIX 5.3 ML 03 - a simple default AIX install with no extras and no IBM compilers installed. It is also assumed the machine is on your network. It was quiet simple and straight forward using the latest GNU compiler and Apache source code but I did had problems using older compiler versions. Below are my notes on how to do this, step by step and where to download the tools and source code. I hope this will save you time.

  1. Make sure you have a few hundred MB of free space in following places
    • /usr this is where by default Apache will be installed
    • the directory you will use for compiling Apache
    • and some space in /tmp never does any harm!
  2. Download the following:
  3. Install libm.a from the AIX CDROMs - this is the maths library
    • As the root user
    • Insert the AIX 5.3 installation CDROM 1 into the CD and use "smitty installp" to load this package.
    • I assume you can do this without further help.
  4. Install the compiler and library - as the root user
    rpm -Uvh gcc-4*.rpm
    rpm -Uvh libgcc-4*.rpm

  5. Uncompress the Apache Web Server source and untar the files in to a directory read for compiling
    gunzip httpd-2*tar.gz
    tar xvf httpd-2*.tar

    • You should now find a sub-directory with the name of httpd plus the version number. In my case it was "httpd-2.2.2"
    • cd to this directory
    • If you downloaded the httpd-2.2.2.tar.bz2 file, use bunzip2 to uncompress the file - not obvious unless you know!
  6. Prepare for the complication using the configure script, by typing the command (as a regular AIX user):
    ./configure -C --enable-so --prefix /usr/local/apache2

    • Here we request:
      • the checks are cached (-C) to save time,
      • dynamic library support (for example used by PHP which is a .so extension) and
      • the install directly will be /usr/local/apache2
    • Some people prefer to install into /opt/feeeware/apache2 but let us stick to the defaults to make it simpler. You can always try something different later on once you know it all works.
    • ./configure --help - will show you the hundreds of options.
    • Configure can take a long time - like 15 minutes (go for a cup of tea)
    • For Apache 2.2.4 add a further option as below:
      ./configure -C --enable-so --prefix /usr/local/apache2 --with-included-apr

    • Note that if you are compiling in an AIX 6.1 environment and intend to build PHP then you should omit
      --with-included-apr

      because you will get errors when attempting to start Apache. Apache will report missing symbols when loading the library libphp5.so. See point 10.
  7. Compile Apache2 by typing (as a regular AIX user):
    make

    • Note that you can use either AIX make or GNU make.
  8. Install Apache2 - all the important stuff will be in /usr/local/apache2. Type as the root user:
    make install

  9. If it all goes wrong, you can run "make clean" to start again from point 6.
  10. One method of solving the problems associated with included-apr is to download the APR and APR-utils from the Apache website and configure and make both packages. You can then rerun the Apache configure command as follows (for example):
    ./configure -C --enable-so --prefix=/usr/local/apache2 \
    --with-apr=/opt/freeware \
    --with-apr-util=/opt/freeware \

Configuring Apache2+ on AIX - By Example

Assuming you have just compiled and installed Apache2+ as in the above section, this is what I do to configure Apache:

  1. You will need to configure Apache before you start it
    vi /usr/local/apache2/conf/httpd.conf

    • Find the line that looks like this
      DocumentRoot "/usr/local/apache2/htdocs"

    • This is the top level directory for your web pages - you need to know this or you can't add pages!!
  2. Test the Apache2 configuration
    /usr/local/apache2/bin/apachectl -t

    • I had an error "httpd: bad group name daemon".
      • To fix this I changed /usr/local/apache2/conf/httpd.conf and the line "User daemon" to "User nobody" and the line "Group daemon" to "Group nobody". This uses the standard UNIX/AIX user called "nobody". An alternative would be to create a UNIX user and UNIX group both called daemon.
  3. Start Apache2
    /usr/local/apache2/bin/apachectl -k start

    • Other useful commands are "stop" and "restart"
  4. You can now test the webserver as the default web files directory has a simple web page pre-installed. If necessary, copy these web pages to your new web files directory. Point your browser at http:/<your-machine> and you should be informed that it is working.
    • Below we assume you will use default /usr/local/apache2/htdocs for some quick testing and will set up the alternative filesystem later on but don't forget.

It works! ~ 잘~뜬다.

참고 : http://www.ibm.com/developerworks/wikis/display/WikiPtype/aixopen
        



Apache를 설치하는 과정에서 다음과 같은 에러가 떨어졌다.

/usr/lib/libexpat.so: could not read symbols: File in wrong format

이 에러는 ./configure가 정상적으로 완료되고 make를 실행하는 과정에서 발생하였다.

원인은 /usr/lib/libexpat.so 파일에 link가 64bit 라이브러리가 아닌 32bit 라이브러리도 되어 있기 때문이다.
라이브러리의 경로를 변경하면 정상적으로 컴파일 할 수 있다.

# rm -Rf /usr/lib/libexpat.so
# ln -s /lib64/libexpat.so.0.5.0 /usr/lib/libexpat.so


출처 : http://whitebear.tistory.com/85

백업대상의 설정 부분

rsync 873번 포트를 확인한다.
    # cat  /etc/services | grep 873
    rsync                  873/tcp                   #rsync
    rsync                  873/udp                  #rsync

/etc/hosts.allow에 백업 대상의 아이피 추가
    rsync:백업대상의 I.P

hostname 확인(선택사항)
    /etc/hosts 내용 수정
    (참고_ test라는 호스트이름 설정)
    127.0.0.1               test localhost.localdomain localhost
    test서버I.P            test   

xinetd 설정(없을경우 아래내용 추가)
    # vi /etc/xinetd.d/rsync
  내용
    # default: off
    # description: The rsync server is a good addition to an ftp server, as it \
    #       allows crc checksumming etc.
    service rsync
    {
            disable = no
            socket_type     = stream
            wait            = no
            user            = root
            server          = /usr/bin/rsync    (rsync가 설치된 경로 확인)
            server_args     = --daemon
            log_on_failure  += USERID
    }

추가후 xinetd 재시작
    /etc/rc.d/init.d/xinetd restart

/etc/rsyncd.conf 설정
    motd file = /etc/rsync.motd
    log file = /var/log/rsyncd.log
    pid file = /var/run/rsyncd.pid
    max connections = 3
    syslog facility = local3
 
    [서비스 이름]
    path = /home                          백업대상 경로
    comment = milk_data               설명
    uid = root                                파일전송하는 사용자의 아이디. 기본값은 nobody
    gid = root                                파일전송하는 사용자의 그룹. 기본값은 nobody
    use chroot = yes
    read only = yes                       백업대상에 쓸경우 no로 설정
    hosts allow = 접근허용 I.P
    timeout 600


백업받는서버의 설정사항

rsync 873번 포트를 확인한다.
    # cat  /etc/services | grep 873
    rsync                  873/tcp                   #rsync
    rsync                  873/udp                  #rsync

crontab을 이용해서 rsync를 수행할 스크립트 파일 생성
    #!/bin/sh
    # server backup
    rsync -avz --delete 호스트이름 또는 I.P::data/ /backup/data/

    옵션설명
    --delete : 파일이 대상서버에는 있고 백업서버에는 없을경우 삭제
    -a : archive mode (심볼릭 링크, 속성, 퍼미션, 소유권등 보존)
    -v : verbose(상세하게 보여움)
    -z : compress(전송시 압축을 함)
    -u : update only(새로운 파일을 덮어쓰지 않음)

스크립트 파일생성후 crontab 설정
   # crontab -e

   (참고 내용)
    # data sync
    00 05 * * 0,3 /root/backup.sh

    일요일과 수요일 05시에 /root/backup.sh파일을 수행한다..

SSH 란? & scp 사용법
from O.S/Linux 2007/08/20 16:46
 

SSH 란?

: secure shell의 약자로 보안로그인 셀을 말한다.

원격서버로 로그인하는 대표적이고 전통적이며 현재까지 가장 많이 사용하는 Telnet은 data가

암호화 하지않아 취약하므로 이를 보완하기 위해 ssh를 사용.

 

1. ssh 패키지 다운받기.

rpmfind나 superuser등의 rpm을 제공해주는 사이트에 가서 다운 받는다.

 

2. ssh 패키지 설치하기.

# rpm -ivh openssh-server-4.0p1-3

# rpm -ivh openssh-client-4.0p1-3

# rpm -ql openssh-server-4.0p1-3

/etc/rc.d/init.d/sshd 서버실행 스크립트.

(어떤프로그램을 동작시키기위한 실행파일의 원본파일들이 init.d에 있음)
: restart , start , stop 로 재시작, 시작, 정지를 할 수 있음.
/etc/ssh/sshd_config 서버설정 파일.
/usr/sbin/sshd  서버 프로그램.

# rpm -ql openssh-client-4.0p1-3
/usr/bin/scp   scp는 로컬에서 리모트, 리모트에서 로컬로 복사할때 사용(암호화).
/usr/bin/sftp  ftp는 암호화된 ftp이다.
/usr/bin/ssh  ssh 서버접속 을위한 클라이언트 명령어.

(bin이란곳에 클라이언트용 명령어들이 존재)

 

3. ssh서버 환경설정파일 수정하기.

# vi /etc/ssh/sshd_config

=> PermitRootLogin no   root로 로그인 거부

 

4. ssh 서버 실행.

# /etc/rc.d/init.d/sshd restart

# netstat -atnp | grep 22/sshd

 

5. 리눅스클라이언트 접속하기.
# ssh <Server_IP>  서버에게 root계정으로 접속을 요청하기.
# ssh
test@Server_IP  test라는 계정으로 접속을 요청하기.(이때 test는 서버에 있는 계정이다.)
# ssh -l test Server_IP
$ ssh <Server_IP>  내가 로그인한 해당 계정명으로 접속을 요청하기.

==> ssh는 관리자를 위한 서비스 이다. 관리자가 원격에서 서버에 접속해서 관리하기위한 것이다.
왜 일반계정도 로그인이 될까?? 아무리 암호화된 ssh라도 처음로그인할때 패스워드가 유출될 수 있기때문에 일반계정으로 로그인 한 다음에, 서버에 와서 권한상승을 한다.

 

- ssh접속한 상태에서 자제해야 할것.
# lan카드 down.
# 컴퓨터를 끄는행위.

 

+ scp 사용하기
# scp 원본파일위치  복사할 위치
# scp 192.168.100.135:/bin/*  /tmp1
# scp /bin/*  192.168.100.135:/tmp1
# scp -r /bin/* 192.168.100.135:/tmp1

 

+ sftp사용하기.
= hash와 prompt빼고는 ftp와 sftp명령어는 거의 동일.

> put  원반파일의위치  업로드할 위치
> mput /tmp1/* /tmp1/

= ftp에서는 디렉토리 업로드가 안됨!! ==>
> mkdir 이란명령어로 디렉토리를 하나 만든다음 모든 파일을 이곳에 받는수 밖에 없음.

= scp, sftp, ssh 를 사용할려면 ssh서버만 동작하고 있으면 됨.

출처 : http://tong.nate.com/boxitem/post.do?action=read&_boxID=1695983&_tongID=43656&_boxItemID=29657306&_reloadTag=y


==================================================================================

 

scp 사용법


scp는 자신의 컴퓨터에서 원격의 컴퓨터로 또는 원격의 컴퓨터에서 자신의 컴퓨터로 간단하게
파일을 전송할 수 있는 프로그램이다.
다음은 현재 디렉토리에 있는 sshd.txt 라는 파일을 IP가 192.168.1.154 인 컴퓨터에 root 라는 계정으로
접속하여 /usr/local/src/ 디렉토리 밑에 복사해 넣는 명령이다.

[root@in4nux root]# scp ./sshd.txt root@192.168.1.154:/usr/local/src/ 

다음은 IP가 192.168.1.154 인 컴퓨터에 root 라는 계정으로 접속하여 /usr/local/src/ 디렉토리 밑에 있는
sshd.txt 라는 이름의 파일을 자신의 컴퓨터로 현재 위치한 디렉토리에 복사하는 명령이다.

[root@in4nux root]# scp root@192.168.1.154:/usr/local/src/sshd.txt ./ 
-------------------------------------------------------------------------
ssh를 이용한 원격 파일 복사 - 보안 
글쓴이 : 임은재 (2000년 11월 24일 오전 09:15) 읽은수:499
scp는 ssh 클라이언트 패키지에 따라옵니다.
예를 들어, 복사하려는 파일명이 'dumb' 라고 하고
접속하려는 원격 서버의 주소는 www.foobar.com,
당신의 쉘 계정은 babo 라고 한다면, dumb 파일을 www.foobar.com 의

babo 계정 홈 디렉토리에 복사하기:
scp dumb babo@www.foobar.com :. 
www.foobar.com 의 babo 계정 홈 디렉토리에 있는 dumb 파일을 로컬로 복사하기:
scp babo@www.foobar.com:dumb .
간단하죠? 만약 ~/.ssh/config 파일에 다음과 같이 www.foobar.com 의 
계정을 설정해 놓았다면,
Host *fbc HostName www.foobar.com User babo ForwardAgent yes
다음과 같이 더 간단하게 할수 있습니다.
scp dumb fbc:.
또한 scp 는 -r 옵션도 가지고 있는데 이것은 디렉토리를 통채로 복사 할때 유용합니다.
예를 들어 test/ 디렉토리안의 모든 파일과 하위 디렉토리를 서버 계정의 www 디렉토리 안에
복사 하려면 다음과 같이 합니다.
scp -r test/ babo@www.foobar.com::www/ 

포트 옵션 : -P

 

Tag // scp, ssh
리눅스 root 비번을 잃어버렸을때

안녕하세요 미니어스입니다.

새로 깔지 않고 루트의 패스워드를 변경할 수 있는 방법이 있습니다.

어떠한 배포본을 사용하고 계신지는 모르지만..

2가지의 경우가 있습니다.


부르토더를 Grub 를 쓰는경우와 Lilo를 사용하는 경우가 있습니다.


2.2~2.4 의 커널버전 ( Redhat9이하버전 )에서 lilo를 주류로 사용하였으며

요즘에 나오는 페도라,우분투, CentOs 등에선 Grub를 씁니다.

lilo 의 경우 부팅시

Lilo :  라고 뜨면

'linux 0' 또는 'linux single' 라고 입력하시면됩니다.


grub 의 경우 해당 이미지선택 (보통은 3~5초내에 선택하고 넘어가는 메뉴)란에서

'e'를 눌러서 부트 커맨드가 나오면 (안나오면 'e'한번더 입력)

커맨드 라인 맨 마지막 뒤에 'linux single' 라고 입력후 'b' 입력하시면 됩니다.


노력하지 않는 꿈은 꿈으로만 남는다. - 미니어스


출처 : 네이버 지식iN(miniuslab님의 글)

안녕하세요

초보자 분들은, Throttle모듈을 설치하기시가 어려우실 거에요.
저또한 그랬구요.

오늘 과감하게 저의 허접?비법을 여러분과 함께 공유할까 합니다.

일단 Throttle의 공식 싸이트를 가셔서 한번 둘러 보세요
주소는 http://www.snert.com/Software/mod_throttle/ 이랍니다.

Throttle은 서버의 트래픽 설정을 가능하게 해주는 것입니다.
웹호스팅을 하시는 분에게는 편리한 놈이랍니다.

웹호스팅 사이트를 돌아다니다보면
" 일일트래픽 500M , 혹은 일일 히트수 1000 히트 제한 "
이런 글을 볼 수 있습니다.

저런것은 보통의 경우 throttle-me을 많이 사용하더군요.


이제 슬슬 설치하여 볼까요^^?

--------------------------------------------------------------------------------
설치하기에 앞서서, 설치하기 쉬운 방법을 알려드리고자 합니다.(초보자용)
최신의 리눅스배포판을 설치하지 마시고, 아파치 1.3.x버전을 탑재한 리눅스 배포판을 전체설치 하십시오.
그러면 아파치와 php, mysql들을 따로 까실 필요가 없겠지요.
또한 저렇게 설치를 하시면 아파치가 DSO방식으로 설치가 됩니다.
즉, 리눅스를 까신후 throttle을 받으셔서 압축해제를 하시고,
# make install
저렇게만 하시면 설치완료가 됩니다.
그러면 설치 완료^^
그후에 httpd.conf를 설정하시면 됩니다.

정리를 하자면
1)아파치 1.3.x버전을 탑재한 리눅스 배포판을 전체설치한다
(물론 apahce, php, mysql만 선택하셔서 설치하셔도 됩니다)

2)throttle을 받아서 압축을 푼다

3)압축을 푼후, 압축을 푼 폴더로 이동한 후
ex)#cd mod_throttle-3.1.x

4)#make install
이라는 명령을 내린다

4)그후 아파치의 환경설정을 한다. 환경설정파일의 이름은 "httpd.conf"이다
보통 "/etc/httpd/conf/httpd.conf"에 위치한다.
--------------------------------------------------------------------------------




차례를 살펴보면~~
-------------------------------------------------------------------
0. 아파치설치하기

1. 아파치 설치방법(1)
1-1.아파치를 DSO으로 설치하기
1-2.아파치를 DSO로 설치하였을 경우 throttle을 설치하는 방법

2. 아파치 설치방법(2)
2-1.아파치를 static으로로 설치
2-2.아파치를 static으로 설치하였을 경우 throttle을 설치하는 방법

3.아파치의 httpd.conf설정하기
------------------------------------------------------------------
(아파치, PHP, Mysql, throttle을 설치하는 모습을 보여주면 좋겠지만, 저러한 것들은 다른 글을 참고하세요.)

저는 아파치와 PHP, throttle을 설치하는 방법만을 알려드릴께요.


0. 아파치 설치하기

우선 아파치를 받아옵니다
그런데 throttle은 아파치 1.3.x만을 지원하므로, 1.3.x버젼을 받도록 합니다.(2.0버젼은 아직까지 지원을 하지 않아요)

이제 아파치를 설지를 해야겠죠? 그런데 아파치를 설치하는데는 크게 2가지가 방법이 있습니다
rpm설치와 소스설치가 있습니다.

throttle을 설치할 경우 아피치를 소스설치로 하는것이 좋습니다.

소스설치의 경우 또 2가지 방법가 있답니다.
DSO설치와 Static설치가 있어요..

저 둘의 차이점은 이 페이지 맨 아래에 적어둘께요. 참고하세요~~

일단은 DSO설치방법을 살펴봅시다.



1. 아파치 설치방법(1)

1-1.아파치를 DSO으로 설치하기

아파치를 아무곳에나? 받은후에 압축을 풉니다.
그런후에 압축을 푼 폴더로 이동을 합니다.
ex)#tar xvfz apache_1.3.29
#cd apache_1.3.29

이동을 한 후에, 환경설정을 해야합니다.
[root@ apache_1.3.27]# ./configure --prefix=/usr/local/apache \
--enable-rule=SHARED_CORE \
--enable-module=so --enable-shared=max \


(참고로 php를 설치하셔야 하는분은
([root@ apache_1.3.29]# ./configure --prefix=/usr/local/apache \
(--enable-rule=SHARED_CORE \
(--enable-module=so --enable-shared=max \
(--activate-module=src/modules/php4/libphp4.a \

☆☆여기서 띄어쓰기를 주의하세요. 예를들어 apache\같이 띄어쓰기를 하지 않을경우 설치가 제대로 되지 않습니다☆☆


이제 컴파일, 설치를 합니다
[root@ apache_1.3.27]# make
[root@ apache_1.3.27]# make install


1-2.아파치를 DSO로 설치하였을 경우 throttle을 설치하는 방법

DSO로 설치하였을 경우 throttle을 설치하기가 매우 쉽습니다.
일단 throttle설치파일을 받습니다.
받는곳은 http://www.snert.com/Software/mod_throttle 저곳에 있습니다.
귀찮으신 분은 http://www.snert.com/Software/mod_throttle/mod_throttle312.tgz저것을 받으시면 됩니다.

받으신후 아무곳에나? 압축을 풉니다.
그리고 나서 압축을 푼 폴더로 이동합니다
ex)# tar xvfz mod_throttle312.tgz (압축풀기)
# cd mod_throttle (이동하기)

그리고 나서 설치를 하시면 됩니다.
# make install

그런데 여기서 잘 살펴보아야 할점을, 설치를 하는경우 apxs라는 파일을 사용하는데 그것은 아파치의 bin폴더에 있습니다.

보통 저 경로를 지정하지 않았을 경우, 에러가 나게 되지요
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
따라서, 압축을 푼 폴더로 이동을 하신후에
#PATH=$PATH:/usr/local/apache/bin
#export path
저 명령을 내리십시오.


저렇게 반드시 하신후에
#make install
저 명령을 하시기 바랍니다
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

이제 설치가 완료 되었습니다

httpd.conf파일을 설정을 하게 되면, 트래픽을 조정할수 있습니다.

설정방법은 "3.아파치의 httpd.conf설정하기"에적어놓았습니다. 반드시 보세요.


----------------------------------------------------------------------------------------------------
혹시 mysql이나 php등을 설치할때, 뭐가 뭔지 혼란이 오시는 분이 있을까봐, 제가 설치하는 모습을 그대로 재현해 보았습니다.
참고하세요.
[root@ ]# tar xvfz apache_1.3.27 -C /usr/local
[root@ apache_1.3.27]# ./configure --prefix=/usr/local/apache

[root@ ]# tar xvfz php-4.2.3 -C /usr/local
[root@ php-4.2.3]# ./configure --with-apache=../apache_1.3.27 \
--with-mysql=/usr/local/mysql \
--with-gd --with-gif-dir=/usr/lib \
--with-png-dir --with-zlib-dir --with-jpeg-dir \
--with-imap --with-imap-ssl --with-kerberos \
--with-freetype-dir --enable-ftp --enable-socket \
--disable-debug --enable-track-vars
[root@ php-4.2.3]# make
[root@ php-4.2.3]# make install

[root@ apache_1.3.27]# ./configure --prefix=/usr/local/apache \
--enable-rule=SHARED_CORE \
--enable-module=so --enable-shared=max \
--activate-module=src/modules/php4/libphp4.a \
[root@ apache_1.3.27]# make
[root@ apache_1.3.27]# make install


[root@ ]# tar xvfz mod_throttle312.tgz
[root@ ]# cd mod_throttle
[root@ ]# make install
-----------------------------------------------------------------------------------------


2. 아파치 설치방법(2)

2-1.아파치를 static으로로 설치

static으로 설치하는 방법도 DSO와 유사합니다.
웹에서 아파치를 다운로드 한후에(물론 1.3.x버젼이어야 합니다.)
압축을 푸시고, 압축을 푼 폴더로 이동을 합니다.(이동 방법은 좀전의 방법과 같습니다.)

이동후 저와같은 명령을 내리십시오.
# ./configure --prefix=/usr/local/apache \
--add-module=src/modules/extra/mod_throttle.c

(참고로 php를 설치하셔야 하는분은
(# ./configure --prefix=/usr/local/apache \
(--activate-module=src/modules/php4/libphp4.a \
(--add-module=src/modules/extra/mod_throttle.c
(이와같이 하시면 됩니다.


☆☆여기서 띄어쓰기를 주의하세요. 예를들어 apache\같이 띄어쓰기를 하지 않을경우 설치가 제대로 되지 않습니다☆☆

그후 아파치를 컴파일 설치하시면 됩니다
#make
#make install

설치가 잘 되었는지 알아보는 방법은 아래와 같습니다.
(물론 출력결과는 저와 다를것입니다)
# /usr/local/apache/bin/httpd -l
Compiled-in modules:
http_core.c
mod_env.c
mod_log_config.c
mod_mime.c
mod_negotiation.c
mod_status.c
mod_include.c
mod_autoindex.c
mod_dir.c
mod_cgi.c
mod_asis.c
mod_imap.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_access.c
mod_auth.c
mod_setenvif.c
mod_php4.c
mod_throttle.c
suexec: disabled; invalid wrapper /usr/local/apache/bin/suexec


여기서 mod_throttle.c이 있다면, 설치성공^^

설치가 완료 되었으므로, httpd.conf를 설정을 하시면 끝납니다.

"3.아파치의 httpd.conf설정하기"에 적어놓았으니 반드시 읽어보세요


------------------------------------------------------------------------------------------
3.아파치의 httpd.conf설정하기

설정파일을 설정해 봅시다.
#vi /usr/local/apache/conf/httpd.conf

그러면 설정파일이 나타납니다.

일단 맨 아래에 이것을 추가하세요.

&lt;IfModule mod_throttle.c&gt;
ThrottlePolicy none

&lt;Location /throttle-status&gt;
SetHandler throttle-status
&lt;/Location&gt;

&lt;Location /throttle-me&gt;
SetHandler throttle-me
&lt;/Location&gt;

&lt;Location /~*/throttle-me&gt;
SetHandler throttle-me
&lt;/Location&gt;
&lt;/IfModule&gt;

그런후에

저렇게 한후에 가상 호스트 설정을 할수도 있습니다

방법은
&lt;VirtualHost 123.123.123.123&gt;
ServerAdmin dream@praise.co.kr
DocumentRoot /home/dream/public_html
ServerName myserver.co.kr
ServerAlias http://www.myserver.co.kr
Throttle Policy Volume 1024M 1d // 1일 1G 제한
ThrottlePolicy Request 1000 1d // 하루 히트수 1000회 제한
ErrorLog /var/log/httpd/error_log
CustomLog /var/log/httpd/access_log common
&lt;/VirtualHost&gt;
입니다.

http://자신의 아이피 혹은 도메인/throttle-status 에서,
서버에 설정된 대역폭의 모든 내용을 확인 할 수 있으며

서버에 설정된 특정 도메인의 트래픽을 확인 하려면
http://자신의 아이피 혹은 도메인/~아이디/throttle-me 를 확인 하면 됩니다.


이제 끝이랍니다.~



참고사항
----------------------------------------------
DSO 방식과 Static 방식의 차이점은 무엇일가요?

DSO방식은 아파치를 먼저 컴파일하고 다른 모듈들을 추가로 설치할 때는 아파치를 재 컴파일하지
않고 한번 설정되어 컴파일된 아파치를 계속 사용하는 것이다.
즉, DSO방식은 아파치를 단 한번만 컴파일한다는 것이다. 이점은 관리, 설치면에서 커다란 장점이다.
Static 방식은 설치면에서 추가로 모듈을 설치하려고 하면 설정하려는 모듈만 설정하고 컴파일하는
과정이 필요할 뿐만 아니라 아파치 또한 그에 따라 컴파일을 하여야 한다.
이는 관리면에서 단점이 될 수 있다.

시스템 측면에서 이 두 가지의 차이점이 있다.

먼저 DSO는 아파치에 설치된 모듈이 필요할 때 시스템에 적재된다. 이는 클라이언트의 요청에
응답하는 요청시간이 다소 느릴 수 있지만, 하드웨어의 속도가 뒷받침된다면 해결이 될 수 있는 부분이다.
여하튼 이런 방식(DSO)은 시스템의 리소스(메모리, CPU)들을 적절하게 효율적으로 사용한다고 볼 수 있다.
이 방식은 예전에는 실험적인 성격을 가졌지만, 이젠 거의 안정 수준에 올라와 점점 DSO방식을 선호하고 있다.

또 다른 방식인 Static 방식은 이전 방식(DSO)와는 다소 차이가 있다.
이 방식은 아파치에 추가된 모듈이 아파치의 기동과 함께 모든 모듈을 포함하여 시스템에 적재한다.
만약 아파치의 기동과 함께 적재된 어떤 모듈이 클라이언트에 의해 거의 쓰지 않는다면 쓸데없이
시스템 리소스를 점유하고 있으므로 이는 비효율적이라 볼 수 있다.
또한 아파치와 각 모듈들은 설치시 복잡하다.
각 모듈과 설정된 아파치에 또 다시 모듈을 추가하려 할 때 아파치와 모듈을 다시 컴파일하여야 한다.



출처 : http://blog.naver.com/polong77/140009927683

이름이 *.txt 인 파일 출력
[smson@linux smson]$ find ~ -name "*.txt" -print
/home/smson/user2.txt
/home/smson/user3.txt
/home/smson/aa.txt

파일명이 *.bak 이면서 파일크기가 1k 이상인것.

+N 는 이상
-N 는 이하
N 는 정확한 값임

[smson@linux smson]$ find ~ -name "*.bak" -size +1k -print
/home/smson/ihchat/iHChatServer.java.bak
/home/smson/ihchat/iHChatHandler.java.bak
/home/smson/myjava/DatabaseTest.java.bak

는 *.bak 인 파일명을 삭제한다.

-exec는 실행의 의미이면 {} 는 find 로 검색된 파일명이다.

[smson@linux smson]$ find ~ -name "*.bak" -exec rm -rf {} \;
[smson@linux smson]$ find ~ -name "*.bak" -print

[smson@linux smson]$ find ~ -size +100k -exec ls -al {} \;
-rw------- 1 smson smson 1220643 Feb 1 20:56 /home/smson/dead.letter
-rw-rw-r-- 1 smson smson 325923 Aug 14 14:50 /home/smson/aa2.pl.c
-rwxrwxr-x 1 smson smson 526247 Aug 14 14:43 /home/smson/aa

파일내에 문자열검색

[lets114@LETS114 lets114]$ find ./ -name "*.php"  -exec grep "검색문자열" /dev/null {} \;


정리를 하면

-name 은 파일명
-size 는 파일크기
-time 는 파일의 시간과 연관된다.

검색 디렉토리는
/ 는 루트
~ 홈디렉토리
. 현재디렉토리

Tag // find

이름이 *.txt 인 파일 출력
[smson@linux smson]$ find ~ -name "*.txt" -print
/home/smson/user2.txt
/home/smson/user3.txt
/home/smson/aa.txt

파일명이 *.bak 이면서 파일크기가 1k 이상인것.

+N 는 이상
-N 는 이하
N 는 정확한 값임

[smson@linux smson]$ find ~ -name "*.bak" -size +1k -print
/home/smson/ihchat/iHChatServer.java.bak
/home/smson/ihchat/iHChatHandler.java.bak
/home/smson/myjava/DatabaseTest.java.bak

는 *.bak 인 파일명을 삭제한다.

-exec는 실행의 의미이면 {} 는 find 로 검색된 파일명이다.

[smson@linux smson]$ find ~ -name "*.bak" -exec rm -rf {} \;
[smson@linux smson]$ find ~ -name "*.bak" -print

[smson@linux smson]$ find ~ -size +100k -exec ls -al {} \;
-rw------- 1 smson smson 1220643 Feb 1 20:56 /home/smson/dead.letter
-rw-rw-r-- 1 smson smson 325923 Aug 14 14:50 /home/smson/aa2.pl.c
-rwxrwxr-x 1 smson smson 526247 Aug 14 14:43 /home/smson/aa

파일내에 문자열검색

[lets114@LETS114 lets114]$ find ./ -name "*.php"  -exec grep "검색문자열" /dev/null {} \;


정리를 하면

-name 은 파일명
-size 는 파일크기
-time 는 파일의 시간과 연관된다.

검색 디렉토리는
/ 는 루트
~ 홈디렉토리
. 현재디렉토리

Tag // find

인터넷 사이트를 서핑하다보면 ID와 Password를 물어오면서 접속을 제한하는 페이지를 만난적이 있을 것이다. 이는 특정 페이지에 인증을 걸어 지정된 사용자가 아니면 페이지를 보여주지 않는 것으로 보안 및 홈페이지 관리를 위한 페이지 등에서 많이 사용하고 있는 방법이다.
오늘은 이러한 웹서버의 접속제한을 설정하는 방법에 대해 알아보도록 하자.


 웹서버 접속제한?

앞서 말했듯이 특정 페이지에 인증을 걸어두어 지정된 사용자가 아닌 경우 웹페이지를 보여주지 않도록 설정하는 것을 말하는 것으로, Apache와 같은 웹서버에서는 .htaccess 라는 파일을 생성하여 설정할 수 있다.
접속제한을 설정하는 방벙을 간단히 요약하면 아래와 같다.


==========================
① .htaccess 파일 생성
② .htaccess 파일 설정
③ 사용자 및 패스워드 등록
④ 웹서버 재시작
==========================



 

① .htaccess 파일 생성

먼저 .htaccess 파일을 생성하도록 하자. 인증이 필요한 디렉터리로 이동하여 touch 명령을 통해 파일을 만든다.
아래 예제는 웹서비스의 기본 디렉터리인 /var/www/html 아래에 있는 관리자 페이지 디렉터리(admin)에 접속 제한을 설정한다는 가정하에서 작업한 예제이다.
=====================================================
# cd /var/www/html/admin
# touch .htaccess
# ls -al
=====================================================
※ 참고로 파일명앞에 점(.)이 붙는 다는 것은 "숨김속성"이 있는 파일임을 나타내므로, 일반적인 ls 명령으로는 파일 생성여부를 확인할 수 없다. ls명령에 -al 과 같은 옵션을 사용하여 파일의 생성여부를 확인하도록 하자.


 

 ② .htaccess 파일 설정

앞서 생성한 파일은 아무런 내용이 없는 빈 파일이므로 아래와 같은 내용을 입력하자.
# vi .htaccess
=====================================================
AuthName        "XXXX 관리자 페이지"
AuthType        Basic
AuthUserFile    /var/www/html/admin/.htpasswd
AuthGroupFile   /dev/null
ErrorDocument 401 "인증 실패!  당신은 인증된 사용자가 아닙니다."

<Limit GET POST>
  satisfy any
  order deny,allow
    deny from all
    allow from xxx.xxx.xxx.xxx
  require valid-user
</Limit>
=====================================================

- AuthName는 암호 인증창에 나타나는 설명을 적는 곳이다. 이곳에 적은 내용이 인증창에 문구로 나오게 된다.
- AuthType은 서버가 사용하는 인증방식을 말한다. Basic과 Digest의 2가지가 있으나 일반적으로 Basic을 사용한다.
- AuthUserFile는 .htpasswd 파일의 물리적인 경로를 지정해 준다. 여기서 .htpasswd 파일은 뒤에서 다룰 내용으로... 암호 인증창이 나타났을때 여기에 입력할 ID와 Password를 저장하고 있는 파일을 말한다.
  .htaccess에서는 사용자 인증을 요구해주고, 실질적인 사용자 인증은 .htpasswd 파일에서 확인하게 된다.
  .htpasswd는 다른 파일명을 사용해도 된다.
- AuthGroupFile는 그룹으로 인증확인을 할경우에 그룹인증파일명을 적는다.
- ErrorDocument는 인증 실패시 화면에 보여줄 문구를 지정한다. 또는 아래와 같이 미리 만들어둔 오류 페이지를 지정할 수도 있다.
  ErrorDocument 401 /admin/subscription.html
- Limit GET POST : 접근 제한을 지정하는 부분이다. 여기서는 GET 방식과 POST 방식의 접근만을 허용한다.
  satisfy any         : 여러 설정의 충족 여부를 나타내는 항목으로... 아래에 자세히 설명
  order deny,allow    ; 적용 순서를 나타내는 것으로 거부(deny) 이후에 허용(allow) 순으로 적용한다. (이후의 설정 내용을 참고하라.)
    deny from all       ; 모든 접속을 거부(deny) 한다.
    allow from ...      ; 지정된 IP로 부터의 접속을 허용한다.
  require valid-user  ; 인증된 사용자만의 접속을 허용한다. valid-user 대신 직접 ID를 명시하여 해당 ID만을 허용할 수도 있다.


※ satisfy는 all과 any를 지시자로 가질 수 있으며, 각 의미는 아래와 같다.
  satisfy all : allow from에서 허용된 IP와 require에서 정의된 사용자 모두가 맞아야만 접속 허용 (&& 개념)
  satisfy any : allow from에서 허용된 IP와 require에서 정의된 사용자 중 하나만 맞으면 접속 허용 (|| 개념)


위는 지시어를 모두 사용하였을 경우에 대한 예제로서, 아래와 같이 간단하게 만들수도 있다.
=====================================================
AuthName        "XXXX 관리자 페이지"
AuthType        Basic
AuthUserFile    /var/www/html/admin/.htpasswd

<Limit GET POST>
  order deny,allow
    deny from all
    allow from xxx.xxx.xxx.xxx
  require valid-user
</Limit>
=====================================================


 

 ③ 사용자 및 패스워드 등록

.htaccess 설정이 완료되었다면, htpasswd 명령을 이용하여 해당 디렉터리로 접근 가능한 사용자 계정 및 패스워드를 생성한다. 아래 예제는 admin 이라는 계정을 추가하는 내용으로 패스워드를 지정하는 부분까지 같이 이루어진다.
=====================================================

# htpasswd -c .htpasswd admin
  Adding password for admin.
  New password:  <비밀번호 입력>
  Re-type new password:  <비밀번호 입력 확인>

=====================================================

※ -c 옵션은 초기화 후 새롭게 생성할때 이용하는 옵션이다.
  처음 계정을 등록할때는 -c 옵션을 사용해주고, 그 이후에 추가로 계정을 등록하는 경우에는 -c 옵션 없이 사용해야 한다.
  -c 옵션을 사용하게 되면 앞서 등록한 계정은 없어지게 되므로 사용에 유의하자.
※ 사용자 비밀번호를 변경하고자 한다면 위의 htpasswd 명령을 한번더 사용해주면 해당 계정의 비밀번호가 바뀌게 된다.
※ 사용자 계정을 삭제하고자 한다면 .htpasswd 파일을 열어서 삭제하려는 사용자 계정이 기록된 라인(line)을 지워주면 된다.


 

④ 웹서버 재시작

자 이제 설정 및 사용자 등록이 완료되었으므로, 아래와 같은 명령으로 웹서버를 재시작하자.
# /etc/init.d/httpd restart

만약 소스설치를 한 경우라면, apache가 설치되어 있는 경로로 이동하여 bin 디렉터리 하단에 있는 apachectl 실행명령을 stop 및 start 하자.

이제 웹브라우저를 사용하여 admin 디렉터리 하단에 있는 웹페이지를 열어보도록 하자. 사용자 인증창이 정상적으로 나타나는가?


출처 :  http://blog.naver.com/imakez/60033559603

Tag // htaccess