본문 바로가기

SYSTEM/LINUX

APM(apache, php, mysql)설치

apache 공식홈페이지 : http://www.apache.org
php 공식 홈페이지     : http://www.php.net
mysql 공식 홈페이지  : http://www.mysql.org 또는 http://www.mysql.com

기존 패키지 삭제
# rpm -qa httpd php mysql
# yum remove -y httpd php mysql

다운로드할 디렉토리 생성
# mkdir /usr/local/src/APM
이곳에 apache, php, mysql을 다운로드한다.

라이브러리, 컴파일러 확인
컴파일러
# rpm -qa gcc* cpp* compat-gcc* flex*
없다면 다운로드
# yum -y install gcc cpp gcc-c++ compat-gcc-**-g77 flex
라이브러리
설치할 라이브러리는 libpng, freetype, libjpeg, gd 4가지이다.
libpng : http://www.libpng.org - png 이미지형식 파일생성, 편집
freetype : http://www.freetype.org - 폰트엔진, 그래픽라이브러리나 폰트컨버젼툴에서 사용
jgep : http://www.ijg.org - jpeg 이미지파일을 다루는 함수가 정의된 라이브러리, libjpeg함수를 쓰게 
                                       해주는 간단한 클라이언트 프로그램이 있음.
gd : http://www.libgd.org - 동적이미지 생성 ANSI C라이브러리로서 png, jpeg, gif등의 포멧으로된 이미지를 생성할 수 있는 툴.

yum을 이용해 위 라이브러리의 devel패키지를 설치
# rpm -qa libjpeg* libpnp* freetype* gd*
# yum install libjpeg-devel libpng-devel freetype-devel gd-devel

본격적인 설치
============
설치 순서는 Mysql -> Apache -> Php순서로 설치.
설치 장소는 보통 /usr/local아래에 한다. 여기에서는 관리를 쉽게하기위해 /usr/local/server아래에 설치하도록 한다.

Mysql 설치
- 설치 이전에 mysql을 실행할 계정 생성
# useradd -M -s /bin/false mysql

./configure 실행
# ./configure \
> --prefix=/usr/local/server/mysql \            - /usr/local/server/mysql에 바이너리파일설치
> --with-charset=utf8 \                               - 기본문자셋을 utf8로 지정
> --with-extra-charset=all                            - 모든 캐릭터셋을 설치
                                                  더 많은 옵션을 보려면... ./configure --help

# make && make install

설치 확인
# ls -al /usr/local/server/mysql

환경파일 복사
시스템에 맞게 적절한 샘플파일 선택
my-huge.cnf : 메모리가 1G ~ 2G사이일 때 사용.
my-large.cnf : 메모리가 512M일 때 사용.
my-medium.cnf : 메모리가 64 ~ 256M일 때 사용.
my-small.cnf : 메모리가 64M보다 작을 때 사용.
위의 샘플파일은 다온로드한 소스파일의 support-files디렉토리에 있다.
이를 /etc디렉토리에 my.cnf라는 이름으로 복사
# cp support-files/my-large.cnf /etc/my.cnf

기본 DB생성
mysql을 관리할 DB를 생성. 이 DB는 Mysql의 전반적인 환경을 담고 있으므로 중요한 DB이다.
# cd /usr/local/server/mysql
# bin/mysql_install_db --user=mysql

디렉토리 권한 설정
# chown -R root .
# chown -R mysql var
# chgrp -R mysql .

환경 변수 등록
# vi ~/.bash_profile
 PATH=$PATH:$HOME/bin:/usr/local/server/mysql/bin
:wq!
source명령어를 이용해 즉시 적용.
# source ~/.bash_profile

자동실행 설정
# cp share/mysql/mysql.server /etc/init.d/mysqld
# chkconfig --add mysqld

root 암호 등록 & 테스트
mysqld 실행
# /etc/init.d/mysqld start

암호등록
# mysqladmin -u root password 암호

# mysql
 - ERROR -
# mysql -u root -p
 - Enter password:
mysql>


Apache 설치
./configure 실행
# ./configure \
> --prefix=/usr/local/server/apache \              - 설치 디렉토리 지정
> --enable-mods-shared=all \                         - 모든 모듈을 DSO모드로 작성
> --enable-so \                                             - DSO모드를 활성화
> --enable-rewrite                                           - URL 재작성 모듈을 활성화

******************************* DSO(Dynamic Shared Object) *******************************
아파치의 설치 방식은 두가지가 있다. DSO동적모듈 적재방식, Static Object방식.
DSO방식 : 모듈을 추가할때 아파치를 다시 컴파일하지 않고 모듈을 추가할 수 있다.
Static방식 : 아파치를 다시 컴파일해야 한다.
DSO방식
사용자의 요청이 있을때 모듈을 로드하므로 Static방식보다 느리지만, 시스템의 자원을 적게 소모한다.
Static방식
사용하는 모듈을 모두 적재한 다음 사용자의 요청이 있으면 바로 응답해 실행 속도가 빠르지만, 아파치가 실행될 때 모든 모듈을 로드하므로 시스템의 자원을 많이 소모한다.

최근에는 하드웨어의 발전으로 수행 속도가 크게 차이가 나지 않아 대부분 장점이 있는 DSO방식으로 설치한다.
********************************************************************************************

# make && make install

자동 실행 설정
# cp /usr/local/server/apache/bin/apachectl /etc/init.d/httpd
# chkconfig --add httpd
 - httpd 서비스는 chkconfig를 지원하지 않습니다. -
chkconfig 실행시 위와 같은 문구가 나타날 시 아래와 같이 조치한다.
# vi /etc/init.d/httpd
 # chkconfig:2345 9090
 # description: init file for Apache server daemon
 # processname: /usr/local/server/apache/bin/apachectl
 # config: /usr/local/server/apache/conf/httpd.conf
 # pidfile: /usr/local/server/apache/logs/httpd.pid
:wq!

chkconfig --add httpd 재입력

환경설정
기본적인 Apache 실행 환경을 설정
/usr/local/server/apache/conf/httpd.conf파일을 편집
1. User와 Group 지시어에 설정된 기본값 daemon을 nobody로 변경.
 - 이것은 root권한으로 실행된 아파치의 하위 프로세스를 이곳에서 지정한 사용자로 실행한다는 의미.
2. 143번째 줄의 ServerName항목의 주석을 해제, 도메인이 있으면 도메인을 적고 없으면 서버의 Ip를 적는다.( 이 항목을 설정하지 않으면 127.0.0.1으로만 접속이 된다.)

<IfModule !mpm_netware_module>
User nobody
Group nobody
</IfModule>
ServerName contos.lug.or.kr

실행
# /etc/init.d/httpd start

확인
It works! 라고 뜨면 설치 완료.
아파치는 작동하나 페이지가 열리지 않으면 iptables확인. 80번포트 open해준다.
# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT


PHP 설치
./configure 실행
# ./configure \
> --prefix=/usr/local/server/php \                             - pnp가 설치될 곳
> --with-apxs2=/usr/local/server/apache/bin/apxs \  - 아파치의 apxs를 이용해 아파치 모듈에 적재
> --with-mysql=/usr/local/server/mysql \                   - mysql과 연동
> --with-config-file-path=/usr/local/server/apache/conf \ - 환경설정 파일인 php.ini가 생성될 위치
> --disable-debug \
> --enable-safe-mode \
> --enable-track-vars \
> --enable-sockets \
> --with-mod_charset \
> --with-charset=utf8 \
> --with-xml \
> --with-language=korean \
> --enable-mailparse \
> --enable-calender \
> --enable-sysvsem=yes \
> --enable-sysvshm=yes \
> --enable-ftp \
> --enable-magic-quotes \
> --enable-gd-native-ttf \
> --enable-url-includes \
> --enable-trans-id \
> --enable-inline-optimization \
> --enable-bcmath \
> --with-jpeg \
> --with-png \
> --with-zlib \
> --with-jpeg-dir=/usr \
> --with-png-dir=/usr/lib \
> --with-freetype-dir=/usr \
> --with-libxml-dir=/usr \
> --enable-exif \
> --with-gd \
> --with-ttf \
> --with-gettext \
> --enable-sigchild \
> --enable-mbstring

옵션이 좀 많다. 나중에 각각의 모듈을 추가할 수 있지만, 상당히 번거로운 작업이기에 설치할 때 한방에 설치하자.

# make && make install

환경설정
소스 압축을 해제한 디렉토리에 php.ini-dist라는 샘플파일을 ./configure시 환경파일의 경로(--with-config-file-path=)로 지정해준 /usr/local/server/apache/conf에 php.ini라는 이름으로 복사.
# cp php.ini-dist /usr/local/server/apache/conf/php.ini

아파치 연동을 위해 httpd.conf파일을 수정
1. DirectoryIndex에 index.php를 추가
2. mime_module항목에 .php로된 파일을 php문서로 인식할 수 있게 AddType지시어를 이용해 설정.
# vi /usr/local/server/apache/conf/httpd.conf
<IfModule dir_module>
         DirectoryIndex index.html index.htm index.php
</IfModule>

<IfModule mime_module>
         AddType application/x-httpd-php .php
         AddType application/x-httpd-php-source .phps

</IfModule>

테스트

# /etc/init.d/httpd restart

만약 퍼미션 에러 발생시 SELinux의 보안설정 때문이다.
사용하지 않으려면, 현재 상태에서 setenforce 0 명령을 사용한다.
# chconf -t texrel_shlib_t

테스트페이지 작성
# vi /usr/local/server/apache/htdocs/phpinfo.php
<? phpinfo(); ?>
:wq!
브라우저 접속

정상적으로 작동시 php환경설정 정보페이지가 보이고, 연동이 되지 않으면 소스코드가 적나라하게 보이거나, php파일을 다운로드하려는 창이 나타난다.
1. 소스코드가 보일시에는 php확장자에 대한 파일 형식을 지정해 주지 않았을 때 발생. AddType지시어를 확인한다.
2. php파일을 다운로드하라고 할 시에는 php모듈이 정상적으로 로드되지 않았을 때 발생한다.

'SYSTEM > LINUX' 카테고리의 다른 글

SAMBA 서버  (0) 2010.01.28
NFS 서버 구축  (0) 2010.01.26
포트 넘버 & 서비스 (port number & service)  (0) 2009.12.31
/proc 구조  (0) 2009.12.31
tcpdump  (0) 2009.12.29