DNS관리하기

Linux RSS Icon ATOM Icon 2013/12/05 13:52 visualp
■ CentOS 에서 네임서버 설치 , 운영

Tip .
0. 소스로 설치 할 경우
http:/www.isc.org 에서 소스 다운 받아 설치 하면 된다.

0. bind 9.2 까지는 named.conf 파일을 사용
0. bind 9.3 부터는 name.caching-nameserver.conf 사용


1. 필요 패키지


  • bind / 기본 패키지
  • bind-libs / 라이브러리
  • bind-utils / 유틸리티
  • caching-nameserver / bind운영에 필요한 환경 설정파일 모음


  • 2. 패키지 준비
    패키지 확인
    #  rpm -qa | grep bind                 
    bind-libs-9.3.3-10.el5
    ypbind-1.19-8.el5
    bind-utils-9.3.3-10.el5
    # yum install bind
    ....
    Dependencies Resolved
    =============================================================================
     Package                 Arch       Version          Repository        Size
    =============================================================================
    Installing:
     bind                    i386       30:9.3.4-6.0.2.P1.el5_2  updates           9
    58 k
    Updating for dependencies:
     bind-libs               i386       30:9.3.4-6.0.2.P1.el5_2  updates           8
    46 k
     bind-utils              i386       30:9.3.4-6.0.2.P1.el5_2  updates           1
    67 k
    Transaction Summary
    =============================================================================
    Install      1 Package(s)        
    Update       2 Package(s)        
    Remove       0 Package(s)        
    Total download size: 1.9 M
    Is this ok [y/N]: y
    ....
    Installed: bind.i386 30:9.3.4-6.0.2.P1.el5_2
    Dependency Updated: bind-libs.i386 30:9.3.4-6.0.2.P1.el5_2 bind-utils.i386 30:9.3.4-6.0.2.P1.el5_2
    Complete!
    # rpm -qa | grep bind
    bind-9.3.4-6.0.2.P1.el5_2
    bind-utils-9.3.4-6.0.2.P1.el5_2
    ypbind-1.19-8.el5
    bind-libs-9.3.4-6.0.2.P1.el5_2
    # yum install caching-nameserver
    ....
    installed: caching-nameserver.i386 30:9.3.4-6.0.2.P1.el5_2
    Complete!
    # rpm -qa | grep caching
    caching-nameserver-9.3.4-6.0.2.P1.el5_2
    #

    3. 운영을 위한 환경 설정 파일
    bind 9.3 버전 부터 name.caching-nameser.conf 파일을 사용한다.
    # vi /etc/named.caching-nameserver.conf
    // named.caching-nameserver.conf
    ...
    options {
    //    listen-on port 53 { 127.0.0.1; };
    // 기본적으로 port 53 으로 자신만이  접근 가능하게 되어있다.
    // 외부접근 가능 하게 any로 바꾼다.
          listen-on port 53 { any; };
    //        listen-on-v6 port 53 { ::1; }; 
    // ip v6 에 대한 것으로 차후 서비스를 위해 ~..주석처리.
            directory       "/var/named";
    // zone file에 대한 기본 디렉토리 설정
            dump-file       "/var/named/data/cache_dump.db";
    // 캐쉬 덤프 파일 생성 위치와 파일 이름
            statistics-file "/var/named/data/named_stats.txt";
    // 통계파일 생성 위치와 파일 이름
            memstatistics-file "/var/named/data/named_mem_stats.txt";
    // 메모리 관련 통계파일 위치 이름

            // Those options should be used carefully because they disable port
            // randomization
            // query-source    port 53;     
    query-source    port 53;   
    // 쿼리를 받아 들일 소스포트
            // query-source-v6 port 53;
    //     allow-query     { localhost; };
            allow-query     { any; };
    // 쿼리 허용할 ip 대역
    };
    logging {
            channel default_debug {
                    file "data/named.run";
                    severity dynamic;
            };
    };
    // 실행에 있어 디버깅시 참고 할 수 있는 로그파일 생성 위치
    view localhost_resolver {
    //        match-clients      { localhost; };
    //        match-destinations { localhost; };
            match-clients      { any; };
            match-destinations { any; };
    // 로컬 리졸버 허용 클라이언트 지정

            recursion yes;
            include "/etc/named.rfc1912.zones";
    };

    4. 구동 시작
    # /etc/rc.d/init.d/named start
    named를 시작 중:                                           [  OK  ]
    [root@fedora ~]# tail /var/named/data/named.run
    zone 0.in-addr.arpa/IN/localhost_resolver: loaded serial 42
    zone 0.0.127.in-addr.arpa/IN/localhost_resolver: loaded serial 1997022700
    zone 255.in-addr.arpa/IN/localhost_resolver: loaded serial 42
    zone 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN/localhost_resolver: loaded serial 1997022700
    zone localdomain/IN/localhost_resolver: loaded serial 42
    zone localhost/IN/localhost_resolver: loaded serial 42
    running
    //정상 구동되었다.
    #

    5. zone 파일 구성

    # vi /etc/named.rfc1912.zones
    // named.rfc1912.zones:
    //
    // Provided by Red Hat caching-nameserver package
    //
    // ISC BIND named zone configuration for zones recommended by
    // RFC 1912 section 4.1 : localhost TLDs and address zones
    //
    // See /usr/share/doc/bind*/sample/ for example named configuration files.
    //
    zone "." IN {
            type hint;
            file "named.ca";
    };
    ...
    zone "linux.com" IN {
            type master;
            file "linux.com.zone";
            allow-update { none; };
    };
    //추가
    # cd /var/named
    # ls
    // 기본 포멧 파일을 이용
    # cp localdoamin.zone linux.com.zone
    # vi linux.com.zone
    TTL    86400
    @               IN SOA  ns.linux.com. root.linux.com ( 
                                            2008121601      ; serial (d. adams)
                                            3H              ; refresh
                                            15M             ; retry
                                            1W              ; expiry
                                            1D )            ; minimum
                    IN NS           ns.linux.com.
                    IN MX 10        mail.linux.com.
                    IN A            192.168.10.200
    ns              IN A            192.168.10.200
    www             IN A            192.168.10.200
    mail            IN CNAME        www
    ftp             IN CNAME        @
    *               IN CNAME        @

    // 생성 후 저장

    //zone 파일과 conf 파일 체크
    # named-checkconf /etc/named.rfc1912.zones
    # named-checkconf /etc/named.caching-nameserver.conf
    # named-checkzone linux.com /var/named/linux.com.zone
    zone linux.com/IN: loaded serial 2008121601
    OK
    #

    // 모든게 정상으로 나왔다. 서버 재구동
    /etc/rc.d/init.d/named restart
    named를 정지 중:                                           [  OK  ]
    named를 시작 중:                                           [  OK  ]
    # vi /etc/resolv.conf
    search localdomain
    nameserver      192.168.10.10
    nameserver      168.126.63.1
    // 기존에 있던 nameserver외에 추가로 자신의 ip로 된 nameserver ip를 추가
    // 192.~ 대의 dns를 먼저 검색 하며 검색된 정보가 없을경우 다음 dns에게 물어 본다.
    # nslookup
    > linux.com
    Server:  [192.168.10.10]
    Address:  192.168.10.10
    Name:    linux.com
    Address:  192.168.10.100
    ...
    > ftp.linux.com
    >q
    // 잘나오는것을 확인 할 수 있다.

    6. zone file 설명
    TTL    86400
    time to live의 약자 다른 네임서버에서 읽어간 정보가 살아있는 시간이다. 초단위

    @              
    ORIGIN 의 의미 public domain을 의미 즉  @ = linux.com.

    IN
    IN 다음 의 설정을 이용

    SOA  ns.linux.com. root.linux.com
    SOA start of authority 해당 도메인의 정보를 가지고 있고 root@linux.com 이 관리자를 나타낸다.
    (  
                                           
    2008121601      ; serial (d. adams)
    해당 정보의 시리얼 보통 날짜정보 + 카운터로 표시된다.

                                         3H              ; refresh
    리프레쉬 타임 주기

                                            15M             ; retry
    M-> S로의 장애 발생시 재 접속  시간

                                            1W              ; expiry
    존파일 유효기간, 만약 Expiry 시간안에 M에서 응답을 못받을 경우 S는 데이터에 대한 유효성을 더이상 인정 하지 않겠다는뜻

                                            1D )            ; minimum
    TTL과 같은 의미 다른 서버에서 zone 데이터를 가져갔을때 그 데이터에 대한 유효기간

                    IN NS           ns.linux.com.
    // 네임서버 이름 지칭
                    IN MX 10        mail.linux.com.
    // mailserver 이름 지칭
                    IN A            192.168.10.200
    // ip 할당
    ns              IN A            192.168.10.200
    // nameserver의 ip는     ""
    www             IN A            192.168.10.200
    // www.linux.com ip할당
    mail            IN CNAME        www
    // mail server의 ip는 www의 설정을 가져온다.
    ftp             IN CNAME        @
    // ORIGIN 변수의 값을 그대로 사용
    *               IN CNAME       


    6.1 nameserver를 이용한 부하분산
    www             IN A            192.168.10.200
    www             IN A            192.168.10.201
    www             IN A            192.168.10.202
    // A 레코드 여러개 적어 부하 분산!

    크리에이티브 커먼즈 라이선스
    Creative Commons License
    2013/12/05 13:52 2013/12/05 13:52
    받은 트랙백이 없고, 댓글이 없습니다.

    댓글+트랙백 RSS :: http://blog.visualp.com/rss/response/624

    댓글+트랙백 ATOM :: http://blog.visualp.com/atom/response/624

    hadoop방화벽 설정

    Linux RSS Icon ATOM Icon 2013/10/01 08:29 visualp

    하둡은 내부 데몬(NameNode, SecondaryNameNode, DataNode, JobTracker, TaskTracker)간에 통신을 위해 다양한 포트를 사용합니다. 만약 하둡이 사용하는 포트가 막혀 있다면, 하둡은 구동했더라도 HDFS 파일 제어나 MapReduce 잡이 정상적으로 실행되지 않을 확률이 매우 높습니다.


    CentOS의 경우 OS를 처음 설치했을 때 기본 포트를 제외한 모든 포트를 방화벽에서 막고 있습니다. 포트를 열어 주지 않은 상태에서 MapReduce 잡을 실행할 경우 다음과 같은 로그 메시지가 발생하면서, MapReduce 작업이 더 이상 진행되지 않게 됩니다.


    org.apache.hadoop.mapred.TaskTracker: attempt_201302200135_0002_r_000000_0 0.0% reduce > copy > 
    org.apache.hadoop.mapred.TaskTracker: attempt_201302200135_0002_r_000000_0 0.0% reduce > copy > 
    org.apache.hadoop.mapred.TaskTracker: attempt_201302200135_0002_r_000000_0 0.0% reduce > copy > 
    org.apache.hadoop.mapred.TaskTracker: attempt_201302200135_0002_r_000000_0 0.0% reduce > copy > 
    org.apache.hadoop.mapred.TaskTracker: attempt_201302200135_0002_r_000000_0 0.0% reduce > copy > 
    org.apache.hadoop.mapred.TaskTracker: attempt_201302200135_0002_r_000000_0 0.0% reduce > copy > 
    org.apache.hadoop.mapred.TaskTracker: attempt_201302200135_0002_r_000000_0 0.0% reduce > copy > 
    org.apache.hadoop.mapred.TaskTracker: attempt_201302200135_0002_r_000000_0 0.0% reduce > copy > 
    org.apache.hadoop.mapred.TaskTracker: attempt_201302200135_0002_r_000000_0 0.0% reduce > copy > 
    org.apache.hadoop.mapred.TaskTracker: attempt_201302200135_0002_r_000000_0 0.0% reduce > copy > 
    org.apache.hadoop.mapred.TaskTracker: attempt_201302200135_0002_r_000000_0 0.0% reduce > copy >


    이러한 현상을 피하기 위해서는 다음과 같은 하둡의 포트를 열어줘야 합니다.

    하지만 사내 보안정책으로 인해 기본 포트를 사용하지 못할 경우에는, 설정 파일에서 해당 포트를 변경해주시면 됩니다.


    파라미터

     기본값

     용도

     설정 파일

     dfs.secondary.http.address

     50090

    SecondaryNameNode 웹 서버 주소 및 포트

     hdfs-site.xml
     dfs.datanode.address

     50010

    DataNode 주소 및 포트

     hdfs-site.xml
     dfs.datanode.http.address

     50075

    DataNode 웹 서버 용 주소 및 포

     hdfs-site.xml
     dfs.datanode.ipc.address

     50020

    DataNode ipc 서버용 주소 및 포트

     hdfs-site.xml
     dfs.http.address

     50070

    NameNode 웹 어드민용 주소 및 포트

     hdfs-site.xml
     mapred.job.tracker.http.address

     50030

    JobTracker 웹 서버용 주소 및 포트

    mapred-site.xml
     mapred.task.tracker.http.address

     50060

    TaskTracker 웹 서버용 웹 주소 및 포트

     mapred-site.xml

    사실 위와 같이 포트를 한땀 한땀 열어주는 건 매우 번거로운 일입니다. 그래서 대부분은 하둡이 하둡이 사내 내부망으로만 설치가 되어 있기 때문에 다음과 같이 방화벽을 내려주시는 게 가장 간단한 방법입니다.  

    su -  root

    service iptables stop

    chkconfig iptables off

    service 코맨드로 현재 실행중인 방화벽을 내려주고,

    chkconfig 코맨드로 앞으로 부팅 시 방화벽이 올라오지 않도록 설정합니다.

    2013/10/01 08:29 2013/10/01 08:29
    받은 트랙백이 없고, 댓글이 없습니다.

    댓글+트랙백 RSS :: http://blog.visualp.com/rss/response/606

    댓글+트랙백 ATOM :: http://blog.visualp.com/atom/response/606

    linux port 열고 닫기

    Linux RSS Icon ATOM Icon 2013/10/01 08:28 visualp

    1. ssh 포트 열기

     $ iptables -A INPUT -p tcp --dport 22 -j ACCEPT

     

    2. telnet 포트 열기

    $ iptables -A INPUT -p tcp --dport 23 -j ACCEPT

     

    3. web 포트 열기

    $ iptables -A INPUT -p tcp --dport 80 -j ACCEPT

    $ iptables -A INPUT -p tcp --dport 443 -j ACCEPT

    443 포트는 ssl 적용이 되는 웹 서비스를 하실 경우만 열어주면 됨. (https:// 를 이용)

     

    4. ftp 포트 열기

    $ iptables -A INPUT -p tcp --dport 20 -j ACCEPT

    $ iptables -A INPUT -p tcp --dport 21 -j ACCEPT


    4.1 ftp 포트 닫기

    $ iptables -D INPUT -s 69.36.233.0/24 -j DROP


    위의 명령어 입력 후

    # service iptables save   ---->  꼭 실행해 줘야한다.

    # service iptables restart

    2013/10/01 08:28 2013/10/01 08:28
    받은 트랙백이 없고, 댓글이 없습니다.

    댓글+트랙백 RSS :: http://blog.visualp.com/rss/response/605

    댓글+트랙백 ATOM :: http://blog.visualp.com/atom/response/605

    [원문]
    Apache를 사용하다 보면 한글파일명이 제대로 지원되지 않습니다.

    이 부분은 mod_url 이라는 모듈을 설치하면 되는데요. 아래 방법으로 설치하시면 됩니다.


    OS : Cente OS 5.5

    Apache : 2.X


    1. 모듈을 컴파일 하기 위하여 apxs라는 프로그램을 먼저 설치합니다. 만약 설치되어 있다면 넘어가셔도 됩니다.


      yum install httpd-devel


    2. 컴파일 가능한 상태인지 확인합니다.


    # httpd -l
    Compiled-in modules:
    http_core.c
    mod_so.c
    mod_php3.c
    #/usr/local/apache/bin/httpd -l | grep mod_so
    mod_so.c


    위와 같이 mod_so.c 가 있다면 apxs로 컴파일 가능합니다.


    3. 파일을 다운로드 합니다.


    wget http://kldp.net/frs/download.php/4101/mod_url-apache2-1.8.tar.bz2


    4. 압축을 풀고 컴파일 합니다.

    tar xvf mod_url-apache2-1.8.tar.bz2
    cd mod_url-apache2
    apxs -aic mod_url.c

    5. 설치 확인합니다.

    vi /etc/httpd/conf/httpd.conf

    하신 후 아래 내용이 있는지 확인하세요.

    LoadModule redurl_module      /usr/lib64/httpd/modules/mod_url.so


    6. 모듈활성화

    httpd.conf에 아래내용 추가

     CheckURL On


    7. 서비스재시작

    service httpd restart


    정상 설치되었다면 한글파일이 정상 지원되는지 확인합니다.

    2013/09/04 17:15 2013/09/04 17:15
    받은 트랙백이 없고, 댓글이 없습니다.

    댓글+트랙백 RSS :: http://blog.visualp.com/rss/response/602

    댓글+트랙백 ATOM :: http://blog.visualp.com/atom/response/602

    Apache - WEB-INF 접근 금지

    Linux RSS Icon ATOM Icon 2013/02/01 14:27 visualp
    [원문] : http://www.gurubee.net/pages/viewpage.action?pageId=3902327

    디렉토리 권한에 관한 내용이 있음으로 위의 링크를 참조 하면 도움이 됨

    <Location "/WEB-INF/*">
        Order deny,allow
       deny from all
    </Location>

    tomcat 세팅시 WEB-INF의 접근을 금지한다.
    2013/02/01 14:27 2013/02/01 14:27
    받은 트랙백이 없고, 댓글이 없습니다.

    댓글+트랙백 RSS :: http://blog.visualp.com/rss/response/545

    댓글+트랙백 ATOM :: http://blog.visualp.com/atom/response/545

    linux svn 설치

    Linux RSS Icon ATOM Icon 2013/01/03 18:07 visualp
    [원문]:http://ezgreg.tistory.com/40

    개발을 하면서 버전관리 프로그램은 필수 프로그램 중 하나입니다.
    저는 서버에 직접적으로 작업을 하기 때문에 가끔씩 파일이 롤백된다던지 예전 삭제된 자료가 없어 고생한 적이 많습니다. ㅡㅜ

    그래서 Subversion(이하 SVN)을 사용하고 있습니다.
    SVN을 기준으로 업데이트하고 서버에 업로드하는 형식으로 내가 언제 어떤 부분을 수정을 했는지에 대한 모든 소스의 로그가 남고 간단히 예전 버전으로 롤백도 가능하기 때문에 사용하시면 많이 편리한 점이 많습니다.

    여러명이서 작업을 하게 되는 프로젝트에서도 중복되지 않기 위해서 파트를 나누어 작업은 하겠지만, 공통파일들은 항상 있기 마련입니다. 이때도 내가 작업하는 파일에 대하여 Lock를 걸어 두어 다른 사람이 업데이트 하는 것을 방지할 수도 있습니다.

    그럼 CentOS에서 SVN을 설치하는 방법에 대해서 알아보겠습니다.
    CentOS의 유일한 무기 yum을 이용하여 설치를 하게 됩니다.

    # yum install subversion

    그리고 SVN의 데이터를 저장할 디렉토리를 생성합니다.

    # mkdir /home/svn

    그러면 SVN에 하나의 repository를 생성하겠습니다.

    # cd /home/svn
    # svnadmin create repo-tasks

    자, 그러면 생성한 repository는 /home/svn 디렉토리안에 repo-tasks라는 디렉토리가 생성된 것을 볼 수 있습니다.

    이제 설정 부분을 확인하도록 하겠습니다.

    /home/svn/repo-tasks/conf 디렉토리 안에는 설정파일들이 존재합니다.

    1. svnserve.conf 수정

    # vi /home/svn/repo-tasks/conf/svnserve.conf

    내용을 보시면 노란색 부분을 아래와 같이 수정합니다.

    ### This file controls the configuration of the svnserve daemon, if you
    ### use it to allow access to this repository. (If you only allow
    ### access through http: and/or file: URLs, then this file is
    ### irrelevant.)

    ### Visit http://subversion.tigris.org/ for more information.

    [general]
    ### These options control access to the repository for unauthenticated
    ### and authenticated users. Valid values are "write", "read",
    ### and "none". The sample settings below are the defaults.
    anon-access = none
    auth-access = write
    ### The password-db option controls the location of the password
    ### database file. Unless you specify a path starting with a /,
    ### the file's location is relative to the conf directory.
    ### Uncomment the line below to use the default password file.
    password-db = passwd
    ### The authz-db option controls the location of the authorization
    ### rules for path-based access control. Unless you specify a path
    ### starting with a /, the file's location is relative to the conf
    ### directory. If you don't specify an authz-db, no path-based access
    ### control is done.
    ### Uncomment the line below to use the default authorization file.
    #authz-db = authz
    ### This option specifies the authentication realm of the repository.
    ### If two repositories have the same authentication realm, they should
    ### have the same password database, and vice versa. The default realm
    ### is repository's uuid.
    realm = Tasks Repository

    anon-access = none -> 앞의 #(주석)을 제거합니다.
    auth-access = write -> 앞의 #(주석)을 제거합니다.
    password-db = passwd -> 앞의 #(주석)을 제거합니다.
    realm = Tasks Repository -> Repository 명을 입력합니다.

    2. passwd 수정

    # vi /home/svn/repo-tasks/conf/passwd

    노란색 부분과 같이 사용자를 추가합니다.

    ### This file is an example password file for svnserve.
    ### Its format is similar to that of svnserve.conf. As shown in the
    ### example below it contains one section labelled [users].
    ### The name and password for each user follow, one account per line.

    [users]
    # harry = harryssecret
    # sally = sallyssecret
    svnuser = svnpass

    접속하려는 사용자를 ID = PASS 로 추가하시면 됩니다.

    그럼 SVN 데몬을 실행합니다. 그리고 SVN이 사용하고 있는 3690 포트를 iptable에서 열어 둡니다.

    # svnserve -d -r /home/svn/
    # vi /etc/sysconfig/iptables

    iptable 파일 내에 아래와 같은 부분을 추가합니다.

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT

    그리고 저장 후 나와서 iptable를 재 시동합니다.

    # /etc/init.d/iptables restart

    자 이로서 SVN의 설치가 완료되었습니다.

    그러면 작업환경에서 SVN을 접속해 봅시다.
    우선 저는 TortoiseSVN Client를 사용합니다.
    여기를 클릭하시고 다운로드 받으셔서 설치하시면 됩니다.
    64Bit 사용자는 여기를 클릭하세요.

    만약 다운로드가 안되면 http://tortoisesvn.net/downloads에서 파일을 받으시길 바랍니다.

    설치가 완료 되었으면, 다음단계로 이동합니다.
    원하시는 곳에 임의의 새 폴더를 만드신 후, 새 폴더를 마우스 오르쪽 버튼으로 클릭하면 아래와 같은 메뉴가 나옵니다.


    여기서 SVN Checkout 를 클릭하시면 SVN 서버로 접속을 하게 됩니다.


    위에서 svn://svn-server-ip/repo-tasks 에서 svn-server-ip는 이전에 SVN을 설치했던 서버의 IP를 입력하시고 repo-tasks는 이전에 생성했던 SVN Repository입니다.

    OK 버튼을 클릭하시면 아래와 같이 인증 창이 뜹니다.
    여기서 이전에 passwd 파일에 추가한 사용자 명과 비밀번호를 입력하시면 됩니다.

    인증이 완료되면 아래와 같이 추가되었던 파일을 다운로드 하게 됩니다.
    새로운 Repository라면 아무파일도 다운 받지 않습니다.


    그러면 SVN에서 Checkout한 디렉토리에 소스 파일을 하나 복사하여 추가합니다.
    이것은 새로운 파일이 추가되었다는 것을 의미합니다.

    파일을 추가 후, 다시 마우스 오른쪽 버튼으로 해당 폴더를 클릭하면, 아래와 같은 메뉴를 보실 수 있습니다.


    여기서 SVN Commit는 변경된 파일을 적용하겠다는 의미입니다.
    Commit를 하시게 되면 SVN서버에 변경된 파일들이 적용되는 것을 의미합니다.

    위의 메뉴에서 SVN Update는 변경되어진 파일을 업데이트 하겠다는 의미로서 여러명이서 개발을 하게 될 때에는 Update를 한 후에 Commit를 하셔서 소스를 비교해가면서 업로드 하시면 됩니다.

    휴... 너무 길어졌나...
    그럼 다들 멋진 프로그램 개발하세요~
    2013/01/03 18:07 2013/01/03 18:07
    받은 트랙백이 없고, 댓글이 없습니다.

    댓글+트랙백 RSS :: http://blog.visualp.com/rss/response/544

    댓글+트랙백 ATOM :: http://blog.visualp.com/atom/response/544

    centos 6.3 설치 방법

    Linux RSS Icon ATOM Icon 2012/12/24 11:18 visualp
    CentOS는 RedHat Enterprise의 클론 리눅스다.. 무료로 RHEL의 검증되고 안정된 서버를 구축할 수 있다는 장점을 가지고 있다.
    서버용으로 설치한다고는 해도 설치과정은 GUI로 할 수 있으니 파티션 잡는 것만 잘 넘어간다면 어려운 것은 없으니 언급하지 않겠다. 기회가 되면 이것도 한번 다뤄보는 것도 좋을 듯 싶기도 하고..

    사실 APM설치에 대해 인터넷에서 검색해보면 굉장히 많은 자료가 나오고 그 자료 마다 컴파일 하는데 있어서의 방법 등에 있어서 상당히 다른 방법을 제시하는 경우가 많다.
    그들을 무시 하는 것은 아니지만 초보가 보기에는 상당히 혼란스럽고 어렵기만 하다. 또한 안정적으로 검증된, 제공된 방법으로 설치를 하고 싶을 수도 있고..
    세세한 커스터마이즈는 나중에 해보기로 하고 지금 당장 설치를 원하는 초보들을 위해 yum으로 설치하는 방법을 소개하고자 한다. (더 쉬운 건 첨에 설치할 때 패키지 설치 해버리면 끝이겠지만......)
    더보기
    일단 인터넷이 되는지 확인 해보자 그래야 yum이던 뭐든 할것이다. 구글사마께 핑을 드려보자.
    # ping -c3 google.com
    자 핑이 잘 뜨면 인터넷은 잘 된다고 보고~ 이제 본격적으루다가..
    준비작업
    (현 단계에서는 필수가 아니고 약간의 편의를 위해서 이므로 넘어가도 되고 아래 실제 설치 단계에서도 사용하지는 않는다.)
    1. putty
    리눅스 자체 콘솔 보다는 Putty가 다루는데 많은 편의를 제공 할 것이다.
    "창 - 변환 - 수신 데이터의 문자 셋 변환"에서 UTF8로 설정하고 접속 하면 한글도 잘 보이고 좋다.

    2. FTP서버
    ftp서버 환경을 미리구성하고 놓고 작업을 하면 조금은 더 편하다. 언젠가는 설치 해야 하니까 FTP환경을 구축해보자. 설치는 vsftpd를 해보자.
    # yum -y install vsftpd
    설정 편집은 다음과 같이 하자.
    # vi /etc/vsftpd/vsftpd.conf
    편집은 i키를 누르고 수정, esc키를 눌러 편집 종료, :wq 라고 입력하고 엔터 하면 저장 하고 종료.
    특별히 지금은 설정할 필요가 별로 없다. 나중에 인터넷의 각졸 글들을 참조 해서 설정해주고 일단 chroot_list만 비활성또는 주석 되어 있는지 확인만 하자. 이유는 내 폴더의 상위에 접속 할 수 있어야 설치 단계에서는 그나마 편하기 때문인데 나중에 보안의 문제가 있으니 나중에는 막아 두길 권장한다.
    서버 재기동시 해당서비스 자동실행
    chkconfig vsftpd on
    /etc/initd.d/vsftpd start
    /etc/initd.d/vsftpd stop
    /etc/initd.d/vsftpd restart
    뿌띠와 FTP서버가 준비 되었으면 설치 작업을 시작 한다.

    알림. 아래 방법대로 설치시 PHP 5.1.6으로 설치 된다. 이러저러한 이유로 상위 버전으로 설치하고 싶다면 이 글의 제일 아래부분을 확인 하자.
    apacahe, mysql, php순으로 APM 설치
    # yum -y install httpd
    # yum -y install mysql
    # yum -y install php

    보통 알아서 빠른 미러를 찾아 의존성까지 확인해서 연계된 필수 패키지까지 알아서 설치 해준다.
    관련 라이브러리 설치
    # yum -y install gd gd-devel
    # yum -y install libpng libpng-devel
    # yum -y install libjpeg libjpeg-devel
    # yum -y install freetype freetype-devel
    # yum -y install fontconfig fontconfig-devel
    # yum -y install libxml2 libxml2-devel
    # yum -y install openssl openssl-devel
    # yum -y install gmp gmp-devel
    # yum -y install mhash mhash-devel
    # yum -y install libmcrypt libmcrypt-devel
    # yum -y install mysql-server
    # yum -y install php-mysql
    # yum -y install php-devel
    # yum -y install php-gd
    # yum -y install php-mbstring
    # yum -y install php-mhash
    이 밖에도 pear나 pear-MDB2등 원하는 패키지를 설치 할 수도 있다.
    * 제일 처음에 나오는 gd를 설치하면 뒤에 나오는 libjpeg, libpng, freetype, fontconfig과 같이 자동으로 설치되지만 혹시나 하는 분들은 확인겸 설치 해보기 바란다.
    MYSQL 설정
    이제 설정을 하자... 안하고 패스 해도 됨
    mysql에서 사용할 환경 설정파일을 복사해야 하는데 시스템에 따라서 좀 다르다. 아래를 참조하자
    my-huge.cnf 1GB 이상 메모리
    my-large.cnf 512MB ~ 1GB
    my-medium.cnf 128MB ~ 256MB
    my-small.cnf 64MB 이하
    # cp /usr/share/mysql/my-large.cnf /etc/my.cnf
    본인은 Virtual Box로 설치해봤는데 512여서 large를 사용했다.

    기본관리 db를 설정하고, 권한지정도 해주자
    # /usr/bin/mysql_install_db --user=mysql
    # chown -R root /usr/bin/
    # chgrp -R mysql /usr/bin/
    # chown -R mysql /var/lib/mysql/

    이제 콘솔에서도 mysql 명령들을 사용 할 수 있도록 등록해보자.
    # vi ~/.bash_profile?
    PATH부분에 다음과 같이 추가 한다
    PATH=$PATH:$HOME/bin:/usr/bin
    지루한 mysql 설정은 이제 다 끝났다 다만 재부팅 후 자동으로 실행 할 수 있도록 등록만 해주면 된다. 일단 확인 해보자.
    # chkconfig --list | grep mysqld
    mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
    위와 같이 나오지 않는다면?
    # chkconfig --level 2345 mysqld on?
    다시 확인해 보면 원하는 대로 되어 있을 것이다.

    이제 mysql를 시작하고 루트 비밀번호를 설정하고 동작 하는지 확인한 후 mysql은 끝내자.
    # /etc/rc.d/init.d/mysqld start
    # /usr/bin/mysqladmin -uroot password 비번
    동작은 하나?
    # netstat -lntp?
    위와 같은 명령에서 보이는 결과중 "mysqld" ":::3306" 뭐 이런 글귀가 보이면 정상적으로 동작한다고 생각해도 된다.
    PHP설정
    # vi /etc/httpd/conf.d/php.conf
    아래 두줄을 찾아 아래처럼 고친다.
    AddHandler php5-script .php .htm .html
    AddType application/x-httpd-php-source .phps .php .htm .html

    수정이 끝났으면 저장 하고 같은 방법으로 httpd.conf 파일을 아래와 같은 부분들을 찾아 수정/추가한다.

    # vi /etc/httpd/conf/httpd.conf
    #ServerName www.example.com:80 (자신의 서버이름이니 알아서 적당히)
    => ServerName localhost:80

    Options Indexes FollowSymLinks
    => Options -Indexes

    AllowOverride None
    => AllowOverride All

    DirectoryIndex index.html index.html.var
    => DirectoryIndex index.html index.htm index.php

    AddType application/x-gzip .gz .tgz 을 찾아 그 다음줄에 아래 두줄 내용 추가
    AddType application/x-httpd-php .htm .html .php .ph php3 .php4 .phtml .inc
    AddType application/x-httpd-php-source .phps

    #AddHandler cgi-script .cgi 주석 삭제
    => AddHandler cgi-script .cgi


    *
    사실 vi vim 리눅스의 에디터는 윈도우즈에 익숙한 사람에게는 없이 당황하게 만드는 소프트웨어중 하나인데(적응만 한다면 없는 최고의 에디터라지만 적응은 요원하기만 하다!) 쉽게 사용을 원한다면 "#yum -y install mc" 해서 mc 사용해 보라 조금은 편하게 사용 있을 것이다.
    사실 제일 편한건 콘솔에서 직접 하는 것보다 뿌띠로 열어서 하는것과 FTP로 수정 하는것이다.. 위에서 FTP로는 에디트플러스 같은걸로 바로 수정하면 되니까..

    여기서 수정하고 추가 할것이 많기는 많다. 엄청.. 인터넷을 뒤져 보면 이부분에 대한 많은 분서를 접할 수 있을 거라고 생각 되는데 이 문서가 부족하다고 느끼는 사람이 있거나 입맛에 맞는 설정을 원하는 사람은 맛보기로 설치 해보고 제대로 공부 해보자. 친절히 설명된 많은 문서를 볼 수 있을것이다(검색의 수고로움이 더해져야 하지만.. 대부분 자기는 안다고 휘리릭 넘어가는 경우가 많다....)
    마지막으로 apache!
    설정 것은 일단 하나뿐이고 어렵 않으니 후딱하도록 하자!
    특별히 다른 것은 없고 부팅 자동 실행이 되도록 되어 있나 확인만 해보자
    # chkconfig --list | grep httpd
    httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
    역시나 위처럼 나오지 않는다면 아래와 같이 설정한다.
    # chkconfig --level 2345 httpd on
    다시 확인해 보면 원하는 대로 되어 있을 것이다.

    이제 apache를 시작해보고 동작이 되는지 확인한다
    # /usr/sbin/apachectl start
    # netstat -lntp?
    위와 같은 명령에서 보이는 결과중 "httpd" ":::80" 뭐 이런 글귀가 보이면 정상적으로 동작한다고 생각해도 된다.
    끝으로 시스템을 전체적으로 업데이트 해보자
    # yum update?
    주루룩 뭔가 많이 지나가고 업데이트 된다. 끝났다면
    # reboot
    으로 시스템을 재시작 함으로서 모든 설치 과정은 끝난다.
    테스트 설치 환경
    VM : VirtualBox
    RAM : 512MB
    HDD : 80GB
    OS image : CentOS-5.3-i386-bin-DVD.iso
    설치 시 네트워크는 NAT로 사용했고 테스트는 호스트 OS에서 접근을 해야 하므로 HOST-Only로 테스트 했다.
    Virtual Box는 아쉽게도 본인이 사용법을 정확히 이해하지 못했는지 호스트 OS가 바로 게스트 OS에 접근이 불가능했다. 하지만 공유기를 이용하고 IP Virtual Box 호스트 어댑터와 같은 대역으로 맞춘다면 인터넷도 가능 하리라 생각해본다. (귀찮아서 공유기 연결 안 했음)
    사실 apache httpd.conf의 설정 등 세세한 것이 아~~~주 많이 남았지만 위에 설명한 것 만으로도 처음 글을 시작할 때 yum으로 간단히 설치하기의 취지에 조금 벗어나지 않았나 싶을 정도로 긴 설치였다.
    하지만 차근히 따라만 한다면 쉽게 끝낼 수 있으리라 본다. 다만 vi의 사용법이 더 어려울지도 모르겠다. ^^a
    그리고 실제 릴리즈된 버전보다 YUM으로 설치하면 버전이 낮은 경우가 많은데 글의 서두에 말했다시피 CentOS RHEL의 클론이다. 즉 안정성에 우선된 검증된 릴리즈를 이용한다는 것이라고 보면 틀리지 않다고 생각된다.
    엔터프라이즈 환경에서의 가장 중요한 점은 성능도 성능이지만 안정성이 최우선시 되는 게 당연하다고 본인은 느끼기 때문에 버전이 현재 릴리즈보다 낮다고 나쁠 건 없지 않겠는가?

    추가. 위 방법대로 설치시 PHP 5.1.6으로 설치 된다. 이러저러한 이유로 상위 버전으로 설치하고 싶다면 아래처럼 해보자.
    # cd /etc/yum.repos.d
    # wget http://dev.centos.org/centos/5/CentOS-Testing.repo
    $ yum --enablerepo=c5-testing update php
    이렇게 하면 5.2.10으로 설치된다.
    나중에 상위버전으로 설치한 경우 반드시 yum update 해줘야 함을 잊지말자! 꼭..
    2012/12/24 11:18 2012/12/24 11:18
    받은 트랙백이 없고, 댓글이 없습니다.

    댓글+트랙백 RSS :: http://blog.visualp.com/rss/response/541

    댓글+트랙백 ATOM :: http://blog.visualp.com/atom/response/541

    [원문] ; http://joychester.blogspot.kr/2012/01/apache-memory-keep-increasing-due-to.html

    We have a lot of Private labels for our application. We managed their access log and Error log in each Virtual host with Apache Http server.
    If CustomLog or ErrorLog directives are placed inside a section, all requests or errors for that virtual host will be logged only to the specified file.This technique is very useful for a small number of virtual hosts, but if the number of hosts is very large, it can be complicated to manage. In addition, it can often create problems with insufficient file descriptors.
    We 'luckily' got its limitation recently by adding 2 more private labels recently. So the Apache memory is keeping increasing gradually even if there is no any requests coming in.
    When using a large number of Virtual Hosts, Apache may run out of available file descriptors (sometimes called file handles)if each Virtual Host specifies different log files.The limit is typically 64, and may usually be increased up to a large hard-limit.
    Solution to our case:
    1. We can combine all the Error logs into one Common Error log instead of creating their own within each Virtual host. So it will reduce a lot of file handles at once.
    Note: If it does not work for you , then you need have to reduce your number of Virtual Hosts with single box...
    2. Or you can try to adjust file handles limit before starting Apache, for example 100:
    #!/bin/sh
    ulimit -S -n 100
    exec httpd
    Apache official Reference:
    It is worthy to take look at the official doc carefully before using its cool features, although it is hard :)
    2012/11/27 11:11 2012/11/27 11:11
    받은 트랙백이 없고, 댓글이 없습니다.

    댓글+트랙백 RSS :: http://blog.visualp.com/rss/response/538

    댓글+트랙백 ATOM :: http://blog.visualp.com/atom/response/538

    ps -el | grep 'Z'

    Z 가 Zombie 다!

    참고로

    S : sleeping
    R : running
    D : waiting (over het algemeen voor IO)
    T : gestopt (suspended) of getrasseerd
    Z : zombie (defunct)

    2012/11/27 10:27 2012/11/27 10:27
    받은 트랙백이 없고, 댓글이 없습니다.

    댓글+트랙백 RSS :: http://blog.visualp.com/rss/response/537

    댓글+트랙백 ATOM :: http://blog.visualp.com/atom/response/537


    iptables -A INPUT -s 차단IP주소 -j DROP

    예) 192.168.1.1 전체 대역을 차단할때

    iptables -A INPUT -s 192.168.1.0/24 -j DROP

    차단 내용확인
    iptables -L

    삭제
    iptables -D INPUT 3

    모두삭제
    iptables -F

    저장
    service iptables save

    해제

    vi iptables에서 직접 목록 제거후 save 후 restart하면된다.

    2012/11/23 16:51 2012/11/23 16:51
    받은 트랙백이 없고, 댓글이 없습니다.

    댓글+트랙백 RSS :: http://blog.visualp.com/rss/response/536

    댓글+트랙백 ATOM :: http://blog.visualp.com/atom/response/536