본문 바로가기

네트워크 서버 구축 실무

소스를 컴파일해서 APM을 설치하자.(Fedora 19)

[step 0] root 사용자로 접속 후 'yum -y remove httpd' 를 입력해 기존에 기본으로 설치된 httpd 제거 

[step 1] 아파치 웹 서버 소스 파일을 다운로드 한다.

1-1. 먼저 httpd를 컴파일하기 전에 필수 요소인 pcre-8.33.tar.bz2 파일을 다운로드 한다.

1-2. pcre-8.33 디렉토리로 이동한 후 다음의 컴파일 관련 명령어를 차례로 입력한다.

./configure ; make ; make install      ->  환경 설정, 컴파일, 설치를 동시에 진행

소스를 컴파일한다는 의미는 프로그램 소스(대개는 C언어로 만들었음)를 gcc 컴파일러로 직접 컴파일해서 사용한다는 의미다. 소스 컴파일 과정 대부분은 크게 아래 3단계를 거친다.  

 configure(환경설정)

 프로그램이 설치될 리눅스의 환경과 용도에 따라 다양한 설치 옵션을 지정할 수 있다. 결과로 'Makefile' 이라는 파일이 만들어진다.

 make(컴파일)

 실제 소스 파일을 컴파일하는 과정이다. configure에서 만들어진 Makefile을 이용해서 컴파일한다.

 make install(설치)

 컴파일이 완료된 실행 파일이나 관련 파일들을 해당 디렉토리에 설치한다.

1-3. Apache 소스파일인 httpd-2.4.7.tar.bz2 를 다운로드한다.

1-4. Apache 소스 파일을 컴파일할 때 필수로 사용하는 Apache Portable Runtime 소스 파일인 apr-1.5.0.tar.bz2 apr-util-1.5.3.tar.bz2 를 다운로드 한다.

1-5. tar 명령어를 통해 3개의 파일(httpd-2.4.7.tar.bz2, apr-1.5.0.tar.bz2, apr-util-1.5.3.tar.bz2)을 압축해제 후 mv 명령어를 이용해 디렉토리 이동 및 이름을 변경한다.

1-6. 이제 아파치 소스 파일을 컴파일 하기위한 준비가 다되었으니 본격적으로 아파치 소스컴파일을 시작한다. 컴퓨터의 성능에 따라 수 분~수십 분이 걸릴 수 있다.

※ configure 명령어의 옵션 중 '--prefix='은 프로그램을 설치할 디렉토리를 지정하는 것이다.

1-7. 컴파일과 설치가 끝나면 vi 또는 gedit 로 /etc/ld.so.conf 파일을 열어서 /web/httpd2/lib /web/httpd2/modules 를 추가하고 저장한다.

1-8. 추가한 내용을 적용하려면 'ldconfig' 명령어를 입력한다.

1-9. 'cp /web/httpd2/bin/apachectl /etc/init.d/httpd2' 를 입력해 아파치 시작 스크립트 파일을 /etc/init.d/ 디렉토리에 복사한다.

 1-10. vi 에디터로 /etc/init.d/httpd2 파일을 열어서 맨 아래 부분에 다음과 같이 추가한다. 띄어쓰기에 주의한다.

1-11. 컴퓨터가 부팅될 때 자동으로 시작되도록 다음 명령을 입력한다.

chkconfig httpd2 on        -> 컴퓨터가 부팅될 때 자동으로 시작하도록 설정

systemctl restart httpd2   -> 아파치 웹 서버 가동

systemctl status httpd2   -> 아파치 프로세스 가동 확인

1-12. 웹 서버 작동 테스트를 위해 웹 브라우저에서 http:// 또는 http://127.0.0.1로 접속해서 다음과 같이 나타나면 웹 서버는 정상적으로 작동하는 것이다.

컴파일한 아파치의 홈 디렉토리는 /web/httpd2/htdocs/ 이고, 지금 열린 파일은index.html이다.

 

[step 2] MariaDB는 이미 컴파일된 바이너리 코드를 다운로드해서 설치해보자.

2-1. 'groupadd mysql' 을 입력해 MariaDB를 사용할 그룹인 mysql을 만들고 'adduser -M -d /web/mariadb -g mysql -s /bin/false -r mysql' 을 입력해 mysql 이라는 사용자를 생성하자.

 adduser 옵션 정리

-M

 생성하는 사용자의 홈디렉토리를 만들지 않는다.

-d

 사용자 홈디렉토리를 지정

-g

 생성할 사용자가 속할 그룹을 지정한다.

-s

 생성할 사용자가 사용할 기본 shell 을 지정한다.

-r

 시스템계정 자격으로 생성, 계정 id가 1000번 미만으로 할당되며, 특별히 지정하지 않는이상 홈폴더도 생성하지 않는다.

mysql 사용자를 -r 옵션을 통해 시스템계정으로 생성하는 이유는 단순히 mariaDB 데몬을 실행하기 위한 유저일뿐 root 나 일반 사용자처럼 쉘로그인을 위한 유저는 아니기 때문이다. 그렇기에 옵션 중에 사용자 생성시 기본 shell을 지정하는 부분에  -s /bin/false 과 같이 서버의 보안강화 측면에서 외부에서 mysql 유저로 쉘로그인을 못하게 막아두었다.

-s /bin/false : 유저의 로그인쉘을 사용할 수 없게 하는 것

2-2. '/web/mariadb/scripts/mysql_install_db --user=mysql --basedir=/web/mariadb --datadir=/web/mariadb/data' 입력해 MariaDB를 설치한다.

2-3. 'cp -a /web/mariadb/support-files/my-huge.cnf /etc/my.cnf' 을 입력해 설정 파일을 복사한다.

2-4. vi 에디터로 /etc/my.cnf 파일을 열고 [mysqld] 부분에 다음과 같이 추가하고 저장한다.

2-5. 실행 스크립트를 복사하고 서비스를 실행한다.

2-6. MariaDB의 관리자 root의 비밀번호를 지정

Enter password: 에서는 그냥 [엔터]를 누르고 [New password]와 [Confirm new password]는 새로운 비밀번호를 지정한다.

2-7. MariaDB가 정상 작동하는지 확인한다. 먼저 'PATH=$PATH:/web/mariadb/bin' 을 입력해 mysql 실행 디렉토리를 PATH에 추가한다. 그리고 'mysql -u root -p' 를 입력해 MariaDB 서버에 접속한다. 접속 후 show databases; 명령어를 통해 데이터베이스를 조회한다.

※ /etc/bashrc 파일의 맨 아래에 'PATH=$PATH:/web/mariadb/bin' 을 추가하면 다음부터는 'mysql' 명령어만 입력해도 MariaDB 서버에 접속 할 수 있다.

[step 3] PHP 모듈을 컴파일해서 설치하자.

3-1. PHP 5.5.6 소스파일(php-5.5.6.tar.bz2) 를 다운로드 한다.

3-2. 다음 명령을 차례로 입력해 소스 파일을 컴파일 한다.

 --with-mysql=/web/mariadb

 MariaDB가 설치된 경로 지정

 --with-apxs2=/web/httpd2/bin/apxs

 아파치의 apxs 디렉토리 지정

 --with-mysqli=/web/mariadb/bin/mysql_config

 MariaDB 설정 파일 지정

3-3. DSO(Dynamic Shared Object) 방식의 컴파일이므로, 'ls -l /web/httpd2/modules/libphp5.so'를 입력해 /web/httpd2/modules/libphp5.so 파일을 확인한다. 참고로 DSO 방식으로 컴파일하면 libphp5.so 파일 1개만 생성된다.

※ DSO 방식의 컴파일을 동적 공유 객체 방식의 컴파일이라고 부르기도 하는데, 이는 웹 서버인 httpd에 기능이 포함되는 것이 아니라, 외부에 기능을 두고 필요할 때마다 동적으로 필요한 기능을 호출해서 사용하는 것이다.

3-4. 웹 서버 가동 시 필요한 PHP 모듈(libphp5.so) 파일을 등록한다. vi 에디터로 /web/httpd2/conf/httpd.conf 파일을 열어 다음 내용을 확인하고 없으면 추가한다.

149행 쯤 확인 : LoadModules php5_module modules/libphp5.so

378행 쯤 추가 : AddType application/x-httpd-php .php .php3 .php4 .php5 .htm .html .inc

3-5. 다음 명령을 입력해 PHP 설정파일인 php.ini-production /etc/php.ini로 복사한다.

3-6. 다음 명령을 차례로 입력해 웹 서버 가동을 멈추었다가 다시 가동한다. 주의할 점은 restart는 잘 작동하지 않는 경우도 있으니, 이번에는 꼭 stop/start로 작동시킨다. 그리고 웹서버가 정상적으로 가동하는지 systemctl status httpd2 명령어로 확인한다.

3-7. 'firewall-cmd --permanent --add-service=http' 'firewall --reload' 명령어를 통해 방화벽에서 아파치 서비스를 허용해준다. (X윈도우 환경에서는 firewall-config 명령어로 방화벽 설정을 한다.)

3-8. vi 에디터로 /web/httpd2/htdocs/phpinfo.php 파일을 생성한 후 '<?php phpinfo(); ?>'를 입력하고 저장한다.

3-9. 어느 컴퓨터에서든지 웹 브라우저로 http://서버IP주소/phpinfo.php로 접속해서 다음 그림과 같이 웹 페이지가 열리면 성공이다. 

 

※ 소스컴파일을 통해 APM을 설치할 때 주의할 점은 최신 버전의 소스 파일을 사용한다고 꼭 좋은 것은 아니라는 점이다. 각기 다른 프로그램 세 개를 연동해 운영하는 것이므로, 각 프로그램끼리 잘 어울리는 버전이 별도로 있다는 사실을 기억하자.