APM (FCGI) + 소스 DSO 모드 설치 - 연동 ( apache2 - fast cgi - mysql5 php5 - 2006 06)
네이버 리눅스 마스터
http://suite.tistory.com/ fs
0. 준비
- 소스 다운로드
apache : http://www.apache.org
php : http://www.php.net
mysql : http://www.mysql.com
사이트에서 검색? 하여 소스를 다운 받는다.
mysql-5.0.22 , httpd-2.0.54.tar.gz , php-5.1.4
- 설치 계정: 설치 계정 생성
ex) $>useradd fs
- 설치 디렉토리 : /home/fs/apmz
ex) fs$> mkdir apmz
* 데비안 리눅스 3.0 에서 설치 한 문서
* 이미 설치된 apache ,mysql,php 를 지울 필요 없음
* 아래 글은 조금은 apm를 설치나 문서를 봤으면 금방 설치
안했으면 좀 삽질 필요함 -.-;
1. mysql 설치
가. 해당 소스를 압축을 푼 디렉토리에서 configure 수행
./configure --prefix=/home/fs/apmz/mysql5 --localstatedir=/home/fs/apmz/mysql5/datadb --with-mysqld-user=fs --with-charset=euckr --with-tcp-port=4129 --with-unix-socket-path=/home/fs/apmz/mysql5/fs.sock --mandir=/home/fs/apmz/mysql5/man --sysconfdir=/home/fs/apmz/mysql5/datadb --enable-local-infile
옵션 설명:
--prefix= 설치 디렉토리
--localstatedir= 디비 데이터 디렉토리
--with-mysqld-user= 디비 사용 계정
--with-charset= 문자셋 (4.0 이하버전의 경우 euc_kr)
--with-tcp-port= 사용 포트 (루트로 기본 설치시 3306인데 이미 3306을 쓰지 못하면 임의로 정해준다)
--with-unix-socket-path= 소켓 파일 (루트로 기본 설치시 /tmp 에 생성되는데 임의로 정해준다)
--sysconfdir= my.cnf 디렉토리
--mandir= 매뉴얼 디렉토리
--enable-local-infile LOAD DATA INFILE 하기위해
--with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static 정적으로 컴파일 할 경우 추가(필수 아님)
나. 컴파일
./make
다. 설치
./make install
ls /home/fs/apmz/mysql5 실행하여 설치되었는지 확인해본다.
라. MySQL 데이터베이스 생성
bin 디렉토리로 이동하여 mysql_install_db 명령을 실행합니다(꼭 한번만 실행할 것)
mysql_install_db 명령은 /home/fs/apmz/datadb 디렉토리를 생성하고, 그 디렉토리 안에 mysql DB 디렉토리와 파일들을 생성해 줌.
ex) /home/fs/apmz/mysql5/bin/mysql_install_db
아래와 같은 메시지가 나오면 정상으로 봄
================================================================================
fs@searchasp:~/apmz/mysql5/bin$ /home/fs/apmz/mysql5/bin/mysql_install_db
~~~ ~~ ~~ ~~~
~~ ~~
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
=================================================================================
마. LD_LIBRARY_PATH 설정
mysql데몬이 mysql 동적 라이브러리 모듈(so)을 찾을수 있도록 사용자 쉘에 모듈 디렉토리 위치를 설정해둔다.
ex) bash 쉘경우
vi 홈디렉토리/.bash_profile
export LD_LIBRARY_PATH=/home/fs/apmz/mysql5/lib/mysql:
source .bash_profile 를 실행하여 바로 현 쉘에 적용
바. 데몬 실행파일 / 설정 파일을 복사
- /home/fs/apmz/mysql5/share/mysql/mysql.server ==> /home/fs/apmz/mysql5/bin/server 복사
- /home/fs/apmz/mysql5/share/mysql/my-medium.cnf ==> /home/fs/apmz/mysql5/datadb/my.cnf 복사.
참고로 SQL 쿼리 로그를 작성하지않도록 my.cnf에 # log-bin , # server-id 를 주석 처리한다
사. mysql 데몬 실행 / 접속
/home/fs/apmz/mysql5/bin/server start 데몬 실행 (stop 정지)
(server 스크립트 내부적으로 /bin/mysqld_safe & 실행함 )
/home/fs/apmz/mysql5/bin/mysql 실행
mysql> 콘솔화면이 나오면 설치 완료
2. apache 설치
가. 해당 소스를 압축을 푼 디렉토리에서 configure 수행
./configure --prefix=/home/fs/apmz/apache2 --enable-mods-shared=most --enable-modules=so --with-mpm=worker
옵션 설명:
--prefix= 설치 디렉토리 디렉토리
--enable-mods-shared=most --enable-modules=so DSO 방식으로 PHP 모듈을 끼워 넣을 수 있도록 아파치를 컴파일하기 위해 옵션을 반드시 사용합니다.
--with-mpm=worker 옵션은 아파치 설정 파일에서 살펴보겠지만 다중 프로세서 모듈(MPM) 중 worker 모듈을 지원할 수 있도록 하는 옵션입니다.
이 옵션을 추가하지 않으면 아파치 2.x 버전에서는 기본적으로 perfork 모듈을 지원합니다.
나. 컴파일
./make
다. 설치
./make install
ls /home/fs/apmz/apache2 실행하여 설치되었는지 확인해본다.
라. LD_LIBRARY_PATH 설정
아파치가 SO 모듈을 찾을수 있도록 사용자 쉘에 모듈 디렉토리 위치를 설정해둔다.
mysql 디렉토리 뒤에 apache2/lib , apache2/modules 두개 추가 해준다
ex) bash 쉘경우
vi 홈디렉토리/.bash_profile
export LD_LIBRARY_PATH=/home/fs/apmz/mysql5/lib/mysql:/home/fs/apmz/apache2/lib:/home/fs/apmz/apache2/modules
source .bash_profile 를 실행하여 바로 현 쉘에 적용
바. 실행
/home/fs/apmz/apache2/bin/apachectl start
실행 후 에러가 없으면 완료
이미 사용하는 포트라는 메시가 나올경우 http.conf 파일에서 수정 할 것
사. FCGI 설치
http://www.fastcgi.com 에서 mod_fastcgi-2.4.2.tar , fcgi-2.4.0.tar 받아온다
- mod_fastcgi 생성
mod_fastcgi-2.4.2.tar 압축 푼 디렉 토리에서
Makefile.AP2 파일에서 top_dir=/home/fs/apmz/apache2로 설치된 아파치 경로 지정
cp Makefile.AP2 Makefile
make ; make install ( 아파치 2.2.2 버전의경우 헤더파일 없다는 에러 발생함)
ls /home/fs/apmz/apache2/modules/mod_fastcgi.so 존재 확인후
httpd.conf 에 모듈 추가 라인 삽입
"LoadModule fastcgi_module modules/mod_fastcgi.so"
- fcgi C 개발 킷 설치
fcgi-2.4.0.tar 압축 푼디렉토리 ./configure --prefix=/home/fs/apmz/apache2/fcgi2;make ;make install
* FAST CGI 예제는 추후에...
3. PHP 설치
설치 하기 전 각종 라이브러리 설치 되어 있어야 함
libxml2 - http://xmlsoft.org/
zlib - http://www.gzip.org/zlib/ - 그래픽 지원 (필수 아님 )
libpng - http://libpng.sourceforge.net/ - 그래픽 지원 (필수 아님 )
free type - http://www.freetype.org/ - 그래픽 지원 (필수 아님 )
libjpeg - http://www.ijg.org/ - 그래픽 지원 (필수 아님 )
gd - http://www.boutell.com/gd/ - 그래픽 지원 (필수 아님 )
iconv - http://www.gnu.org/software/libiconv/ - ICOV() 지원 (필수 아님 )
라이브러리 설치가 모두 되었다면
가. php5 해당 소스를 압축을 푼 디렉토리에서 configure 수행
풀 옵션 실행시
./configure --prefix=/home/fs/apmz/php5 --mandir=/home/fs/apmz/php5/man --with-charset=euc_kr --with-apxs2=/home/fs/apmz/apache2/bin/apxs --with-mysql=/home/fs/apmz/mysql5 --with-config-file-path=/home/fs/apmz/php5/etc --with-exec-dir=/home/fs/apmz/apache2/bin --enable-track-vars --with-fastcgi --with-libxml-dir=/home/fs/apmz/libs/libxml --with-gd-dir=/home/fs/apmz/libs/libgd --with-jpeg-dir=/home/fs/apmz/libs/libjpeg --with-zlib-dir=/home/fs/apmz/libs/libzlib --with-iconv=/home/fs/apmz/libs/libiconv
옵션 설명:
--prefix= 설치 디렉토리 디렉토리
--with-charset= 문자열 셋
--with-apxs2= 아파치의 apxs경로 (so 모튤 실행 위해)
--with-mysql= mysql 위치
--with-config-file-path= php.ini 환경 파일경로
--with-exec-dir 아파치 실행 경로
--enable-track-vars 옵션은 HTTP_GET_VARS, HTTP_POST_VARS, HTTP_COOKIE_VARS 배열에 들어 있는 GET, POST, cookie 변수들이 어디서 왔는지 기억하도록 함 꼭 설정
--with-libxml-dir libxml2 설치 경로 지정
--with-gd --with-jpeg-dir --with-zlib-dir PHP 자체적으로 그래픽을 지원 위해 필수 아님
--with-iconv php에서 iconv()를 사용위해 필수 아님 - 만약 이옵션에서 iconv 라이브러리를 찾지 못 할 경우 따로 설치해야 함
* 오류 발생시 리플
나. 컴파일
./make
* 오류 발생시 리플
다. 설치
./make install
ls /home/fs/apmz/php5 실행하여 설치되었는지 확인해본다.
모듈(libphp5.so)이 생성되었는지 확인 해 본다.
ls /home/fs/apmz/apache2/modules/libphp5.so
라. 환경 파일 복사
소스디렉토리에있는 php.ini-dist를 --with-config-file-path= 경로위치에 복사
/php-5.1.4$ cp php.ini-dist /home/fs/apmz/php5/etc/php.ini
vi /home/fs/apmz/php5/etc/php.ini 파일을 열어
register_globals = Off --> On 으로 변경한다.
원래 기본적으로 보안상 Off임 하지만 사용 할 경우가 많다. 그래서 ON
마. httpd.conf을 열어
- LoadModule php5_module modules/libphp5.so 라인이 존재 하지 않는다면 추가 해준다
- AddType application/x-httpd-php .php 라인이 존재 하지 않는다면 추가 해준다
httpd.conf 수정 완료 후
아파치를 재 시작 해준다 .
마지막으로 <? phpinfo(); ?> php 스크립트를 웹에서 설치가 모두 잘 되었는지 확인해 본다.