소스에서 Apache HTTP Server 2.46 설치

8344 단어 Linux
[!NOTE]
이 글은 2013/07/31momoto.github.io에 기고한 내용을 Qita로 옮긴 것이다
Apache HTTP Server2.46을 소스 코드에서 작성하여 Unix 시스템에 설치하는 프로그램이 기록되어 있습니다.본고는 중앙 OS 6.4 환경에 설치된 예시를 소개하지만 원본 창설 프로그램은 특정한 리눅스 분배에 의존하지 않는다.
설치된 사용자는 설치 디렉토리에 대한 쓰기 권한이 있어야 합니다.usr/local/*에 설치할 때 보통 루트 권한이 필요합니다.

1. 소스 코드 가져오기


원본 코드를 설치할 기계를 위해 준비하다.인터넷에서 다운로드하면httpd.apache.org에 소스 코드의 URL이 표시됩니다.bzip2, gzip의 압축 파일을 준비했기 때문에 기계에서 해동하고 펼칠 수 있는 형식을 선택하십시오.
다운로드 시 cURL, GNU Wget 등 다운로드 관리자와 웹 브라우저를 사용합니다.다음 예에서 cURL을 사용하여 이화학연구소의 거울에서 httpd-2.46을 선택합니다.tar.gz를 다운로드합니다.
[root@localhost ~]# curl -LsO http://ftp.riken.jp/net/apache//httpd/httpd-2.4.6.tar.gz
가져온 아카이브는 작업 디렉토리를 이동하기 위해 적절하게 동결해제, 확장됩니다.FHS를 따르는 시스템이라면 독립적으로 설치된 소프트웨어의 디렉터리/usr/local을 미리 준비했기 때문에 이 글은/usr/local/src에 원본 코드를 설치하는 것을 권장합니다.
[root@localhost ~]# tar xfz httpd-2.4.6.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/httpd-2.4.6/
[root@localhost httpd-2.4.6]# 

2. 설치 요구 사항 충족


기계는 반드시 설치 요구를 만족시켜야 한다.조건에 대한 자세한 설명은 Doctorumentation에 있습니다.
C 컴파일러
[root@localhost ~]# yum install gcc
Make
[root@localhost ~]# yum install make
Apache Portable Runtime(APR)가 시스템에 미리 설치되어 있지 않은 경우(또는 시스템에서 제공한 버전을 사용하지 않으려는 경우) 응용 프로그램.appache입니다.org에서httpd에 포함된 구축을 얻습니다.획득한 APR 및 APR-Util 삭제 버전 번호 "srclib/apr”srclib/app-util로 확장됩니다.
[root@localhost httpd-2.4.6]# cd srclib/
[root@localhost srclib]# curl -Lso apr-1.4.8.tar.gz http://ftp.jaist.ac.jp/pub/apache//apr/apr-1.4.8.tar.gz
[root@localhost srclib]# tar xfz apr-1.4.8.tar.gz
[root@localhost srclib]# mv apr-1.4.8/ apr
[root@localhost srclib]# curl -Lso apr-util-1.5.2.tar.gz http://ftp.jaist.ac.jp/pub/apache//apr/apr-util-1.5.2.tar.gz
[root@localhost srclib]# tar xfz apr-util-1.5.2.tar.gz
[root@localhost srclib]# mv apr-util-1.5.2/ apr-util
PCRE 라이브러리 – www.pcre.org 및 릴리스에서 설치합니다.
[root@localhost httpd-2.4.6]# yum install pcre-devel

3. 빌드 파일 만들기

configure를 사용하여 빌드 파일을 생성합니다.configure에 옵션을 제공하여 설치 대상 디렉토리와 사용할 모듈을 조정할 수 있습니다.지정 가능한 옵션에 대해서는 configure --help 및 Doocumentation을 참조하십시오.구축 조건이 충족되지 않았을 때configure의 처리가 중단되었습니다.
예를 들어 설치 대상 디렉터리를/usr/local/httpd-2.46로 설정하고 DSO 지원을 사용하며 MPM을prefork로 표시하고 새로 가져온 APR을 사용할 때 다음과 같은 configure를 실행합니다.
[root@localhost httpd-2.4.6]# ./configure --prefix=/usr/local/httpd-2.4.6 --enable-so --with-mpm=prefork --with-included-apr
다음에 configure의 오류 예를 몇 개 소개합니다.

APR not found.


APR-not-found.
checking for APR... no
configure: error: APR not found.  Please read the documentation.
APR이 제대로 설치되어 있는지 확인하십시오.

no acceptable C compiler found in $PATH


no-acceptable-C-compiler-found-in-$PATH
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/usr/local/src/httpd-2.4.6/srclib/apr':
configure: error: no acceptable C compiler found in $PATH
C 컴파일러가 제대로 설치되어 있는지 확인하십시오.

pcre-config for libpcre not found.


pcre-config-for-libpcre-not-found.
checking for pcre-config... false
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/
PCRE 라이브러리가 제대로 설치되어 있는지 확인하십시오.
configure 처리가 끝난 후 Makefile이 제작되면 구축 단계에 들어갑니다.

4. 구축 및 설치


구축 및 설치 사용make.디스크의 용량이 충분한지 확인하십시오.
[root@localhost httpd-2.4.6]# make && make install
make의 처리가 순조롭게 끝난 후에 설치가 끝났다.파일은 configure - prefix에서 지정한 위치에서 확장되어야 합니다.PREFIX가 지정되지 않은 경우/usr/local/apchee2입니다.
[root@localhost httpd-2.4.6]# /usr/local/httpd-2.4.6/bin/httpd -v
Server version: Apache/2.4.6 (Unix)

5. 설치 후


필요에 따라httpd.conf 설정, 시작 스크립트 설정, 자동 시작 설정, 바이너리 실행 경로 설정을 하십시오.소스 코드 아카이브에 표준 LSB 시작 스크립트가 준비되어 있습니다.
[root@localhost httpd-2.4.6]# cp/usr/local/src/httpd-2.4.6/build/rpm/httpd.init/etc/init.d/httpd

동작 확인


마지막으로 네트워크 서버의 동작을 확인해 보겠습니다.웹 서버의 경우 외부 호스트로부터 동작을 확인할 때 방화벽 등의 제한을 받기 쉬우므로 설치된 기기부터 순환하여 확인하면 네트워크 접근 문제와 구별할 수 있다.
Firefox, Lynx 등의 브라우저, GNU Wget 및 cURL을 사용하여 HTTP 요청을 자신에게 전송합니다(Wget 및 cURL을 사용할 경우 HTML을 설명하지 않음).작업이 순조롭게 진행되면 문서 경로에 미리 준비된 HTML 파일에 응답해야 합니다.
동작 확인
[root@localhost ~]# lynx localhost

네트워크 액세스를 통해 동작을 확인할 수 없으면 여러 가지 이유가 있을 수 있지만 GNU/Linux 시스템에서 흔히 볼 수 있는 것은 IPtables와 SELinux 등 안전성이다.외부의 접근을 받으려면 HTTP의 네트워크 통신을 허가해야 하지만 이러한 조작이 사실상 안전성 강도를 완화시켰기 때문에 기계가 연결된 네트워크와 기록된 내용을 잘 확인하고 설정해야 한다.Apache HTTP 서버의 영역에서 약간 벗어났지만 iptables와 SELinux의 설정 확인 방법을 보여 줍니다.
iptables를 사용할 때 그룹 필터의 규칙을 확인합니다.예를 들어 Hub OS 6.4의 초기 상태에서는 포트 80에 대한 수신 라이센스가 명시적으로 표시되지 않아 외부 클라이언트의 요청에 응답할 수 없습니다.
[root@localhost ~]# iptables --list-rules
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
상기 규칙의 경우 -A INPUT-j REJECT-with icmp-host-prohibited에 -A INPUT-p tcp-mtcp-dport 80-j ACCEPT 등의 변경이 필요합니다.변경 방법도 다양하다. CentOS 6.4라면/etc/systenfig/iptables를 고친 후 iptables를 시작하면 규칙이 다시 설정된다.
SELinux 사용 시 httpdcan_network_connect의 값을 확인합니다.
[root@localhost ~]# getsebool httpd_can_network_connect
httpd_can_network_connect --> off
웹에서 웹 서버를 사용하려면 이 값을 ON으로 설정합니다.
[root@localhost ~]# setsebool -P httpd_can_network_connect on
httpd_can_network_connect 외에 CGI와 DB를 제한하는 사업도 있어 용도에 맞게 적절한 정책을 설정해야 한다.

참고 자료

  • Apache HTTP Server Version 2.4 Documentation – Apache HTTP Server
  • The Apache Portable Runtime Project
  • 좋은 웹페이지 즐겨찾기