Apache+PHP+MySQL 사용을 위한 설치

글 : 정용석/ freemir2k@intizen.com

 

 

    <목 차>

    0. 들어가기에 앞서
    1. APM 세트를 사용하는 목적은 무엇입니까?
    2. APM은 어떻게 구합니까?
    3. 실전! APM 설치하기

 

0. 들어가기에 앞서

    가정의 네트워크화로 인해 개인 사용자들도 자신의 홈페이지를 운영하고자 하는 욕구가 증가되고 있습니다. 물론 사용자들에게 일정량의 공간을 할당하여 개인 홈페이지 운영 서비스를 제공하는 업체가 부지기수로 늘어가고 있는 것이 요즘의 세태입니다. 그러나 지금 이 책을 보고 있는 독자들의 소망은 아마도 자신의 홈페이지의 사용가능 공간의 제한이 없기를 바라거나, 자신이 공부한 Perl이나 PHP를 이용하여 자신과 접속자 간의 상호 개방적인 대화형 홈페이지를 구축하고 싶거나, 그것도 아니라면 자신의 도메인으로 자신이 직접 웹 서버를 구축하고 싶은 생각을 가지고 있을 것이라 생각해봅니다.

    그렇다면 이 글에서는 Apache와 PHP, MySQL을 사용하여 자신의 컴퓨터에 데이터베이스와 스크립트 언어를 사용할 수 있는 자신이 운영하는 웹 서버를 구축해 보도록 하겠습니다. 이미 여러 매체를 통해 설치방법이 많이 알려져 있지만, 새로이 시도하시는 분들과 이제 막 공부를 시작하신 분들, 그리고 설치는 했지만 아직 잘 모르겠다고 느끼시는 분들을 위해 비록 짧은 지식이지만 설치에 필요한 것들을 상세히 설명하도록 노력하겠습니다. 그러면 이제 저를 따라서 APM이라 일컬어지는 Apache+PHP+MySQL의 세계로 떠나보도록 하겠습니다.

 

1. APM 세트를 사용하는 목적은 무엇입니까?

    우선 APM 세트를 사용하는 이유에 대해 알아보도록 하겠습니다. 그냥 막연히 남이 사용하니까 쓴다는 생각은 아니라고 생각해봅니다. 자신이 사용하는데 어떤 이득이 있으니까 사용하는 것입니다. 하나씩 살펴보도록 하겠습니다. 우선 apache에 대해서는 많이 들어보셨으리라 생각합니다. 현재 인터넷에서 운영되는 웹 서버들 가운데 가장 많은 인지도를 확보하고 있는 웹 서버 프로그램입니다. Apache는 기존 NCSA httpd 1.3에 패치파일을 제공했던 일련의 사람들이 모여 구성한 apache 그룹에서 "A PAtCH server"의 조합으로 apache라는 이름을 생각해 내었다고 합니다. 무료로 배포되며 리눅스는 물론 UNIX, MS 윈도우즈용으로도 제공되고 있습니다. 현재 알파버전(개발버전)은 2.0a8 까지 제공되며, 안정버전은 1.3.14입니다. 개인적인 견해로 안정버전을 사용하는 것이 바람직하다고 생각합니다.

    이번엔 PHP에 대해서 알아보도록 하겠습니다. 웹 상에서 사용할 수 있는 스크립트 언어에는 여러 가지가 있습니다. Perl이나 PHP, 근래에는 python에 대한 관심도 높아지고 있습니다. MS社에서 개발한 ASP도 있습니다. 그러나 우리가 PHP를 사용하려는 이유는 무엇일까요? 명확하게 이야기할 수는 없지만 아마도 다음과 같은 이유 때문일 것입니다. 우선 다양한 운용체제를 지원하고, 다양한 대중적인 데이터베이스, 웹서버에서 작동 가능하며, PHP가 다른 스크립트 언어와 비교하였을 때 데이터베이스 연동속도면에서 빠른 점을 들 수 있겠습니다. 스크립트 언어에는 다양한 종류가 있으니 만약 PHP가 마음에 들지 않는다면 다른 좋은 언어를 선택하는 것은 여러분의 몫이라 하겠습니다.

    마지막으로 MySQL에 대해 알아보도록 하겠습니다. 우선 MySQL은 free라는 강점이 있습니다. 개인 사용자들이 사용하는데 있어서는 무료로 이용할 수 있다는 것이 큰 이득일 것입니다. 여기에다 소스코드까지 제공되니 금상첨화가 아닐 수 없겠지요? 단 상업적인 판매에 이용되려면 상업용 라이센스를 구입해야 합니다. MySQL은 처음 기획될 때부터 현존하는 모든 데이터베이스보다 빠르고 다양한 기능을 구현을 목적으로 만들어졌습니다. MySQL은 관계형 데이터베이스(RDBMS - relational database management system)이며, 인터넷에서 데이터베이스를 사용하는데 있어 연결, 속도, 보안 측면에서 높은 만족을 보이고 있습니다. 대략적으로 우리가 APM을 사용할 때 취할 수 있는 이득에 대해 알아보았습니다. 그러면 이제 APM을 설치하기 위한 파일을 구하는 방법과 설치하는 방법, 설치 후에 제대로 설치가 되었는지 확인하는 방법에 대해 알아보도록 하겠습니다.

 

2. APM은 어떻게 구합니까?

    가. Apache를 구해봅시다.

    Apache의 공식 홈페이지의 주소는 http://apache.org/입니다. 최신 소식을 접하려면 이곳에 가면 됩니다.

    그러나, 만약 영어에 자신이 없다면 http://apache.or.kr에 가보시길 제안합니다.

    물론 이 홈페이지도 메뉴만 한글이지 내용은 영어로 된 공식 홈페이지에 연결되어 있으니 제가 추천하는 곳인 '한국 아파치 사용자 모임(The Apache Korea Group)'으로 가보길 권장합니다. 주소는 http://www.apache.kr.net/입니다.

    우선 아파치의 최신 안정버전을 구하기 위해 아파치 공식 홈페이지로 가보겠습니다. 좌측에 있는 메뉴 중에서 'Apache Server'를 선택합니다. 다음, 메뉴에서 'Download'를 선택하여 apache_1.3.14.tar.gz 파일을 받습니다.

 

    나. PHP를 구해봅시다.

    우선 PHP의 공식 홈페이지인 http://www.php.net/에 가봅시다.

    이곳에서 좌측에 있는 'downloads'를 선택합니다. 여기서 PHP의 최신 버전을 받습니다. 현재 최신버전은 PHP 4.0.3 patch level 1입니다. PHP 4.0 Zend의 홈페이지도 열었는데 주소는 http://zend.org/입니다. 이곳에서 받으셔도 무방합니다.

 

    다. MySQL을 구해봅시다.

    마지막으로 MySQL을 구해보도록 하겠습니다. MySQL의 공식 홈페이지 주소는 http://www.mysql.com/입니다.

    이곳 상단 우측에 있는 'DOWNLOADS' 메뉴를 선택하고 세부 항목 중에서 안정버전인 'stable realese'에서 마지막 안정버전인 mysql-3.22-32을 받습니다.
    이제 설치를 위한 준비가 끝났습니다. 하나씩 차근차근 설치해 보도록 하겠습니다.

 

3. 실전! APM 설치하기

    가. MySQL 설치하기

    가장 먼저 설치해야 하는 것은 MySQL입니다. 이유는 PHP를 인스톨 할 때 MySQL을 사용한다는 옵션을 적어주어야 하기 때문입니다. 이때 MySQL이 설치되어 있어야 합니다. 설치를 시작해 보겠습니다.

    (1) MySQL이 설치되어 있는지 확인해 봅니다.
     

    [root@jinnee/churl]#rpm -qa | grep mysql
    [root@jinnee/churl]#

     

    필자의 리눅스 머신에는 설치되어 있지 않아서 나타나지 않습니다. 만약 결과가 나타나면
    [rpm -e 제거할 파일명] 명령을 사용하여 제거하면 됩니다. 의존성 문제로 인해 제거되지
    않는다면 [--nodeps] 옵션을 추가하여 제거하며 됩니다.

    (2) 소스파일의 압축을 푼 뒤 소스 디렉토리를 옮겨줍니다.
     

    [root@jinnee/churl]#tar xvfz mysql-3.22.32.tar.gz
    mysql-3.22.32/
    mysql-3.22.32/Makefile.in

    mysql-3.22.32/support-files/mysql.server.sh
    mysql-3.22.32/support-files/binary-configure.sh
    [root@jinnee/churl]#mv./mysql-3.22.32/usr/local/mysql

     

    (3) 소스 디렉토리로 이동하여 환경설정을 해줍니다. 

    아래서 보이는 '--prefix' 옵션은 프로그램이 설치될 위치를 지정해 주는 것이고, '--with-charset'은 사용할 언어를 설정하는 것입니다.
     

    [root@jinnee/churl]#cd/usr/local/mysql
    [root@jinnee mysql]#./configure --prefix=/usr/local/mysql --with-chaset=euc_kr
    creating cache./config.cache
    checking host system type...i586-pc-linux-gnu
                         .
                         .
                         .
    Remember to check the platform specific part in the reference manual for hints about installing on your platform. See the Docs directory.

    Thank you for choosing MySQL!

    [root@jinnee mysql]#

     

    (4) 소스를 컴파일합니다.
     

    [root@jinnee mysql]#make
    cd client;make link_sources
    make[1]:Entering directory /usr/local/mysql/client'
    set -x;\
                  .
                  .
                  .
    make[1]:Leaving directory /usr/local/mysql'
    [root@jinnee mysql]#make install

 

    (5) 컴파일을 마친 파일을 설치해줍니다.
     

    [root@jinnee mysql]#make install
    Making install in include
    make[1]:Entering directory /usr/local/mysql/include'
                  .
                  .
                  .
    make[2]:Leaving directory /usr/local/mysql'
    make[3]:Leaving directory /usr/local/mysql'
    [root@jinnee mysql]#

     

    (6) MySQL을 구동하기 위해 데이터베이스를 만듭니다.
     

    [root@jinnee mysql]#./scripts/mysql_install_db
    Creating db table
    Creating host table

    The latest information about MySQL is available on the web at http://www.mysql.com
    Support MySQL by buying support/licenses at
    http://www.tcx.se/license.htmy.

    [root@jinnee mysql]#

     

    (7) MySQL의 데몬(deamon)을 실행시킵니다.
     

    [root@jinnee mysql]#./bin/safe_mysqld &
    [1] 15670
    Starting mysqld deamon with databases from/usr/local/mysql/var
    [root@jinnee mysql]#

     

    (8) MySQL의 데몬(deamon)이 실행 중인지 확인해봅니다.
     

    [root@jinnee mysql]#ps ax
    PID TTY  STAT  TIME COMMAND
      1?      S     0:05 init
      2?      SW  0:00 [kflushd]

    15670 pts/0  S    0:00 sh./bin/safe_mysqld
    15682 pts/0  SN  0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/
    15684 pts/0  SN  0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/
    15685 pts/0  SN  0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/
    15686 pts/0  R    0:00 ps ax


    위에서 볼 수 있듯이 정상적으로 작동하고 있습니다.

    (9) MySQL의 root(※MySQL의 root입니다. 시스템의 root가 아닙니다.)의 패스워드를 설정해줍니다.
     

    [root@jinnee mysql]#./bin/mysqladmin -u root password '원하는 패스워드'

 

    (10) 정확히 설치되었는지 확인을 해봅시다.
     

    [root@jinnee mysql]#./bin/mysql -u root -p
    Enter password: ¡ 여기에 root 패스워드를 넣어줍니다.
    Welcome to the MySQL monitor. Commands end with; or\g.
    Your MySQL connection id is 2 to server version:3.22.32
    Type 'help' for help.

    mysql> show database;    데이터베이스를 보여 달라는 명령입니다.
    +-------+
    |Database|
    +-------+
    |mysql     |
    |test        |
    +-------+
    2 rows in set (0.01 sec)
    mysql>\q     ¡ 종료 명령입니다.
    Bye
        [root@jinnee mysql]#


    이제 MySQL의 설치는 끝났습니다. 만약 시스템이 처음 시작될 때부터 MySQL이 실행되기를 원하시면 /etc/rc.local 파일의 맨 마지막 줄에 아래와 같은 명령줄을 추가시켜 주시면 됩니다.
    /usr/local/mysql/bin/safe_mysqld &

 

    나. Apache와 PHP 설치하기

    (1) Apache와 PHP가 설치되어 있는지 확인해 봅니다.
     

    [root@jinnee/churl]#rpm -qa | grep apache
    [root@jinnee/churl]#rpm -qa | grep php


    만약 설치되어 있다면 MySQL을 설치할 때처럼 하나씩 제거해줍니다.

    (2) Apache와 PHP 파일의 압축을 풀고 디렉토리를 이동시켜 줍니다.
     

    [root@jinnee/churl]#tar xvfz php-4.0.3pl1.tar.gz
    php-4.0.3pl1/
    php-4.0.3pl1/build/

    php-4.0.3pl1/install-sh
    php-4.0.3pl1/aclocal.m4
    [root@jinnee/churl]#tar xvfz apache_1.3.14.tar.gz
    apache_1.3.14/
    apache_1.3.14/src/

    apache_1.3.14/htdocs/index.html.se
    apache_1.3.14/htdocs/index.html.tw.Big5
    [root@jinnee/churl]#mv./php-4.0.3pl1/usr/local/php
    [root@jinnee/churl]#mv./apache_1.3.14.tar.gz/usr/local/apache

     

    (3) Apache 디렉토리로 이동하여 환경설정을 해줍니다.
     

    [root@jinnee/churl]#cd/usr/local/apache
    [root@jinnee apache]#./configure --prefix=/usr/local/apache
    Configuring for Apache, Version 1.3.14
    + using installation path layout: Apache (config.layout)
               .
               .
               .
    Creating Makefile in src/lib/expat-lite
    Creating Makefile in src/modules/standard
    [root@jinnee apache]#

     

    (4) PHP 디렉토리로 이동하여 Apache와 MySQL을 사용한다는 옵션을 주고 환경설정을
         해줍니다.
     

    [root@jinnee apache]#cd../php
    [root@jinnee php]#./configure --with-apache=/usr/local/apache --with-mysql=/usr/local/mysql
    mysql=/usr/local/mysql
    creating cache./config.cache
    checking for  BSD compatible install.../usr/bin/install-c
                 .
                 .
                 .
    |the installation process at this point.             |
    +----------------------------------+
    Thank you for using PHP.
    [root@jinnee php]#

     

    (5) 소스를 컴파일 해줍니다.
     

    [root@jinnee php]#make
    Making alll in Zend
    make[1]:Entering directory /usr/local/php/Zend'
               .
               .
               .
    make[1]:Leaving directory /usr/local/php'
    Making all in pear
    make[1]:Entering directory /usr/local/php/pear'
    [root@jinnee php]#

     

    (6) 컴파일된 파일을 설치해줍니다.
     

    [root@jinnee php]#make install
    Making install in Zend
    make[1]:Entering directory /usr/local/php/Zend'
           .
           .
           .
    $prog;\
    done
    [root@jinnee php]#

     

    (7) php.ini 파일을 만들어 줍니다. 이 파일을 PHP의 환경설정 파일입니다.
     

    [root@jinnee php]#cp php.ini-dist /usr/local/lib/php.ini

     

    (8) Apache 디렉토리로 이동하여 PHP를 apache 모듈로 인식하기 위한 환경설정을 해줍니다.
         여기서 주의할 것은 옵션의 맨 마지막에 있는 libphp4.a 파일이 없다고 해서 파일이름을
         임의로 바꾸면 안된다는 것입니다. [--activate-module]은 apache 서버에서 읽어들일
         모듈에 대한 설정입니다.
     

    [root@jinnee php]# cd ../apache
    [root@jinnee apache]# ./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a
    Configuring for Apache, Version 1.3.14
    + using installation path layout: Apache (config.layout)

    Creating Makefile in src/modules/standard
    Creating Makefile in src/modules/php4
    [root@jinnee apache]#

     

    (9) 소스 파일을 컴파일 해줍니다.
     

    [root@jinnee apache]# make
    ===> src
    make[1]: Entering directory `/usr/local/apache'

    make[1]: Leaving directory `/usr/local/apache'
    <=== src
    [root@jinnee apache]#

     

    (10) 컴파일된 파일을 설치합니다.
     

    [root@jinnee apache]# make install
    make[1]: Entering directory `/usr/local/apache'
    ===> [mktree: Creating Apache installation tree]

    | Thanks for using Apache. The Apache Group |
    |                              http://www.apache.org/ |
    +-----------------------------------+
    [root@jinnee apache]#

     

    (11) 설치는 완료되었습니다. PHP를 사용하기 위해 설정을 고쳐보도록 하겠습니다.
     

    [root@jinnee apache]# cd conf/
    [root@jinnee conf]# vi httpd.conf

     

    아래의 줄을 찾아 밑줄을 그은 부분을 추가해줍니다. 추가해주는 이유는 PHP를 사용해 보신 분들은 아시듯이 HTML 문서에 PHP를 사용하게 되는데, HTML 문서 안에서도 PHP가 실행되도록 설정해주는 것입니다.
     

    # And for PHP 4.x, use:
    #
    AddType application/x-httpd-php
    .php .php3 .ph .htm .html .inc .cfg
    AddType application/x-httpd-php-source .phps


    ※ 기본 HTML 문서 디렉토리의 경로를 바꾸려면 'DocumentRoot'의 내용을 수정해주면 가능합니다.

    (12) Apache 데몬을 실행해 보도록 하겠습니다. 실행을 멈추려면 'start' 대신 'stop'을 적어
          주면 됩니다.
     

    [root@jinnee apache]# ./bin/apachectl start
    ./bin/apachectl start: httpd started

     

    정확하게 실행되었는지 확인해 봅니다. 아래와 같이 적재된 모듈이 출력되면 아무런 문제없이 실행된 것입니다. 다른 방법으로는 옵션을 '-t'로 주어서 'Syntax OK'가 나오는지 확인하는 것도 있습니다.
     

    [root@jinnee conf]# /usr/local/apache/bin/httpd -l
    Compiled-in modules:
    http_core.c

    mod_php4.c
    suexec: disabled; invalid wrapper /usr/local/apache/bin/suexec
    [root@jinnee conf]#

 

    (13) 마지막으로 PHP가 정확하게 작동하는지 확인해보도록 하겠습니다.

    (가) HTML 문서 기본 디렉토리로 이동합니다. httpd.conf 파일에서 'Document Root' 부분을
          수정하지 않았다면 '/usr/local/apache/htdocs/'입니다.
     

    [root@jinnee conf]# cd ../htdocs/

     

    (나) 아래와 같이 index.php 파일과 index.html 파일을 만들어 봅니다.
     

    [root@jinnee htdocs]# cat > index.php
    <?
    phpinfo();
    ?>
    (여기서 Ctrl+D를 눌러줍니다.)
    [root@jinnee htdocs]# cat > index.html
    <html>
    <?
    phpinfo();
    ?>
    </html>
    (여기서 Ctrl+D를 눌러줍니다.)
    [root@jinnee htdocs]#

     

    (다) 웹 브라우저를 실행시킨 후 자신의 컴퓨터의 ip address를 적어서 확인해보거나, 아래의 방법으로 PHP 내용이 출력되는지 확인해 봅니다.

    위와 같이 화면이 출력된다면 모든 설치를 정상적으로 마친 것입니다.

    이상으로 APM 즉, Apache+PHP+MySQL의 설치에 대해 알아보았습니다. 최대한 쉽게 설명하려고 노력하였으나 받아들이는 독자의 입장을 어떠할지 모르는 것이 안타깝습니다. 혹 설치 중에 문제가 생기거나, 의문이 생기는 사항이 있으면 필자의 e-mail 주소 'freemir2k@intizen.com'으로 연락해주시면 아는 한도 내에서 최대한 성심 성의껏 답변해 드릴 것을 약속드립니다.




▲ top

home으로...