– 작성자 : 김용복 (ruo91@naver.com) – 2009-09-09 PM 8:11 ( 최근 수정 2009-10-24 PM 9:20 )
– 원제목 : LAMP 설치 (Linux Apache, MySQL, PHP 설치 )
– 환 경 : Linux  ( Tested CentOS-5.3, Ubuntu-8.04-LTS )
– 버   전 : Apache-2.2.14, MySQL-5.1.40, PHP-5.2.11

리눅스에서 Apache, MySQL, PHP 설치 방법입니다.
본 글은 소스 설치 기준으로 하며 Build 디렉토리는 “/usr/local/src/” 으로 하고
기본 Install 디렉토리는 “/usr/local/” 로 합니다.

0. Build에 필요한 패키지 설치
레드헷 계열 ( RedHat, CentOS, Fedora )

[root@ruo91 ~]# yum install -y gcc gcc-c++ ncurses-devel libtool

데비안 계열 ( Debian, Ubuntu )

[root@ruo91 ~]# sudo apt-get install gcc build-essential libncurses5-dev libtool

1. LAMP에 필요한 라이브러리 설치

– zlib 설치 ( 압축 관련 라이브러리 )
( http://www.zlib.net )

[root@ruo91 ~]# mkdir /usr/local/src
[root@ruo91 ~]# cd /usr/local/src
[root@ruo91 ~]# wget http://www.zlib.net/zlib-1.2.3.tar.gz
[root@ruo91 ~]# tar xzvf zlib-1.2.3.tar.gz
[root@ruo91 ~]# cd zlib-1.2.3
[root@ruo91 ~]# ./configure
[root@ruo91 ~]# make && make install && cd .. && rm -rf zlib*

– libpng 설치 ( png 포멧 지원 라이브러리 )
( ftp://ftp.simplesystems.org/pub/libpng/png/src )

[root@ruo91 ~]# wget ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.2.40.tar.gz
[root@ruo91 ~]# tar xzvf libpng-1.2.40.tar.gz
[root@ruo91 ~]# cd libpng-1.2.40
[root@ruo91 ~]# make -f scripts/makefile.linux ZLIBLIB=../../lib ZLIBINC=../../include
[root@ruo91 ~]# make -f scripts/makefile.linux install && cd .. && rm -rf libpng*

– jpeg 설치 ( jpeg 포멧 지원 라이브러리 )
( http://www.ijg.org/files )

[root@ruo91 ~]# wget http://www.ijg.org/files/jpegsrc.v7.tar.gz
[root@ruo91 ~]# tar xzvf jpegsrc.v7.tar.gz
[root@ruo91 ~]# cd jpeg-7
[root@ruo91 ~]# ./configure
[root@ruo91 ~]# make && make install && cd .. && rm -rf jpeg*

– freetype2 설치 ( 글자 그릴때 사용되는 라이브러리 )
( http://ftp.twaren.net/Unix/NonGNU/freetype )

[root@ruo91 ~]# wget http://ftp.twaren.net/Unix/NonGNU/freetype/freetype-2.3.9.tar.gz
[root@ruo91 ~]# tar xzvf freetype-2.3.9.tar.gz
[root@ruo91 ~]# cd freetype-2.3.9/builds/unix
[root@ruo91 ~]# ./configure
[root@ruo91 ~]# cd ../../ && make && make install && cd .. && rm -rf freetype*

– libiconv 설치 ( 문자 변환 지원 라이브러리 )
( http://ftp.gnu.org/pub/gnu/libiconv )

[root@ruo91 ~]# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.tar.gz
[root@ruo91 ~]# tar xzvf libiconv-1.13.tar.gz
[root@ruo91 ~]# cd libiconv-1.13
[root@ruo91 ~]# ./configure
[root@ruo91 ~]# make && make install && cd .. && rm -rf libiconv*

– libxml2 설치 ( XML 지원 라이브러리 )
( ftp://xmlsoft.org/libxml2 )

[root@ruo91 ~]# wget ftp://xmlsoft.org/libxml2/libxml2-2.7.3.tar.gz
[root@ruo91 ~]# tar xzvf libxml2-2.7.3.tar.gz
[root@ruo91 ~]# cd libxml2-2.7.3
[root@ruo91 ~]# ./configure \
–with-html –with-http –with-pattern –with-push –with-reader \
–with-regexps –with-threads –with-writer  –with-modules \
–with-zlib=/usr/local/include –with-iconv=/usr/local/include
[root@ruo91 ~]# make && make install && cd .. && rm -rf libxml*

– expat 설치 ( fontconfig 의존성 라이브러리 )
( http://sourceforge.net/projects/expat )

[root@ruo91 ~]# wget http://downloads.sourceforge.net/project/expat/expat/2.0.1/expat-2.0.1.tar.gz
[root@ruo91 ~]# tar xzvf expat-2.0.1.tar.gz
[root@ruo91 ~]# cd expat-2.0.1
[root@ruo91 ~]# ./configure
[root@ruo91 ~]# make && make install && cd .. && rm -rf expat*

– fontconfig 설치 ( XML 폰트 패턴중 알맞는 폰트를 사용자에게 보여주는.. )
( http://fontconfig.org/release )

[root@ruo91 ~]# wget http://fontconfig.org/release/fontconfig-2.7.3.tar.gz
[root@ruo91 ~]# tar xzvf fontconfig-2.7.3.tar.gz
[root@ruo91 ~]# cd fontconfig-2.7.3
[root@ruo91 ~]# ./configure –with-expat=/usr/local/include
[root@ruo91 ~]# make && make install && cd .. && rm -rf fontconfig*

– gd 설치 ( 그래픽 관련 라이브러리 )
( http://www.libgd.org/Downloads )

[root@ruo91 ~]# wget http://www.libgd.org/releases/gd-2.0.35.tar.gz
[root@ruo91 ~]# tar xzvf gd-2.0.35.tar.gz
[root@ruo91 ~]# cd gd-2.0.35
[root@ruo91 ~]# automake && autoconf
[root@ruo91 ~]# ./configure \
–with-png=/usr/local/include \
–with-jpeg=/usr/local/include \
–with-freetype=/usr/local/include \
–with-fontconfig=/usr/local/include \
–with-libiconv-prefix=/usr/local/include
[root@ruo91 ~]# make && make install && cd .. && rm -rf gd*

– Bz2 설치 ( Bzip2 압축 관련 라이브러리 )
( http://www.bzip.org/downloads.html )

[root@ruo91 ~]# wget http://www.bzip.org/1.0.5/bzip2-1.0.5.tar.gz
[root@ruo91 ~]# tar xzvf bzip2-1.0.5.tar.gz
[root@ruo91 ~]# cd bzip2-1.0.5
[root@ruo91 ~]# make && make install && cd .. && rm -rf bzip*

2. Apache 설치 ( http://mirror.apache-kr.org/httpd )

[root@ruo91 ~]# cd /usr/local/src
[root@ruo91 ~]# wget http://mirror.apache-kr.org/httpd/httpd-2.2.14.tar.gz
[root@ruo91 ~]# tar xzvf httpd-2.2.14.tar.gz
[root@ruo91 ~]# cd httpd-2.2.14
[root@ruo91 ~]# ./configure –prefix=/usr/local/apache2 \
–enable-mods-shared=most –enable-so –with-mpm=prefork –with-z=/usr/local/include
[root@ruo91 ~]# make && make install && cd ..

3. MySQL 설치 ( ftp://ftp.iij.ad.jp/pub/db/mysql/Downloads/ )

[root@ruo91 ~]# wget ftp://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-5.1/mysql-5.1.40.tar.gz
[root@ruo91 ~]# tar xzvf mysql-5.1.40.tar.gz
[root@ruo91 ~]# cd mysql-5.1.40
[root@ruo91 ~]# ./configure –prefix=/usr/local/mysql \
–with-charset=euckr –with-tcp-port=3306 –with-mysqld-user=mysql
[root@ruo91 ~]# make && make install && cd ..

4. PHP 설치 ( http://kr.php.net/downloads.php )

[root@ruo91 ~]# wget http://kr.php.net/distributions/php-5.2.11.tar.gz
[root@ruo91 ~]# tar xzvf php-5.2.11.tar.gz
[root@ruo91 ~]# cd php-5.2.11
[root@ruo91 ~]# cat > install.sh
#!/bin/sh
./configure –prefix=/usr/local/php5 \
–with-gd=/usr/local \
–with-zlib-dir=/usr/local/include \
–with-bz2=/usr/local/include \
–with-png-dir=/usr/local/include \
–with-jpeg-dir=/usr/local/include \
–with-iconv-dir=/use/local/include \
–with-libxml-dir=/usr/local/include \
–with-freetype-dir=/usr/local/include \
–with-libexpat-dir=/usr/local/include \
–with-apxs2=/usr/local/apache2/bin/apxs \
–with-exec-dir=/usr/local/apache2/bin \
–with-config-file-path=/usr/local/apache2/conf \
–with-mysql=/usr/local/mysql \
–enable-zip –enable-sockets –enable-gd-native-ttf \
–enable-zend-multibyte
[root@ruo91 ~]# chmod +x install.sh
[root@ruo91 ~]# ./install.sh
[root@ruo91 ~]# make && make install
[root@ruo91 ~]# cp php.ini-dist /usr/local/apache2/conf/php.ini
[root@ruo91 ~]# cd .. && rm -rf *.tar.gz

5. 설정

– MySQL 설정

MySQL 를 실행 할 계정 생성

[root@ruo91 ~]# groupadd mysql

[root@ruo91 ~]# useradd -g mysql -s /bin/false mysql
[root@ruo91 ~]# mkdir /usr/local/mysql/var
[root@ruo91 ~]# chown -R mysql.mysql /usr/local/mysql/var

MySQL DB 설치

[root@ruo91 ~]# /usr/local/mysql/bin/mysql_install_db –user=mysql

MySQL 서비스 관련 심볼링크 생성

[root@ruo91 ~]# ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql

[root@ruo91 ~]# ln -s /usr/local/mysql/bin/mysqladmin /usr/bin/mysqladmin

[root@ruo91 ~]# ln -s /usr/local/mysql/bin/mysqldump /usr/bin/mysqldump

[root@ruo91 ~]# ln -s /usr/local/mysql/bin/mysqlshow /usr/bin/mysqlshow


MySQL 설정 파일 복사

[root@ruo91 ~]# cd /usr/local/mysql/share/mysql
[root@ruo91 ~]# cp -p my-medium.cnf /etc/my.cnf

MySQL 실행 스크립트 복사

[root@ruo91 ~]# cd /usr/local/mysql/share/mysql
[root@ruo91 ~]# cp -p mysql.server /etc/rc.d/init.d/mysqld


MySQL 데몬 시작

[root@ruo91 ~]# /etc/rc.d/init.d/mysqld start
Starting MySQL..[  OK  ]

MySQL 루트 비밀번호 설정

[root@ruo91 ~]# mysqladmin -u root password ‘비밀번호’

MySQL 사용자 계정 추가

[root@ruo91 ~]# mysql -u root -p

mysql> GRANT ALL ON blog.* TO ‘사용자ID’@’localhost’ IDENTIFIED BY ‘비밀번호’ WITH GRANT OPTION;

MySQL 데이터베이스 생성

mysql> CREATE DATABASE blog;
mysql> flush privileges;
mysql> exit

– Apache 설정

[root@ruo91 ~]# vi /usr/local/apache2/conf/httpd.conf

httpd.conf 내용중 필요한 것들을 수정/추가

#
# 서버 디렉토리
ServerRoot “/usr/local/apache2”
#
# 서버 관리자의 이메일
ServerAdmin ruo91@naver.com
#
# 서버 이름을 지정
ServerName www.yongbok.net:80
#
# 웹서버로 사용할 포트
Listen 80
#
# 웹서버를 apache 라는 사용자와 그룹으로 실행
User apache
Group apache
#
# 기본 인덱스 파일 지정
<IfModule dir_module>
DirectoryIndex index.htm index.html index.php
</IfModule>
#
# PHP 를 사용하기 위한 옵션 추가
<IfModule mod_php3.c>
AddType application/x-httpd-php3 .php3 .htm .html
AddType application/x-httpd-php3-source .php3s
</IfModule>
<IfModule mod_php4.c>
AddType application/x-httpd-php .php .htm .html
AddType application/x-httpd-php-source .phps
</IfModule>
<IfModule mod_php5.c>
AddType application/x-httpd-php .php .htm .html
AddType application/x-httpd-php-source .phps
</IfModule>

아파치 시작

[root@ruo91 ~]# /usr/local/apache2/bin/apachectl start

아파치 데몬 확인

[root@ruo91 ~]# ps -aux | grep httpd
root     16315  0.0  0.8  20584  8652 ?        Ss   04:19   0:00 /usr/local/apache2/bin/httpd -k start
apache   16316  0.0  0.7  20584  7956 ?        S    04:19   0:00 /usr/local/apache2/bin/httpd -k start
apache   16317  0.0  0.7  20584  7956 ?        S    04:19   0:00 /usr/local/apache2/bin/httpd -k start
apache   16318  0.0  0.7  20584  7956 ?        S    04:19   0:00 /usr/local/apache2/bin/httpd -k start
apache   16319  0.0  0.7  20584  7956 ?        S    04:19   0:00 /usr/local/apache2/bin/httpd -k start
apache   16320  0.0  0.7  20584  7956 ?        S    04:19   0:00 /usr/local/apache2/bin/httpd -k start

PHP 작동 여부 확인

[root@ruo91 ~]# echo ‘<?php phpinfo(); ?>’ > /usr/local/apache2/htdocs/phpinfo.php

phpinfo