본문 바로가기

Web/LINUX

APM 소스 컴파일 설치가이드

반응형
출처 : http://lanplaza.net


APM 소스 컴파일 설치가이드

기존에 만들어놓은 문서가 너무 오래 된 것이라 새롭게 만들어 봤습니다.
제가 직접 설치하면서 Copy & Paste 하며 이 메뉴얼을 만들었기 때문에 이대로만 설치하시면 원빵에 설치된다고 감히 말씀드리고 싶습니다. :)


◆ 설치할 소스

apache_1.3.31 (http://httpd.apache.org/download.cgi)
php_4.3.7 (http://www.php.net/downloads.php)
mysql_4.0.20 (http://dev.mysql.com/downloads/)
gd_2.0.26 (http://www.boutell.com/gd/http/)
freetype_2.1.9 (http://prdownloads.sourceforge.net/freetype)
ZendOptimizer_2.5.2 (http://zend.com/store/products/zend-optimizer.php)

◆ 패치파일

gd 패치 : patch_gd2.0.26_gif_040622 (http://downloads.rhyme.com.au/gd/)



▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧

1. 설치준비

먼저 설치할 소스를 다운받아 특정폴더에 넣어놓자

여기서는 /usr/local/source 디렉토리를 만들어서 여기에 모두 카피하였다.




2. RPM으로 설치된 패키지 제거

리눅스 설치를 everything으로 하였다면 rpm으로 APM이 설치되어있을 것이다.

해당 패키지들은 모두 제거해줘야한다.



먼저 관련 프로세스가 떠있는지 확인하고 떠있다면 죽여주자



apache 데몬이 있는지 확인

[root@localhost root]# ps -ef | grep httpd

root 4458 3462 0 20:02 pts/0 00:00:00 grep httpd

위와 같이 나오면 데몬이 없는 것이다.

실행중인 데몬이 있으면 데몬을 종료 (killall httpd)




mysql 데몬이 있는지 확인

[root@localhost root]# ps -ef | grep mysqld

이것 역시 떠있는 데몬이 있으면 종료해준다.




RPM 패키지 확인




설치된 apache 패키지 검색

[root@localhost root]# rpm -qa | grep httpd

httpd-manual-2.0.40-21

redhat-config-httpd-1.0.1-18

httpd-devel-2.0.40-21

httpd-2.0.40-21




apache 제거

[root@localhost root]# rpm -e --nodeps httpd-2.0.40-21

위와같은 방법으로 검색된 패키지들은 모두 삭제하자. --nodeps 옵션을 붙혀준 것은 의존성 때문이다.

이 옵션을 붙히지 않으면 다른 패키지가 이 패키지를 dependant 하고 있으므로 삭제할 수 없다는 메시지가 나온다.




설치된 mysql 패키지 검색

[root@localhost root]# rpm -qa | grep mysql

mysql-devel-3.23.54a-11

php-mysql-4.2.2-17

libdbi-dbd-mysql-0.6.5-5

mysql-server-3.23.54a-11

mysql-3.23.54a-11

mod_auth_mysql-1.11-12




mysql 제거

[root@localhost root]# rpm -e --nodeps mysql-3.23.54a-11

검색된 다른 패키지들도 동일한 방법으로 지워줌



설치된 php 패키지 검색

[root@localhost root]# rpm -qa | grep php

php-ldap-4.2.2-17

php-4.2.2-17

asp2php-gtk-0.76.2-5

php-manual-4.2.2-17

asp2php-0.76.2-5

php-devel-4.2.2-17

php-pgsql-4.2.2-17

php-odbc-4.2.2-17

php-snmp-4.2.2-17

php-imap-4.2.2-17




php 제거

[root@localhost root]# rpm -e --nodeps php-4.2.2-17

검색된 다른 패키지들도 동일한 방법으로 지워줌




gd 제거

[root@localhost root]# rpm -e --nodeps gd




freetype 제거

[root@localhost root]# rpm -e --nodeps freetype







3. mysql 설치

mysql 그룹과 유저가 등록이 되어있는지 확인한다. 리눅스를 everything 으로 설치했다면 당연히 존재할것이다.

/etc/passwd 파일과 /etc/group 파일을 열면 존재여부를 확인할수 있다.




[root@localhost root]# vi /etc/passwd

:

mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash

:

[root@localhost root]# vi /etc/group

:

mysql:x:27:

:




보는바와 같이 이미 mysql 그룹과 유저가 생성되어 있다는 것을 알수 있다. Rpm으로 설치된 mysql때문이다.

만약 만약 생성되어있지 않다면 다음과같이 그룹과 유저를 추가시켜준다.




[root@localhost root]# groupadd mysql

[root@localhost root]# useradd -g mysql mysql




등록이 끝났으면 mysql을 다운받은 소스 디렉토리로 이동하여 설치할 준비를 하자

[root@localhost root]# cd /usr/local/source

[root@localhost source]# tar xvfz mysql*

[root@localhost source]# cd mysql*

[root@localhost mysql-4.0.20]# ./configure \

--prefix=/usr/local/mysql \

--with-charset=euc_kr \

--localstatedir=/usr/local/mysql/data


(옵션설명)

--prefix=/usr/local/mysql 설치 디렉토리 지정

--with-charset=euc_kr 한글 지원

--localstatedir=/usr/local/mysql/data 데이타 저장 디렉토리 지정




[root@localhost mysql-4.0.20]# make

[root@localhost mysql-4.0.20]# make install




컴파일 과정에서 cpu 성능에 따라 시간차이가 천차만별이다. 자신의 cpu 성능에 자신이 없다면 make 명령을 해준뒤 컴파일이 끝날때까지 모니터를 바라보는 짓은 하지 말자 ;-)




인스톨까지 끝났다면 mysql에 사용될 기초적인 DB를 생성해준다.

[root@localhost mysql-4.0.20]# scripts/mysql_install_db




DB 생성후엔 데이터가 저장되는 폴더안의 내용물들의 소유권을 mysql 유저에게 주어야 한다.

mysql 구버전(정확히 몇인지는 기억이 안남)에는 이러한 과정이 없었다.

이부분이 잘못되면 mysql 데몬을 띄울때 mysql.sock 에러가 공공연히 나올것이다.

[root@localhost mysql-4.0.20]# chown -R mysql.mysql /usr/local/mysql/data




환경설정 파일을/etc/my.cnf 에 복사한다.

[root@localhost mysql-4.0.20]# cp support-files/my-medium.cnf /etc/my.cnf




mysql 데몬스크립트mysql.server 파일에 mysql_safe가 실행되는 라인에 language 옵션을 추가한다.

현재 설치하고 있는 mysql 버전은 4.0.20 임을 잊지말자.

[root@localhost mysql-4.0.20]# vi /usr/local/mysql/share/mysql/mysql.server

mysql.server 내용

$bindir/mysqld_safe --datadir=$datadir --language=korean --pid-file=$pid_file >/dev/null 2>&1 &




mysql 경로 설정

[root@dentistrytest mysql-4.0.20]# vi /root/.bash_profile

/usr/local/mysql/bin 추가

.bash_profile 내용

PATH=$PATH:$HOME/bin:/usr/local/mysql/bin




부팅시 자동실행될 수 있도록 링크를 걸고 데몬을 띄워보자

[여기서 잠깐!]

mysql rpm 패키지를 제거할 때 관련패키지를 제거하지 않았다면 기존의 mysql이 부팅시 자동실행되도록 등록되어있을것이다. 여기서는 위와같이 링크를 걸어줬으므로 이 링크파일은 제거해줘야한다. 아까전에 생성한 링크원본 파일이 리눅스 배포판의 mysql데몬 이름과 같다면 새롭게 링크를 걸 필요가 없지만 지우고 새로이 만드는게 좋다.




root@localhost mysql-4.0.20]# cd /etc/rc.d/init.d/rc3.d

root@localhost rc3.d]# ls al *mysql*

lrwxrwxrwx 1 root root 16 Oct 11 15:21 K20mysqld -> ../init.d/mysqld




위와같이 mysql 관련 링크가 있으면 삭제해주자

root@localhost rc3.d]# rm rf K20mysqld




rc5.d 디렉토리 내용도 똑같이 삭제해준다.

root@localhost mysql-4.0.20]# cd /etc/rc.d/init.d/rc5.d

root@localhost rc5.d]# ls al *mysql*

lrwxrwxrwx 1 root root 16 Oct 11 15:21 K20mysqld -> ../init.d/mysqld

root@localhost rc5.d]# rm rf K20mysqld




이제 링크를 걸어주면 되겠다.

root@localhost mysql-4.0.20]# cp -p /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld

이 과정에서 혹 같은 이름의 파일이 존재한다는 경고창이 나오면 y를 누르고 그냥 무시하자

root@localhost mysql-4.0.20]#ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc3.d/S90mysqld

root@localhost mysql-4.0.20]#ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc5.d/S90mysqld

root@localhost mysql-4.0.20]# /etc/rc.d/init.d/mysqld start



위와같이 링크를 걸지 않고 편하게 하고 싶다면 /etc/rc.d/rc.local 파일을 vi 에디터로 열어서 제일 마지막 라인에

데몬파일의 경로를 써주면 되겠다.




mysql 데몬 확인

# ps -ef | grep mysql

mysql 3537 3501 0 15:02 ? 00:00:00 [mysqld]

500 4055 3421 0 15:04 pts/0 00:00:00 grep mysqld




이제 다 끝났으면 mysql에 접속을 해보자

[root@localhost mysql-4.0.20]# /usr/local/mysql/bin/mysql mysql

mysql>




위와같이 프롬프트가 떴다면 정상적으로 설치된것이다.

기타 mysql 계정 추가하는 법은 여기서 설명하지 않겠다. DB 계정추가 및 자세한 사항은 MYSQL TIP 메뉴를 이용 바란다.




4. Freetype 설치

[root@localhost mysql-4.0.20]# cd /usr/local/source

[root@localhost source]# tar xvfz freetype-2.1.9*

[root@localhost source]# cd freetype-2.1.9

[root@dentistrytest freetype-2.1.9]# ./configure

[root@dentistrytest freetype-2.1.9]# make

[root@dentistrytest freetype-2.1.9]# make install







5. GD 설치

[root@localhost freetype-2.1.9]# cd ..

[root@localhost source]# tar xvfz gd*

[root@localhost source]# cd gd*




gif 지원을 위해 패치를 해준다. 현재 GD버전은 gd-2.0.26이다.

본인의 경우는 패치파일들은 모두 /usr/local/source/patches에 모아놨다.

[root@localhost gd-2.0.26]# patch -l < ../patches/patch_gd2.0.26_gif_040622

[root@localhost gd-2.0.26]# ./configure --prefix=/usr/local/gd --with-freetype=/usr/local/include/freetype2

[root@localhost gd-2.0.26]# make

[root@localhost gd-2.0.26]# make install







6. Apache 설치(1)

php 컴파일을 위해 apache 를 설정해준다.

[root@localhost gd-2.0.26]# cd ..

[root@localhost source]# tar xvfz apache*

[root@localhost source]# cd apache*

[root@localhost apache_1.3.31]# ./configure -prefix=/usr/local/apache







7. php 설치

[root@localhost apache_1.3.31]# cd /usr/local/source

[root@localhost source]# tar xvfz php*

[root@localhost source]# cd php*




[root@localhost php-4.3.7]# ./configure --with-config-file-path=/etc \

--with-exec-prefix=/usr/bin \

--with-mysql=/usr/local/mysql \

--with-apache=../apache_1.3.31 \

--with-gd=/usr/local/gd \

--with-freetype-dir=/usr/local/include/freetype2 \

--with-jpeg-dir=/usr/lib/ \

--with-png-dir=/usr/lib/ \

--with-zlib-dir=/usr/lib/ \

--with-language=korean \

--with-charset=euc-kr \

--disable-debug \

--enable-track-vars \

--enable-safe-mode \

--enable-gd-native-ttf \


[root@localhost php-4.3.7]# make

[root@localhost php-4.3.7]# make install


php 환경설정 파일 복사

[root@localhost php-4.3.7]# cp ./php.ini-dist /etc/php.ini


8. apache 설치(2)

[root@localhost php-4.3.7]# cd ../apache*

[root@localhost apache_1.3.31]# ./configure --prefix=/usr/local/apache \

--activate-module=src/modules/php4/libphp4.a \

--enable-module=so \

--enable-shared=max \

--sysconfdir=/usr/local/apache/conf \

--htdocsdir=/usr/local/apache/htdocs \

--logfiledir=/var/log/httpd




[root@localhost apache_1.3.31]# make

[root@localhost apache_1.3.31]# make install




인스톨이 끝났으면 httpd.conf 파일을 수정해줘야한다.

[root@localhost apache_1.3.31]# vi /usr/local/apache/conf/httpd.conf



- ServerName 부분을 주석 해제하고 본인의 아이피나 도메인으로 설정한다.

ServerName 127.0.0.1



- 아래 부분에 index.php 추가

<IfModule mod_dir.c>

DirectoryIndex index.html index.php

</IfModule>




- AddType 추가

AddType application/x-httpd-php .php .php3 .inc .ph .htm .html

AddType application/x-httpd-php-source .phps



디렉토리 보안을위해 Options 부분 Indexes 를 삭제해준다.

Options Indexes FollowSymLinks MultiViews




시스템 부팅시에 자동 실행되도록 링크를 걸어준다.

[root@localhost apache_1.3.31]# cp -p /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd

[root@localhost apache_1.3.31]# ln s /etc/rc.d/init.d/httpd /etc/rc.d/rc3.d/S99httpd

[root@localhost apache_1.3.31]# ln s /etc/rc.d/init.d/httpd /etc/rc.d/rc5.d/S99httpd

[root@localhost apache_1.3.31]# /etc/rc.d/init.d/httpd start







9. Zend 설치

마지막으로 php 엔진 역할을 하는 zend를 설치하자



[root@localhost apache_1.3.31]# cd ..

[root@localhost source]# tar xvfz Zend*

[root@localhost source]# cd ZendOptimizer-2.5.2-Linux_glibc21-i386

[root@localhost apache_1.3.31]# cd ../ZendOptimizer-2.5.2-Linux_glibc21-i386

[root@localhost ZendOptimizer-2.5.2-Linux_glibc21-i386]# ./install.sh




[root@dentistrytest ZendOptimizer-2.5.2-Linux_glibc21-i386]# vi /usr/local/Zend/etc/php.ini

register_globals = On 으로 설정




모든 설치가 끝났다. 이제 소스들의 테스트를 해보자

[root@dentistrytest ZendOptimizer-2.5.2-Linux_glibc21-i386]# cd /usr/local/apache/htdocs

[root@localhost htdocs]# vi test.php

<?

mysql_connetc('','','');

phpinfo();

?>

위와같이 저장하고 원격에서 브라우저를 띄워 접속해보자

http://본인의URL/test.php or http://localhost/test.php




아무런 에러없이 php정보가 주~욱 뜬다면 정상적으로 설치가 된 것이다.

gd, zend, apache, mysql 등의 정보를 볼수 있을것이다.



이제 모든 설치가 끝났다. 훌륭한 웹서버 한 대를 직접 설치한 것이다.
성공적으로 설치한 사람들은 기쁨을 만끽하고
실패한 사람들은 몇 번이고 다시 설치해보기 바란다. (메뉴얼을 탓하지 말기 바란다 ;-))
분명 컴파일이 잘못되었거나 빠진 부분이 있을 것이다.


########################################
# 작성자 : 송윤경 (Nick : Leopit)
# Contact : webmaster@leopit.com
# Last Updated : 2004. 10. 15
########################################
반응형

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

php로 된 자료실 자료업로드 문제..  (0) 2011.08.31
아파치 튜닝  (0) 2011.08.31
ssh 무차별 로그인 공격 막기  (0) 2011.08.31
ssh로 특정 ip접근 hosts.deny 자동 추가  (0) 2011.08.31
Zend Optimizer v3.3  (0) 2011.08.31