[CentOS 6.x] APM컴파일 설치 방법 1. Apache설치

글쓴이 Engineer Myoa 날짜

APM은 Apache, PHP, Mysql의 약자로 웹 기반 어플리케이션을 서비스 할 수 있는 플랫폼을 구축하는 것입니다.

이 3개는 보통 24시간 운용되는 리눅스 서버에서 자주 사용됩니다.

문제는 리눅스 배포판이 하도많고 그에 따라 맞게 컴파일된 패키지를 배포(distribute)해줘야 하는데

각각 사용하는 커뮤니티가 달라 모든 배포판의 판올림이 동일하게 적용되지는 않습니다.

 

이 때 필수적인것이 컴파일 설치이며, 컴파일 설치의 장점은 버전업(up-to-date) 뿐 아니라

자신이 운용하는 장비의 아키텍쳐에 가장 적합하게 컴파일링 되고 사용할 수 있다는 것입니다.

 

따라서 판올림이 잦고 제로데이같은 보안이슈가 많은 소프트웨어에서는 더더욱 신속하게 업데이트해야하고

속도적인 면에서도 빠르게 작용할 수 있습니다.

 

작성하는 글은

[Linux/CentOS] 컴파일을 이용하여 Apache 최신버전을 설치하자

위의 글을 참조합니다.

 

 

0. 기존 패키지삭제

만약 기존에 httpd가 패키지로 설치가 되어있다면

$ rpm -qa | grep httpd

$ rpm -qa | grep apache


// 의 결과로 나온 녀석들을

$ rpm -e xxxxxx
// xxxxxx에 넣어서 삭제해주세요

 

 

1. 의존성 패키지 및 라이브러리 설치

Apache를 컴파일 설치하기 위해서는 사전에 의존성 패키지를 설치해야합니다.

리스트는 아래와 같습니다.

apr 1.5.2 (https://apr.apache.org/)

apr-util 1.5.4 (https://apr.apache.org/)

pcre 8.38 (http://www.pcre.org/)

 

1)  apr, apr-util

 

apr과 apr-util은 위의 apr.apache.org주소에서 모두 받을 수 있으며 사진에서처럼 Download버튼을 누르면 다운로드 받을 수 있는 페이지가 연결됩니다.

 

CentOS(Linux 커널)설치이므로 반드시 Unix Source로 받아야 하며 아키텍쳐에 맞게 컴파일 하므로 32bit, 64bit를 구분하지 않습니다.

 

mkdir로 작업할 임시폴더를 하나 생성하고 이동해주세요.

$ wget http://mirror.navercorp.com/apache//apr/apr-1.5.2.tar.gz

$ wget http://mirror.navercorp.com/apache//apr/apr-util-1.5.4.tar.gz

$ tar -xvzf apr-1.5.2.tar.gz
$ tar -xvzf apr-util-1.5.4.tar.gz

하면 apr과  apr-util에 대한 폴더 2개가 생깁니다.

 

$ cd apr-1.5.2
// apr설치를위해 경로이동
$ ./configure
$ make
$ make install
// 순서대로 작업이 끝날때마다 입력해주면 됩니다.

$ cd ..
// 상위 디렉터리로 이동

$ cd apr-util-1.5.4
// apr-util설치를위해 경로이동

$ ./configure --with-apr=/usr/local/apr
// apr을 설치했고 의존성 설정을 위해 --with-apr 옵션을 주었습니다.

$ make
$ make install

이로써 2개의 설치가 끝났습니다.

 

만약 ./configure에서 no acceptable C compiler found in $PATH 과 같은 에러가 난다면

에러문장 그대로 C컴파일러를 찾지못해서(설치되어있지 않다고 판단) 발생하는 에러입니다.

해결법은 리눅스용 gnu c컴파일러를 설치해주면됩니다.

$ yum install gcc

 

 

2) pcre

pcre는 자체 ftp서버 또는 sourceforge의 미러 둘 중 한곳에서 받을 수 있으며

버전이 높다고 pcre2를 받으면 안되고 pcre를 받아야합니다.

ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

https://sourceforge.net/projects/pcre/files/

 

 

$ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz

$ tar -xvzf pcre-8.38.tar.gz

$ cd pcre-8.38

$ ./configure --prefix=/usr/local/pcre

$ make
$ make install

error: Size of “void *” is less than size of “long” 발생시

$ vim configure

.
.
.

// vim내에서 아래를 찾습니다. ('/' 키가 검색입니다.)
/ap_void_ptr_lt_long

ap_void_ptr_lt_long=yes
// 를
ap_void_ptr_lt_long=no
// 로 모두 바꿔주세요

 

 

2. Apache 컴파일

이제 본격적으로 apache를 컴파일 합니다.

https://httpd.apache.org/download.cgi

다운로드는 위에서 받습니다. 다만 중요한 것은 apache 2.4는 CentOS 7 이상에서 호환되므로

CentOS 6.x를 사용하는 우리는 2.2.x버전을 설치하도록 합니다. 둘 다 다른 branch로 릴리즈되고 있으니 하위버전이라고만 생각하실필요는 없습니다.

$ wget http://apache.tt.co.kr//httpd/httpd-2.2.31.tar.gz

$ cd httpd-2.2.31
$ ./configure --prefix=/usr/local/apache --enable-http  --enable-info --enable-cgi --enable-so --with-pcre=/usr/local/pcre
// 추후 컴파일설치한 apache에 대해 php와 mariadb를 연동해야 하므로 prefix의 경로는 수정하지 마세요

$ make
$ make install

 

3. 기본설정

이제 /usr/local/apache 경로에 apache가 설치됐습니다.

기존 패키지로 설치했을 때는 service httpd start하면 실행이 됐으나 지금은 그렇지 않습니다.

“인식되지 않은 서비스” 로 표시됩니다.

데몬이 환경변수 폴더에 들어있지 않기 때문이죠

 

지금부터 자동시작을 위한 파일수정, 환경변수폴더에 옮기기, 자동시작설정을 하겠습니다.

$ vim /usr/local/apache/bin/apachectl

// #!/bin/sh 바로 밑줄에 아래 구문을 삽입합니다.

$ chkconfig: - 85 15
$ description: apache auto start

// 이 두 줄을 넣어줘야 apachectl 바이너리를 chkconfig에 등록하여
// 시스템 부팅, 리부팅시 자동으로 데몬을 시작할 수 있도록 합니다.



$ cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
// 혹은 /usr/local/apache/bin/httpd
// 개인적으로 httpd말고 apachectl을 복사했으면 합니다.



// 시스템 부팅시 자동시작
$ chkconfig --add httpd
$ chkconfig --level 2345 httpd on

 

이제 httpd -v를 입력했을 때

$ httpd -v

Server version: Apache/2.2.x (Unix)
Server built : xxxx-xx-xx
// 이런식으로 출력이 되면 정상적으로 설치가 됐고 서비스를 사용할 수 있다는 뜻입니다.

 

따라서 정상적으로 사용가능한 apache를 데몬으로 돌리면

$ service httpd start

// 실패가 나면 설치과정에 문제가 발생했으므로 관련디렉터리를 삭제하고
// 처음부터 다시 진행합니다.

다음과 같이 프로세스 조회시 httpd 데몬이 발견됩니다.

 

자세히 보면 root로 1개, apache로 4개의 프로세스가 돌아가는데 이는 제가 추가로 설정해서 그런것이므로

( 프로세스를 fork하여 apache계정에게 권한을 상속합니다. )

 

2장에서는 root가 아닌 apache로 서비스를 돌릴 수 있도록 및 기본 보안설정등을 작업하겠습니다.

 

 

카테고리: 강의

10개의 댓글

답글 남기기

Avatar placeholder

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다