2008년 12월 4일 목요일

리눅스웹사이트

 리눅스 웹사이트 mini-Howto

  1. 웹사이트, 웹서버, 홈페이지의 차이점

    이 셋은 구분이 애매하나 구별해서 사용해야 한다.

    웹사이트란 웹 데이타를 서비스하는데 관련된 모든 하드웨어 및 소프트웨어, 데이타 등을 총칭한다. 즉 컴퓨터, 통신망, 웹서버 프로그램, HTML문서 등을 모두 합한걸 말한다.

    웹서버란 좁은 의미로는 웹형태의 정보를 제공하는데 필요한 프로그램(httpd : 즉 Apache)을 말하나 넓은 의미로는 이 프로그램이 돌아가는 컴퓨터까지 포함한다.

    홈페이지는 단순히 웹서버에 올려진 HTML문서만을 말한다고 보면 된다.

  2. 웹사이트 구축 준비사항

    웹사이트를 구축하려면 인터넷을 연결하고 서버용 컴퓨터를 갖추어야 한다. 아래에 웹사이트 구축을 위한 사전 준비사항을 자세히 설명한다.

    1. 컴퓨터
      웹사이트를 운영하는데 필요한 컴퓨터는 우선 사용빈도, 데이타량, 동시사용자수, 서비스 정보 종류 등에 따라 크기를 결정해야 한다.

      본인의 생각으로 동시 사용자수가 20여명 정도라면 구태여 수천만원씩 소요되는 호스트급 컴퓨터를 쓰기보다는 몇 백만원하는 펜티엄급 PC를 사용하는게 낫다. 속도나 안정성면에서도 큰 차이가 없다고 본다.

      외국의 여러 사이트를 보면 우리나라의 대기업 정도되는 큰 회사가 아니면 거의 PC에 웹서버를 구축하는데 우리나라는 중소기업에서도 호스트급에 웹사이트를 개설하는 경우가 많다. 한마디로 너무 자원낭비가 심하다고 할까.

      본인이 이제까지 PC와 리눅스로 웹서버를 설치해준 경험을 토대로 웹서버를 설치하려는 PC의 사양을 권한다면,

      • CPU
        CPU로는 펜티엄이나 펜티엄 프로를 써야 한다.
        중요한 건 웹서버는 멀티유저 시스템이므로 CPU 클록속도보다는 버스의 클록속도가 더 중요하다는 것이다.
      • 메모리
        리눅스에서는 동시 사용자 1명당 1메가의 메모리가 필요하다고 한다. 다음에 운영체제 자신이 사용하는 기본 메모리가 8메가 정도이다. 따라서 동시사용자가 20여명이라면 최소 32메가 메모리가 필요하다.
      • 마더보드
        본인이 사용해본 일부 대만제 저가 마더보드에서는 리눅스의 커널이 컴파일되지 않는 경우가 있었다. 리눅스에서 추천할만한 마더보드는 인텔, Asus 등이다.
      • 랜카드
        랜카드는 3COM사 제품이 리눅스에서 가장 잘 지원된다. 각종 벤치마크에서도 3com 제품이 가장 좋은 결과를 보인다. 주의할건 일부 대만제 허브가 3com 카드와 안 맞는 경우가 있다. 따라서 허브가 대만제라면 3com 카드 사용을 조심해야 한다.
      • 멀티포트카드
        리눅스에 3 개 이상의 모뎀을 연결하겠다면 멀티포트카드를 써야 한다. 멀티포트카드 중 dummy 형은 CPU에 부하를 많이 주므로 통신속도를 38,400bps(시리얼포트 속도 기준) 이상으로 올리기 힘들다. 따라서 별도의 CPU를 갖는 인텔리전트형을 쓰는게 좋은데 Cyclade 와 Rocket 포트가 가장 설치도 쉽고 속도도 빠르며 안정적이다. 국산 멀티포트카드는 이들에 비해 속도가 20% 정도 늦다.
      • 하드 디스크
        리눅스에서 CPU보다 더 중요한 건 하드 디스크이다. 하드 디스크는 IDE 방식보다는 SCSI 방식이 당연히 낫다. 유닉스에서 철칙은 항상 가장 빠른 하드 디스크를 쓰라는 것이다. 일반 SCSI 보다는 WIDE SCSI를 또는 그보다 더 빠른 Ultra Wide SCSI를 쓰는게 좋다. 추천할만한 하드 디스크는 퀀텀, 시게이트 등이다. 삼성하드는 외국의 벤치마크 테스트에서 저질품으로 평가가 나온다. 안정성도 문제가 있다.
      • SCSI 콘트롤러
        SCSI 콘트롤러를 ISA 방식을 쓴다면 Wide SCSI 하드 디스크의 전송속도를 감당하지 못한다. 따라서 당연히 PCI 버스용을 써야 한다. 또한 Wide SCSI 하드를 쓴다면 당연히 Wide SCSI 콘트롤러나 Ultra Wide SCSI 콘트롤러를 써야 한다.
        본인이 추천하는 콘트롤러는 Adaptec사의 AHA2940-UW이다.
      • UPS
        유닉스에서 UPS를 쓰지 않는다면 UPS 값에 해당하는 대가를 언젠가는 치를 것 이라는 걸 명심해야 한다. 그리고 UPS를 쓴다면 멍텅구리(Dummy) 몇 개보다는 똑똑한 녀석(Intelligent) 한 개가 낫다.
        더미(Dummy)형의 경우 축전지를 몇 톤을 달아도 기껏 한 두시간 밖에 못 버티는데 만약 퇴근 후 전원이 나가면 어떻게 되겠는가? 있으나 마나 한 존재가 될 것이다.

        그러나 인텔리전트형의 경우 전원이 나간 후 지정한 시간내에 전원이 복귀하지 않으면 서버에 명령을 주어서 자동으로 서버를 다운시키므로 무인 운전이 가능하다.

        따라서 인텔리전트형 UPS의 경우는 UPS와 서버가 케이블로 연결되고 UPS를 모니터하는 소프트웨어가 서버에 설치된다. UPS 중 가장 성가가 높은 제품은 미국의 APC사 제품이다.

      • 백업장치
        이세상에 무결점 컴퓨터란 없다. 또 완벽한 핵킹 방지 시스템이란것도 없다고 보면 된다. 따라서 완벽한 컴퓨터나 핵킹 방지에 많은 돈과 노력을 쓰는 것보다는 데이타백업을 주기적으로 받아서 피해를 최소화 하는게 가장 나은 해결책이다. 
        백업 장치로 본인이 추천하는건 DAT(Digital Audio Tape)다. 장치 값이 약간 비싸지만 테이프 한개로 8기가 저장이 가능하고 백업 속도도 상당히 빠른 편이다.
      • 모뎀(팩스 모뎀)
        리눅스를 PPP서버로 사용하거나 다이얼업 접속을 허용하려면 모뎀을 장착하여야 한다. 또한 리눅스에 팩스모뎀을 장착하여 한푼의 비용도 추가하지 않고 훌륭한 팩스서버를 만들 수 있다.
        모뎀 구입의 철칙은 항상 그 시점에서 가장 빠르고 안정적인 제품을 구매하라는 것이다. 이유는 간단하다. 가장 좋은 모뎀과 나쁜 모뎀의 가격 차이가 불과 몇 만원인데 데이타 전송시 모뎀의 잘못으로 재전송을 받는다면 통신비와 시간 손실은 몇달 안에 모뎀 구입시 절약한 비용을 초과한다.

        모뎀업체로 비교적 좋은 평가를 받는 업체는 USRobotics, Practical Periperals, BOCA 등이다.

      참고
      ----
      팩스서버란 리눅스에 팩스모뎀을 장착해서 리눅스와 랜으로 연결된 모든 PC의 팩스 송수신을 리눅스에서 처리하는걸 말한다. 팩스 수신의 경우는 수신과 동시에 프린터로 팩스를 인쇄하게 하거나 인터넷 메일로 사용자에게 팩스 도착사실을 알려주기도 하고, 팩스 내용을 GIF파일로 변환하여 PC에서 화면으로 팩스 내용을 확인할 수 있는 등의 장점이 있다.

      팩스 송신의 경우는 팩스서버와 랜으로 연결된 win95 PC에서만 가능한데 사용법은 아주 간편하다. 즉 윈95에서 돌아가는 아무 어플리케이션에서든 팩스라는 프린터로 인쇄만하면 바로 전화번호 입력화면이 뜨고 전화번호를 입력하면 팩스 송신이 개시된다.

      사용해 본 결과 몇 백 만원씩하는 상용 팩스서버보다 리눅스 팩스서버가 훨씬 안정성이 높다는 것이다.

    2. 운영체제

      웹서버 운영체제로 가장 많이 사용되는 운영체제는 리눅스/유닉스이다. 하지만 리눅스/유닉스에서 웹서버를 운영하려면 최소 3개월여 정도는 공부를 해야 한다.

    3. 인터넷 연결

      웹서버를 자기 혼자 쓰든가 아니면 사내에서만 사용할 계획이 아니라면 다음은 웹서버를 인터넷과 연결하여야 한다. 웹서버를 인터넷과 연결하려면 인터넷 서비스 업체(ISP)를 통해야 하는데 ISP는 통신망 연결부터 도메인네임을 받는 것까지 모두 처리해 준다. 연결에 필요한 장비는 구매할 수도 있고 ISP에게서 대여받아도 된다.

      아래에 대체적인 비용과 장비를 소개하면,

      • LAN TO LAN
        가장 안정적이며 보통 64 개 정도의 공인 IP를 받을 수 있다. 단지 비용이 조금 비싸다.

        비용 : 월 50-60만원( 128 k : 할인시)
        장비 : 라우터, FDSU

      • 호스트접속
        호스트 컴퓨터 한대에만 IP 어드레스를 부여 받는 후 이 어드레스를 호스트에 계정을 갖고 있는 모든 사용자나 랜으로 연결된 다른 컴퓨터에서 공유하여 사용하는 방식이다. ?DSL 이라는 장비를 이용해서 일부 업체가 서비스하고 있다. 이방식으로는 웹서버를 구축하는건 문제가 없으나, 이호스트와 랜으로 연결된 다른 컴퓨터에서 인터넷의 일부 서비스를 사용하는데는 약간의 제한이 따른다.
        하지만 리눅스를 쓸 경우 slirp, proxy 서버, IP Masquerade 등의 기법을 사용함으로서 이 한계를 대부분 극복할 수 있다.

        비용 : 월 20-30만원(128kbps)
        장비 : 업체에서 빌려줌.

      • CO-LAN (115.2k)
        한국통신에서만 서비스하고 있으며 위의 호스트 접속과 같으나 단지 기존의 음성전화선을 사용하므로 설치가 간편하다.

        비용 : 월 20만원
        장비 : VDM

      • ADSL
        한국통신에서만 현재 고정 IP 서비스를 제공하고 있다. (유동 IP는 웹서버를 구축할 수 없음.) 아래 두 종류가 있다.
        • ADSL My IP : IP 1 개이며 속도(업로드)는 최대 384kbps
        • ADSL Multi IP : IP 5 개이며 속도는 512k. IP 추가가 가능함. 
            ADSL의 경우 다운로드 속도는 2 메가도 가능하나 웹서버의 경우는 업로드 속도가 중요하다.

        비용 : My IP(월 90,000원), Multi IP(월 190,000원) 
        장비 : 한국통신에서 대여해줌.

      필자의 견해로는 속도 대 비용 관점에서 ADSL이 가장 낫다. 단지 안정성에서 떨어진다. 피시가 많지 않은 경우 추천할 만하다.

      만약 네트웍에 자신이 있다면 주위에 LAN to LAN으로 인터넷을 사용 중인 다른 업체에 전용선이나 TT선을 연결하여 인터넷을 나누어 쓰는 방법이 있다. 하이텔 OSC 랜 강좌/정보란에 이에 대한 자세한 글을 쓴 적이 있으니 참고 하기 바란다. 이 경우는 비용은 월 25,000원(TT선)부터 125,000원(56k 전용선)이다.

  3. 웹서버 프로그램(httpd)

    웹서버 프로그램은 운영 체제에 따라 다르지만 쉐어웨어나 프리웨어를 쓰면 충분하므로 구태여 비싼 상용프로그램을 쓸 필요가 없다. 리눅스에서 웹서버 프로그램으로 가장 많이 쓰이는 프로그램은 apache와 CERN이다.

    설치방법은 cern은 http://www.w3.org
    apache는 http://www.apache.org 를 참고 하면 된다.

  4. 버츄얼(Virtual) 웹서버(웹호스팅)

    컴퓨터 한대로 여러 도메인 네임에 속하는 웹서버를 돌리는걸 버츄얼 웹서버라고 한다. 즉 www.linuxlab.co.kr 과 www.linuxjournal.co.kr을 한대의 컴퓨터에서 모두 지원되게 하는걸 말한다. 물론 기계만 한대이지 외부에는 전혀 다른 홈페이지가 뜨므로 다른 사람들은 전혀 별개의 기계에서 가동되는걸로 알게된다.

    현재 여러 인터넷서비스업체에서 월 일정비용을 받고 웹서버를 운영해 주고 있는데 이때 한 업체마다 별도의 웹서버를 두는게 아니라 바로 버츄얼 웹 기법을 써서 한대의 큰 호스트에 여러 업체의 홈페이지를 모두 가동해주고 있다.
    버츄얼웹을 웹 호스팅이라고도 한다.

    리눅스에서 버츄얼 웹을 쓰려면 아래 순서를 밟아야 한다.(아래의 경우는 서버 한 대에 여러개의 IP를 부여해 각 IP 별로 별도의 웹서버를 돌리는 방식이다. IP 한 개로 여러개의 홈페이지를 돌리는 도메인네임 버츄얼서버의 경우는 단지 Apache에서의 설정만 필요하다.)

    1. 라우팅 테이블 조정

      먼저 ISP와 연결된 라우터에 2개 이상의 네트웍 어드레스를 버츄얼웹을 담당할 컴퓨터가 연결된 랜으로 라우트 되도록 라우팅 테이블을 바꾸어야 한다. 네트워크 어드레스가 여러개인 경우 보통 ISP가 이 부분을 설정해주나 직접 라우터를 설치한다면 필요하다.

      네트웍이 다르지 않고 단지 ip 주소만 다르게 할 경우(ip aliasing)는 이 과정은 필요없다.

    2. 리눅스에서의 조정
      • 커널 컴파일
        커널을 컴파일해서 network aliasing 과 ip aliasing 을 enable시켜준다.
        (커널 2.0 이상에서만 가능함)
      • 라우팅 테이블 작성
        한개의 랜카드가 두개 이상의 ip address를 인식케 하기 위해서는 IP aliasing을 써야 한다. 두번째의 주소를 eth0에 할당하려면,
        ifconfig eth0:0 w.x.y.z
        route add w.x.y.z
        위 두 명령이 필요하다.
      • 버츄얼 웹서버 프로그램
        아파치 웹서버 프로그램에서 setup을 조정하여 서로 다른 도메인네임에 대해서 다른 디렉토리에 있는 홈페이지가 뜨도록 조정하면 된다.

        예를 들면

         

        <>   ServerName www.test.com   ServerAdmin webmaster@test.com   DocumentRoot /usr/web/test.docs        ..        ..       < /virtualHost >  

        이상이다.

  5. IP 어드레스 공유하기

    웹서버 구축을 위해서 호스트 접속 방식으로 인터넷을 연결한 경우 IP 어드레스는 한개 밖에 나오지 않는다. 그런데 이 한개를 웹서버 PC에 쓰고 나면 이 PC와 랜으로 연결된 다른 PC들은 이 웹서버에 쉘어 카운트로 login하여 인터넷을 써야 하므로 인터넷의 대부분의 서비스를 사용할 수 없다.
    즉, 가장 중요한 WEB서비스를 쓸 수 없다.

    이걸 해결하는 방법은 아래에 3가지가 있다.

    1. Pseudo PPP

      이는 쉘어카운트 상태에서 특정한 프로그램을 실행하여 PPP모드를 흉내내므로서 WEB을 볼 수 있게 한다. 상용으로는 TIA가 있고 프리웨어로는 Slirp가 있다.

    2. IP masquerade

      현재 리눅스에서만 가능한걸로 알고 있다. 인터넷 정식 어드레스가 부여된 서버의 리눅스에 이 기법을 쓰면 이서버와 lan 또는 PPP로 연결된 다른 PC에서도 리눅스 서버의 인터넷 어드레스를 공유하여 인터넷의 대부분의 서비스를 이용할 수 있다.(WEB, telnet, ftp 등) 자세한건 IP Masquerade-Howto를 참조하기 바란다.

    3. proxy server

      인터넷 정식 어드레스가 있는 서버에 설치된 프로그램(proxy server)이 이서버와 랜으로 연결된 다른 클라이언트 PC의 인터넷 서비스 요청을 받아서 인터넷의 실제 호스트에서 데이타를 가져다 넘겨주는 방식이다.
      따라서 인터넷 어드레스는 proxy server가 설치된 PC에만 부여하면 되고 클라이언트 피시는 내부 어드레스를 쓰면 된다.

      대부분의 웹서버 프로그램(CERN, Apache 등)은 proxy server의 기능도 갖고 있다. proxy server와 IP masquerade는 그 기능은 유사하나 작동원리는 전혀 다르다. IP masquerade는 서비스 종류에 따라 사용 가능여부가 결정된다. 즉, ftp가 가능하다면 client 프로그램은 어떤 ftp 프로그램을 써도 가능하다. 이에비해 proxy server는 client 프로그램에 의해 서비스 종류가 결정된다. 예를 들면 netscape는 proxy server를 지원하는데 여기서 지원하는 서비스는 http(WEB), FTP, Gopher, WAIS등이다.

      본인의 개인적인 견해로는 IP Masquerade가 proxy server 보다 속도도 빠르고 사용도 편하다. 안정성면이나 캐쉬 기능은 proxy server가 낫다.

  6. 방화벽(firewall)

    방화벽이란 인터넷이 연결된 외부망과 사내의 랜을 분리 시켜주는 컴퓨터를 말한다. 두 망이 물리적으로 완전히 분리된다면 방화벽은 존재 이유가 없다. 대부분의 방화벽의 목적은 내부랜에 있는 컴퓨터끼리는 서로 자유로운 억세스가 가능하되, 외부망의 컴퓨터는 내부랜의 컴퓨터로의 억세스가 불가능하도록 하고, 내부랜의 컴퓨터는 외부망에 있는 컴퓨터에 제한적으로 억세스가 가능하도록 하는데 그 목적이 있다.

    따라서 방화벽으로는 그 목적에 따라 컴퓨터를 쓰기도 하고 라우터를 쓰기도 한다.
    보통은 컴퓨터에 두개의 인터페이스를 설치하여 한개는 내부랜에 다른 한 개는 외부망에 연결한 후 해당 컴퓨터의 라우팅 테이블을 조정하거나, 필요한 소프트웨어를 설치해서 그 목적을 달성한다.

    방화벽을 설치할 경우 당연히 내부랜에 있는 컴퓨터의 인터넷 사용은 상당한 제약이 따르는데 이를 완화할 경우 그 만큼 방화벽의 본래 목적인 보안 기능은 약화되고, 반대로 방화벽 고유의 기능을 강화하면 인터넷 서비스 사용 범위는 좁아진다.

    리눅스에서 가장 손 쉬운 방화벽 구축은 port fortwarding 기법이다. 더 많은 기능을 요한다면 TIS Firewall Tool Kit을 쓰면 된다.

배철수

0 개의 댓글:

 

심심풀이 한치 와 맥주. Design By: SkinCorner