APM이 뭐지?

Apache + Php + Mysql을 말한다. 솔직히 여기서 Mysql 대신에 Oracle 이 들어갈 수도 있고, Php 대신 JSP가 들어갈 수도 있겠지만, APM이라고 부르는 이유는 저 3개의 프로그램이 궁합이 잘 맞아서 인 것 같다.
APM 설치는 리눅스 서버에 있어서 아주 기본적이다. 아주 간단한 개인 홈페이지에서 부터 웹 호스팅에 이르기까지 활용의 범위가 넓기 때문이다.
여기서는 기본적으로 APM설치를 해보고 간단한 설정을 알아볼 것이다. 좀더 세부적인 설정을 원한다면, 관련서적이나 관련 사이트를 참고하기 바란다.

준비운동하기

참고로 이 문서는 Redhat 9 를 기준으로 작성하였다.
아래의 사이트에서 필요한 프로그램을 다운받는다.

설치하기

설치는 Mysql → Apache → Php 순으로 한다.

옛날 버전에는 바로 설치가 가능했지만, 요즘들어서 mysql 라는 계정이 있어야 제대로 설치가 된다. 아마도 보안문제 때문이 아닌가 한다.

#groupadd mysql
#useradd -M -s /bin/false -g mysql mysql
 
#tar xzvf mysql-4.0.17.tar.gz
#cd mysql-4.0.17
#./configure --prefix=/usr/local/program/mysql \
--localstatedir=/usr/local/program/mysql/data \
--disable-maintainer-mode \
--with-mysqld-user=mysql \
--enable-large-files \
--without-comment \
--without-debug \
--without-docs \
--without-bench \
--with-charset=euc_kr          
 
#make
#make install

설치를 했으면, mysql 기본 DB를 만들기 위해서 다음의 스크립트를 실행시킨다.

#/설치디렉토리/scripts/mysql_install_db

Mysql 설치된 디렉토리와 DB 파일이 저장될 Data 디렉토리의 권한을 바꿔준다. 반드시 바꾸어주어야 한다. 그렇지 않으면, 나중에 제대로 동작하지 않는다.

#chown -R root:mysql /usr/local/program/mysql
#chown -R mysql:mysql /usr/local/program/mysql/data

라이브러리에 등록한다.

#echo "/usr/local/program/mysql/lib/mysql" >> /etc/ld.so.conf
#ldconfig -v | grep libmysqlclient

서버를 재시작했을때 자동으로 실행시키기 위해서 다음과 같이 합니다.

#cp /소스디렉토리/support-files/mysql.server /etc/rc.d/init.d
#chmod +x /etc/rc.d/init.d/mysql.server
#cd /etc/rc.d/rc3.d
#ln -s /etc/rc.d/init.d/mysql.server S89mysqld
#cd /etc/rc.d/rc0.d
#ln -s /etc/rc.d/init.d/mysql.server K89mysqld

Mysql 데몬이 실행할 때 앞에서 만든 mysql 권한으로 실행되기 위해 –user=mysql 을 추가시킨다.

#vi /etc/rc.d/init.d/mysql.server

또한 한글 데이터 처리를 위해서 –language=korean 을 추가한다.

#Give extra arguments to mysqld with the my. file. this script may
#be overwritten at next upgrade.
$bindir/safe_mysql --user=mysql --language=korean --datadir=$datadir --pid-file=$pid_file &

RUNLEVEL 3에서 mysql.server 가 자동으로 실행하기 위해 등록한다.

#chkconfig --level 3 mysql.server

이젠 위에서 만든 mysql.server 가 제대로 실행되는지 테스트 해보자!

#/etc/rc.d/init.c/mysql.server start
#ps -ax|grep mysql
 1510 ?        S      0:00 /bin/sh /usr/local/program/mysql/bin/mysqld_safe --user=mysql \
--language=korean --datadir=/usr/local/program/mysql/data \
--pid-file=/usr/local/program/mysql/data/localhost.localdomain.pid
 1541 ?        S      0:01 [mysqld]
 4094 pts/0    S      0:00 grep mysql

Mysql을 설치하면 root 패스워드가 설정되어 있지 않다. 여기서 말하는 root는 시스템에서의 root가 아니다. Mysql에서의 root 이다. 혼동하면 안된다. root 패스워드을 지정하자.

#/usr/local/mysql/bin/mysql mysql
mysql>update user set password=password('패스워드') where user="root";
mysql>FLUSH privieges;
quit;

지정했으면, 제대로 설정이 되었는지 테스트한다.

#/usr/local/mysql/bin/mysql -u root -p
Enter password: ******  (사실 보이지 않는다)

제대로 로그인이 되면, Apache 설치로 넘어가자!

Apache는 비교적 설치가 간단하다. 따로 건드려 줄 부분이 없기 때문이다. 바로 설치해보자!

#tar xzvf apache_1.3.29.tar.gz
#cd apache_1.3.29
#./configure --prefix=/usr/local/apache \
--enable-shared=max \
--enable-module=so
#make
#make install

다음에는 Php 이다.

PHP 역시 비교적 설치가 간단하다. 설치할 때 유의할 점은 많은 옵션을 선택할 수 있는 데, 몇 개는 라이브러리에 의존합니다. 옵션에 대한 더 자세한 정보는 PHP website documentation을 참고하기 바란다.

#cd /usr/local/src/php-4.3.4
#./configure --with-apxs=/usr/local/program/apache/bin/apxs \
--with-mysql=/usr/local/program/mysql \
--enable-track-vars \
--disable-debug \
--enable-ftp \
--with-trans-sid \
--enable-session \
--enable-xml 
 
#make 
#make install
#cp /소스디렉토리/php.ini-dist /usr/local/lib/php.ini 

방금 위에서 복사한 php.ini 파일이 php의 핵심파일이라고 할 수 있다. 추후에 php설정을 건드려줄 일이 있다면, 이 파일을 건드려주어야 한다.
이제는 웹 서버에서 php 파일을 볼 수 있도록 설정해주어야 한다.

#vi /usr/local/program/apache/conf/httpd.conf

다음의 부분을 찾아 주석을 풀어주거나, 없다면 추가한다.

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

index.php가 디렉토리 인덱스 파일로 설정되도록 한다.

<IfModule mod_dir.c>
	DirectoryIndex index.php index.html index.html
</IfModule>

이번에는 위의 설정이 제대로 적용이 되었는지 테스트할 .php 파일을 하나 만든다.

#vi /usr/local/program/apache/htdocs/test.php

아래의 내용을 입력한다.

<?phpinfo()?>

자~아 이제 테스트를 위한 모든 준비는 끝났다. Apache 데몬을 동작시키고, 웹 브라우저로 http://localhost/test.php 열어보자!
PHP 마크가 나오면서, 여러가지 환경변수들이 출력된다면, 제대로 연동이 된 것이다.

그 외

Apache 실행파일을 init.d 아래에 복사하고, 런 레벨을 등록해주면 된다.

#cp /usr/local/program/apache/bin/apachectl /etc/rc.d/init.d
#chmod +x /etc/rc.d/init.d/apachectl 
 
#cd /etc/rc.d/rc3.d
#ln -s /etc/rc.d/init.d/apachectl S90httpd
#cd /etc/rc.d/rc0.d
#ln -s /etc/rc.d/init.d/apachectl K90httpd

root 계정말고 일반 계정을 추가하고, DB에 퍼미션을 주는 방법이다.

#/usr/local/mysql/bin/mysqladmin create DB이름
#/usr/local/mysql/bin/mysql mysql
mysql>GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on DB이름.* to user이름@localhost identified by '패스워드‘;
mysql>FLUSH privileges;
mysql>quit;

차후 버전들에서 변경된 것들

위의 문서들은 예전 버전의 설치 방법을 설명했었다. 여기서는 현재(2007.8.5) 최신의 APM 설치방법을 설명한다. 바뀐 부분을 중점적으로 기술하겠다.
내가 설치하려는 패키지들은 다음과 같다.

  1. httpd-2.2.4.tar.gz
  2. mysql-5.0.45.tar.gz
  3. php-5.2.3.tar.gz

여기서 따로 언급하지 않는 것은 위와 동일하다. 참고로 redhat 9 를 기반에서 설치한 것이다.

#./configure --prefix=/usr/local/program/mysql \
--localstatedir=/usr/local/program/mysql/data \
--with-mysqld-user=mysql \
--without-comment \
--without-debug \
--without-docs \
--with-charset=euckr         # 변경됨

디비 생성시에 'mysql_install_db –user=mysql' 로 실행한다.
설치 후, mysql 데몬 시작 시에 아래와 같은 에러가 발생한다면,

#./mysqld_safe &
[1] 24365
[root@localhost bin]# Starting mysqld daemon with databases from /usr/local/program/mysql/data
STOPPING server from pid file /usr/local/program/mysql/data/localhost.localdomain.pid
090111 11:46:33  mysqld ended

localhost.localdomain.pid 파일을 열어서 에러 메세지를 확인한다.

090111 11:46:29  mysqld started
090111 11:46:29  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.
090111 11:46:29  mysqld ended

위와 같다면, 다음과 같이 실행한다.

#./mysql_install_db --user=mysql

위와 동일하다

configure 에서 에러가 발생한다. redhat 9 버전에 설치된 libxml2, libxml2-devel 버전이 낮기 때문이다. http://rpmfind.net 에서 최신버전을 다운 받으면 된다.
여기서는 필자는 둘다 모두, 2.6.14-2 를 받았다. (libxml2-2.6.14-2.i386.rpm, libxml2-devel-2.6.14-2.i386.rpm)

#rpm -Uvh libxml2-*

설치 후에 다시 configure 를 실행한다. 이번에는 apache 와 연동되는 apxs 에 대한 에러이다. 위에서 설치한 apache 는 1.3.x 이고, 여기서 설치한 apache 는 2.x 이기 때문에 apxs 가 다르다.

#./configure --with-apxs2=/usr/local/program/apache/bin/apxs \       # 수정됨
--with-mysql=/usr/local/program/mysql \
--disable-debug \
--enable-ftp \
--enable-session \
--enable-xml \
--with-gettext

이제는 에러없이 수행될 것이다.

httpd.conf 수정

php 문법을 인식시키기 위해 설정파일을 수정해야 한다.

ServerName develop             # 호스트 이름을 적어줌
...
...
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>
...
...
AddType application/x-httpd-php .php
AddType application/x-httpd-php .html             # 추가됨
AddType application/x-httpd-php-source .phps
...
...

Ubuntu 및 Debian 에서 설치하기

데비안 기반의 배포판들이 그렇듯 너무나 간단하게 APM 을 설치할 수 있다. 옛날처럼 성능을 위해서 일일이 손 컴파일하는 시대는 지났다. 하드웨어 성능은 좋아지고, 상대적으로 가격은 저렴해졌다. 몇 번의 명령만으로 APM 을 설치해보자!

# apt-get install apache2            // apache 설치
# apt-get install libapache2-mod-auth-mysql        // mysql 인증을 위한 모듈 설치
# apt-get install mysql-server mysql-client            // mysql 설치
# apt-get install php5-common php5 libapache2-mod-php5          // php 설치
# apt-get install php5-mysql                       // php 와 mysql 연동을 위한 모듈 설치

이제 제대로 설정이 되었는지 확인을 해보자.

# /etc/init.d/apache2 restart
# netstat -tap | grep mysql
tcp        0      0 localhost.localdo:mysql *:*                     LISTEN      3909/mysqld     

'phpinfo()' 를 이용하여 PHP 연동이 제대로 되었는지 확인한다.

  • computer/networking/apm_구축하기.txt
  • Last modified: 3 years ago
  • by likewind