라즈베리파이(6) 웹서버 구축
라즈베리파이 웹서버
웹서버 구축 개요
: 라즈베리파이에 웹서버를 구축한다. 웹서버 제품은 대중적인 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 -> 아파치 순으로 설치해야한다.
-
- 선행 컴파일 관련 패키지를 설치
- 컴파일 관련하여 아래 패키지들이 필수라고 한다. 아래 명령어로 설치한다.
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
-
- 아파치 수동설치 경로 정하기
- 아파치 및 관련 패키지 설치 경로를 미리 정한다.
mkdir /fswas/install # 다운받은 원본 패키지를 넣는 공간 mkdir /fswas/apache/httpd/[아파치 버전명으로 생성] # 아파치를 최종으로 설치할공간 mkdir /fswas/apache/apr # 아파치 의존성패키지 설치할 공간 mkdir /fswas/apache/apr-util # 아파치 의존성패키지 설치할 공간 mkdir /fswas/apache/pcre # 아파치 의존성패키지 설치할 공간
-
- 소스파일 다운로드
- 아래 링크의 공식홈페이지에서 아파치와 아파치에 필요한 의존성 패키지 소스를 다운로드한다. (apache를 ubuntu에 설치 및 실행하기 위해서는 APR, PCRE와 같은 의존성 패키지를 설치해야 한다.)
소스 이미지파일 공식홈페이지 설명 Apr, Apr-util 다운로드 링크 의존성패키지 Pcre 다운로드 링크 의존성패키지 Apache 다운로드 링크 아파치웹서버소스 -
- 소스파일 압축해제
- 각각의 폴더에 압축을 풀어준다.
추가로 심볼릭링크로 마지막버전임을 관리차원에서 걸어주었다. :)
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
-
- 설치
- 이제 설치를 위한 준비가 끝났다. 설치를 진행한다.
- 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