4 minute read

라즈베리파이 웹서버

웹서버 구축 개요

: 라즈베리파이에 웹서버를 구축한다. 웹서버 제품은 대중적인 Apache 으로 결정했다.

자동설치와 수동설치

: 자동설치수동설치 모두 테스트해보았는데 웹서버를 원하는 경로에 설치하고싶어서 수동설치 를 메인으로 진행한다.

  • 자동설치란?
    흔히 apt-get 명령어등으로 패키지를 쉽게 제공하는 명령어
  • 수동설치란?
    소스설치, 수동설치, 컴파일설치: linux에서 소스를 직접 다운받아 컴파일하여 설치하는 것을 말한다.

수동설치의 상세 목적

: 패키지 설치로 간편하게 설치를 할 수 있지만 불필요하게 설치되는 파일들이 시스템의 자원을 사용하게 되고 패키지 단위로 설치되기에 관리적으로 문제가 발생 가능하다.

  • 원하는 경로에 설치하고 싶을때
    수동설치로 폴더링하여 web, was 제품을 한곳에서 특정관리자가 관리하고 싶다.
  • 급격하게 최신버전의 패키징설치가 필요한경우 apt-get 명령어처럼 자동설치에 최신버전 갱신이 필요할때
    최신소스파일을 반입해서 수동설치하는 방법이 필요할 것이다.
  • 외부망이 안되는 환경에서 apt-get 또는 wget 명령어를 못쓸때
    소스파일을 반입해서 수동설치하는 방법이 필요할 것이다.
  • 실제 업무환경에서 보안상이유로 자동설치 비권장
    헤더정보를 감추기위해

설치 소스경로 관례

: 패키지 설치시 여러 소스들이 설치되는 경로에대해 관례가 존재한다.

  • 소스파일은 /usr/local/src 에 보관한다.
  • 소스설치는 /usr/local 에 설치하는것이 관례이다.
  • 소스설치시 prefix를 지정하지 않았다면 통상적으로 binary는 usr/local/bin 에 설치되고, library는 usr/local/lib에 설치된다.

Apache 웹서버 수동설치 (소스컴파일 방식)

: 소스컴파일방식의 수동설치를 진행한다.

  # 기본적인 소스 컴파일방식 설치방법은 다음과 같다.

  미리 소스파일준비        # 공홈에서 패키지소스를 다운받고 서버에 올려둔다.
  /configure           # 소스 구성이다. 소스파일에 대한 환경설정을 해주는 명령어다. (뒤에 옵션을 넣음) 서버환경에 맞추어 makefile을 생성해주는 과정이다.
  /configure --prefix  # prefix가 있으면 경로를 지정할 수 있다.
  make                 # 소스컴파일이다. 소스를 컴파일 하는 것이다. 컴파일이란 소스파일을 사용자가 실행 가능한 파일로 만들어 주는 과정을 말한다.
  make install         # 설치한다. make를 통해 만들어진 설치파일을 설치하는 과정이다. 한마디로 build된 프로그램을 실행할 수 있게 파일들을 알맞은 위치에다가 복사를 한다.
  

참고) 아파치 소스설치 주의사항
앞으로 httpd-2.4.X 버전부터는 apr과 apr-util, pcre 라는 의존성 패키지를 별도로 설치하여야 apache 설치가 완료된다고 한다.
apr -> util -> pcre -> 아파치 순으로 설치해야한다.

  1. 선행 컴파일 관련 패키지를 설치
    컴파일 관련하여 아래 패키지들이 필수라고 한다. 아래 명령어로 설치한다.
     sudo apt-get update && sudo apt-get upgrade  #패키지 업데이트 선행
    
     apt-get install gcc
     apt-get install libexpat1-dev
     apt-get install g++
     apt-get install libexpat-dev
    
    
  2. 아파치 수동설치 경로 정하기
    아파치 및 관련 패키지 설치 경로를 미리 정한다.
     mkdir /fswas/install          # 다운받은 원본 패키지를 넣는 공간
     mkdir /fswas/apache/httpd/[아파치 버전명으로 생성]   # 아파치를 최종으로 설치할공간
     mkdir /fswas/apache/apr       # 아파치 의존성패키지 설치할 공간
     mkdir /fswas/apache/apr-util  # 아파치 의존성패키지 설치할 공간
     mkdir /fswas/apache/pcre      # 아파치 의존성패키지 설치할 공간
    
    
  3. 소스파일 다운로드
    아래 링크의 공식홈페이지에서 아파치와 아파치에 필요한 의존성 패키지 소스를 다운로드한다. (apache를 ubuntu에 설치 및 실행하기 위해서는 APR, PCRE와 같은 의존성 패키지를 설치해야 한다.)
    소스 이미지파일 공식홈페이지 설명
    Apr, Apr-util 다운로드 링크 의존성패키지
    Pcre 다운로드 링크 의존성패키지
    Apache 다운로드 링크 아파치웹서버소스
  4. 소스파일 압축해제
    각각의 폴더에 압축을 풀어준다.

    추가로 심볼릭링크로 마지막버전임을 관리차원에서 걸어주었다. :)

     tar -zxf apr-1.7.0.tar.gz
     sudo ln -s /fswas/apache/apr/apr-1.7.0 lastver
    
     tar -zxf apr-util-1.6.1.tar.gz
     sudo ln -s /fswas/apache/apr-util/apr-util-1.6.1 lastver
    
     tar -zxvf  pcre2-10.40.tar.gz
     sudo ln -s /fswas/apache/pcre/pcre2-10.40 lastver
    
     tar -xvfz httpd-2.4.51.tar.gz
     sudo ln -s /fswas/apache/httpd-2.4.54/ lastver
    
    
  5. 설치
    이제 설치를 위한 준비가 끝났다. 설치를 진행한다.
    A. Apr 설치
    의존성 패키지
    cd /fswas/apache/apr/apr-1.7.0
    ### 설치할 소스파일을 install폴더에서 가져와 압축해제
          
    ./configure --prefix=/fswas/apache/apr/
    # 여기서 오류가 발생한다면.
    cp -arp libtool libtoolT  # 이 유틸을 다운로드 해주고 재시도하면 된다.
          
    make
    make install
      
    
    B. Apr-util 설치
    의존성 패키지
    cd /fswas/apache/apr-util/apr-util-1.6.1
    ### 설치할 소스파일을 install폴더에서 가져와 압축해제
          
    ./configure --prefix=/fswas/apache/apr-util/ --with-apr=/fswas/apache/apr/
    make
    make install
      
    
    C. Pcre 설치
    의존성 패키지
    cd /fswas/apache/pcre/pcre2-10.40
    ### 설치할 소스파일을 install폴더에서 가져와 압축해제
          
    ./configure --prefix=/fswas/apache/pcre/
    make
    make install
      
    
    D. Apache 설치 (apache-2.4.51)
    아파치를 의존성패키지와 함께 설치한다.
    
    mkdir /fswas/apache/httpd/httpd-2.4.541    # 버전명으로 실제 아파치를 설치할 빈디렉토리 생성
    
    cd /fswas/apache/httpd/httpd-2.4.541
    cp ../../../install/httpd-2.4.54.tar.gz .  # 설치할 소스파일을 install폴더에서 가져와 압축해제
    tar -zxf httpd-2.4.54.tar.gz 
          
    # 위와 같이 압축해제한 이유는 경로/httpd/[버전명]으로 관리하고 싶어서 수행했다. :)
      
    ./configure --prefix=/fswas/apache/httpd/httpd-2.4.541 \  #Apache를 설치할 경로를 입력한다. --prefix= 에 입력하는 경로에 Apache가 설치된다.
    --enable-module=so \
    --enable-rewrite \
    --enable-so \   # Apache가 지원하는 동적공유객체(DSO) 기능을 사용하기 위한 옵션이다.
    --enable-ssl \                  # SSL 모듈 필수(기존 설치된 SSL 모듈이 필요하다.)
    --with-ssl=/fswas/apache/ssl \  # SSL 모듈 필수(기존 설치된 SSL 모듈이 필요하다.)
    --enable-modules=ssl \          # SSL 모듈 필수(기존 설치된 SSL 모듈이 필요하다.) mod_ssl 이 제공하는 SSL/TLS 기능을 사용한다.
    --enable-proxy \
    --enable-proxy-ajp \
    --enable-proxy-balaner \
    --enable-proxy-http \
    --enable-proxy-connect \
    --with-apr=/fswas/apache/apr/ \                    #해당경로에 패키지를 사용하여 설치하겠다는 옵션이다.
    --with-apr-util=/fswas/apache/apr-util/ \          #해당경로에 패키지를 사용하여 설치하겠다는 옵션이다.
    --with-pcre=/fswas/apache/pcre/bin/pcre2-config \  #해당경로에 패키지를 사용하여 설치하겠다는 옵션이다.|
    --enable-mods-shared=all  # 동적공유객체(DSO) 기능을 사용할 모듈을 지정한다. 해당 모듈들은 LoadModule 지시어로 사용하여 읽어들여야하며, most로 설정하면 대부분, all로 설정하면 모든 모듈을 지정한다.| 
        
    
    make
    make install
    
    

    주의) SSL 관련내용을 빼먹으니 SSL 을 적용하려고할때 관련모듈이 없어서 재설치하느라 매우 삽질했다.
    DSO 기능의 핵심이 설치시점에 누락된 모듈을 동적으로 넣을 수 있다고 하는데 SSL 공식홈페이지에서 배포하는 버전이 현재 최신버전보다 낮았던것같다.. 그래서 openssl 을 패키지 자동설치하여 ssl.so 모듈을 얻으려고 했지만 생각보다 잘 되지않았다..
    번거롭지만 위처럼 재설치를 진행했고 해결했다. SSL 적용은 포스팅 예정이다 :)

Apache 웹서버 폴더 권한변경

: 목적대로 폴더링하여 설치를 완료했으므로 실행, 중지를 위해 특정계정에게 폴더권한을 준다. 필자는 wasadm 이라는 웹관리자 계정에게 권한을 위임한다.

  # 아파치가 설치된 폴더전체에 웹관리자계정 권한을 준다.
  sudo chown -R wasadm:wasadm /fswas

Apache 웹서버 실행

: 설치를 완료했다. 서버를 시작, 중지를 해본다.

  # 실행: httpd -k start, 종료: httpd -k stop

  sudo /fswas/apache/httpd//httpd-2.4.541/bin/httpd -k start  

  ps -ef | grep httpd | grep -v grep
  sudo netstat -anp | grep httpd
  sudo curl http://127.0.0.1

Apache 웹서버 포트변경

: 기본포트 80을 다른 포트로 변경해본다. 자동설치로 설치한 아파치(apache2)와 수동설치한 아파치(httpd)는 포트 변경하는 방법이 다르다.

  # ASIS 자동설치 패키지 포트변경
  sudo vi /etc/apache2/ports.conf # Listen 80 옵션을 주석처리하고 원하는 포트로 변경한다
  
  # TOBE 수동설치 패키지 포트변경
  sudo vi /fswas/apache/httpd/httpd-2.4.541/conf/httpd.conf  # Listen 80 옵션을 주석처리하고 원하는 포트로 변경한다

(작성중)Apache 실행시 오류기록

: 실행 이슈를 실시간으로 기록한다.

  • AH00558(서버네임오류)
    내용은 아래와 같으며 httpd.conf 파일에 ServerName 주석해제해야 한다.

httpd: 127.0.0.1을 사용하여 서버의 정규화된 도메인 이름을 안정적으로 결정할 수 없습니다. 이 메시지를 표시하지 않으려면 ‘ServerName’ 지시문을 전역적으로 설정하십시오.

  vi /fswas/apache/httpd//httpd-2.4.541/conf/httpd.conf  
  # ServerName 옵션에 주석을 제거하고 아파치 웹 서버를 실행할 IP 또는 hostname 을 입력한다. 
  # 자신의 컴퓨터에서만 사용할 거라면 localhost 나 127.0.0.1 을 입력해 주면된다.
  # 외부에서 사용할 웹 서버라면 IP 나 hostname 을 입력해주면 된다.
  # ServerName localhost:80 또는 ServerName 127.0.0.1 으로 설정 후 저장

  # (추가) 도메인을 구입한뒤에는 127.0.0.1 을 www.blang.com.kr 으로 변경했다.

Leave a comment