Posted
Filed under Linux
'APM 설치'란 리눅스에서 웹 서버 구축에 사용되는 Apache 프로그램 과 서버에서 데이터(자료)를
저장,관리하는 데이터베이스 서버 구축에 사용되는 MySQL 프로그램 그리고 서버에서 프로그램을 작
성할 수 있는 서버측 언어인 PHP 프로그램을 소스로 다운로드 받아 위 3개 프로그램이 연동될 수 
있도록 설치하는과정입니다.

앞에서 RPM 명령어를 사용하여 팩키지 프로그램을 설치하고 삭제하는 방법에 대해서 공부했지만,
이 장에서는 최신 버젼의 소스(Source)프로그램을 다운받아 설치하는 방법을 공부하겠습니다. 소스
설치는 RPM 방법 보다 다소 어렵고 까다로운 점이 있지만 그 남름다로 장점이 있습니다. 예를 들면
사용자의 임의 설치가 가능합니다. 
여러 프로그램을 함께 연동되도록 하기 위해서는 소스 설치가 불가피한 경우가 많이 있습니다.


준비 과정

- 프로그램 Download할 디렉토리 생성

# mkdir   /temp   [Enter]

- 프로그램 다운받기

Apache  : apache_1.3.22.tar.gz( www.apache.org )
MySQL   : mysql-3.23.49.tar.gz( www.mysql.com )
PHP     : php-4.1.2.tar.gz( www.php.net )

- 기존에 설치된 RPM 삭제

# rpm  -qa  |  grep  apache  [Enter]
# rpm  -e  --nodeps  apache (팩키지이름)

# rpm  -qa  |  grep  mysql  [Enter]
# rpm  -e  --nodeps  mysql (팩키지이름)

# rpm  -qa  |  grep  php  [Enter]
# rpm  -e  --nodeps  php (팩키지이름)
※ -e 옵션으로 삭제가 않되면 의존성을 무시하는 --nodeps 옵션을 사용함.


- 기존에 사용된 디렉토리 및 파일 삭제

# rm -rf  /var/lib/mysql       [Enter]
# rm -rf  /var/www       [Enter]
# rm -rf  /var/log/httpd  [Enter]
# rm -rf  /etc/httpd  [Enter]

1. 설치 순서 MySQL -> PHP -> Apache 2. 압축 풀기 [root]# cd /temp [Enter] [temp]# tar xzvf mysql-3.23.49.tar.gz [temp]# tar xzvf php-4.1.2.tar.gz [temp]# tar xzvf apache_1.3.22.tar.gz [temp]# ls apache_1.3.22 mysql-3.23.49 php-4.1.2 apache_1.3.22.tar.gz mysql-3.23.49.tar.gz php-4.1.2.tar.gz 3. mySQL 설치 [temp]# cd mysql-3.23.49 [Enter] [mysql-3.23.49]# ./configure --prefix=/usr/local/mysql --with-charset=euc_kr ; mysql 설치 위치(/usr/local/myslq) , 한글 사용을 가능하게 (charset=euc_kr) ※ 참고: 설정이 잘못된 경우에는 config.cache 파일을 제거한 후 다시 위 단계를 진행합니다. [mysql-3.23.49]# make // 소스 파일들을 컴파일하는 명령어(약 5~10分 소요) [mysql-3.23.49]# make install // 컴파일된 소스 파일들을 /usr/local/mysql 디렉토리 밑에 설치 MySQL이 설치되었으면 아래와 같이 실행하여 초기테이블을 작성합니다. 초기 테이블에는 MySQL이 데이터베이스를 관리하기 위한 여러 정보 (사용자, mysql 데이터베이스, test 데이터베이스, 사용 권한 등)가 기록됩니다. [mysql-3.23.49]# cd /usr/local/mysql [Enter] // mysql 홈 디렉토리 이동 [mysql]# ls [mysql]# cd bin [Enter] [bin]# ./mysql_install_db 위 명령의 실행 결과 /usr/local/mysql/var라는 디렉토리가 생성되고 다음과 같이 데이터베이스들과 테이블을 위한 파일이 생성됩니다. [bin]# cd ../var [Enter] [var]# ls mysql test [var]# cd mysql [root@localhost mysql]# ls columns_priv.MYD db.MYD func.MYD host.MYD tables_priv.MYD user.MYD columns_priv.MYI db.MYI func.MYI host.MY I tables_priv.MYI user.MYI columns_priv.frm db.frm func.frm host.frm tables_priv.frm user.frm 이제 MySQL 설치는 끝났습니다. MySQL 서버를 기동해 보죠. [bin]# cd /usr/local/mysql/share/mysql [Enter] [mysql] ./mysql.server start [Enter] ※ mysql.server 실행 파일이 MySQL 서버를 시작 시키고 종료시키는 역활을 담당합니다. ./mysql.server start [Enter] // 서버 시작하기 ./mysql.server stop [Enter] // 서버 종료하기 # /usr/local/mysql/share/mysql/mysql.server start [Enter] # chown : mysql : invalid user 020113 23:21:59 mysqld ended 위와 같이 mysql 사용자 존재하지 에러가 발생되면 다음과 같이 mysql 그룹과 사용자를 만들 후 다시 MySQL 서버를 기동합니다. # /usr/local/mysql/share/mysql/mysql.server start [Enter] # groupadd mysql [Enter] // mysql 그룹 추가 # adduser -g mysql mysql [Enter] // mysql 그룹으로 mysql 사용자 생성 [root@localhost var]# Starting mysqld deamon with databases from /usr/local/mysql/var 020113 23:21:59 mysqld ended 위와 같이 MySQL 서버가 작동하지 못하고 종료(ended) 되는 이유는 /usr/local/mysql/var 디렉토리의 소유자와 그룹을 mysql로 변경한 다음 MySQL 서버를 다시 시작하고 MySQL 프로그램을 실행해 봅니다. # cd /usr/local/mysql [Enter] [mysql]# chown -R mysql.mysql var [Enter] // var 디렉토리 소유자와 그룹 변경 [mysql]# ll [Enter] [root@localhost var]# /usr/local/mysql/share/mysql/mysql.server start // MySQL 서버 재 시작 [root@localhost var]# Starting mysqld deamon with databases from /usr/local/mysql/var [root@localhost var]# ps -ef | grep mysql [Enter] // mysql 데몬 실행 확인 # cd /usr/local/mysql/bin [Enter] [bin]# ./mysql [Enter] // MySQL 프로그램 실행 아래와 같이 mysql> 프롬프트가 보이면 MySQL 서버 구축이 성공한 것입니다. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 to server version: 3.23.49 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>_ mysql> show databases; +-----------+ | Databases | +-----------+ | mysql | | test | +-----------+ 2 rows in set (0.20 sec) mysql>quit

4. Apache 초기 설정

PHP에서 apache를 사용할 수 있도록 apache의 환경을 설정해줍니다. [temp] # cd apache_1.3.22 [Enter] [apache_1.3.22] # ./configure

5. PHP 설치

[apache_1.3.22]# cd ../php-4.1.2 [Enter] [php-4.1.2]# ./configure --prefix=/usr/local/php4 --with-mysql=/usr/local/mysql --with-apache=/temp/apache_1.3.22 --enable-track-vars [Enter] ※ php가 설치될 위치를 /usr/local/php4 디렉토리로 지정하고, 기타 mysql 과 apache 프로그램과 연동하여 설치하기 위한 옵션 입니다. [php-4.1.2]# make // 컴파일 [php-4.1.2]# make install // 설치 - 다음으로 php의 환경을 설정해줍니다. /temp/php-4.1.2 폴더내의 php.ini-dist 파일을 /usr/local/php4/lib/php.ini란 이름으로 복사합니다. [/php-4.1.2]#cp php.ini-dist /usr/local/php4/lib/php.ini [Enter] [php-4.1.2]# cd /usr/local/php4/lib [lib]#ls php.ini PHP의 한글 출력문제 해결을 위해 /usr/local/php4/lib/php.ini 파일을 열고 아래와 같이 환경설정 파일을 수정합니다. [/php-4.1.2]# vi /usr/local/php4/lib/php.ini : ;default_charset = "iso-8859-1" 을 default_charset = "euc_kr" 로 바꾸어 줍니다. 맨 앞의 ;(세미콜론)을 제거해야 합니다. 참고로 이 작업은 PHP가 포함된 HTML문서에서 한글을 제대로 출력하기 위함입니다.

6. Apache 설치

[php-4.1.2]# cd ../apache_1.3.22 [Enter] [apache_1.3.22]# ./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a [Enter] ※ apache가 설치될 위치 (/usr/local/apache)를 지정하고 php를 사용하기 위한 옵션을 추가합니다. [/apache_1.3.22]#make [/apache_1.3.22]#make install - 이제 apache 서버의 환경을 설정해야 합니다. /usr/local/apache/conf/httpd.conf 파일을 열고 아래와 같이 설정합니다. [/apache_1.3.22]# vi /usr/local/apache/conf/httpd.conf [Enter] ; User noboby Group nobody <-- 여기 수정 ; #ServerName localhost.localdomain <--- #을 해제 ; #AddType application/x-httpd-php3 .php3 #AddType application/x-httpd-php3-source .phps # # And for PHP 4.x, use; # AddType application/x-httpd-php .php <--- #을 해제 AddType application/x-httpd-php-source .phps <--- #을 해제 - 웹 서비스를 제공하는 httpd 데몬 실행 확인 # ps -ef | grep httpd [Enter] ※ 만약 실행중인 httpd 데몬이 있으면 다음과 같이 데몬을 kill 합니다. # killall httpd [Enter] - 소스로 설치한 아파치 데몬 실행 # cd /usr/local/apache/bin [Enter] // 아파치 홈 디렉토리 밑에 bin 디렉토리로 이동 [bin]# ./apachectl start [Enter] // 아파치 데몬 실행 파일인 apachectl를 시작시킴 ※ 중지는 stop, 재 시작은 restart 입니다. 끝으로 소스로 설치한 데몬이 실행중인가를 확인 합니다. # ps -ef | grep httpd [Enter]

7. 웹 브라우저에서 웹 서버 확인 및 php 연동 확인

- apache 웹 서버 데몬 실행 파일의 위치 /usr/local/apache/bin/apachectl - apache 웹 서버 환경 설정 파일의 위치 /usr/local/apache/conf/httpd.conf - apache 웹 서버의 시작 파일의 위치(index.html) /usr/local/apache/htdocs/ # cd /usr/local/apache/htdocs [Enter] # cp index.html.en index.html // index.html 파일을 생성한다. - 웹 브라우져에서 웹 서버 시작 파일 보기 브라우저을 실행하고 주소란에 http://localhost 라 입력하고 엔터를 친다음 같이 시작 파일의 결과가 보이면 성공입니다.

이어서 php와 apache가 제대로 연동이 되었나 확인 하기 위해서 /usr/local/apache/htdocs 디렉토리에 다음과 같이 test.php 파일을 작성합니다. # cd /usr/local/apache/htdocs [Enter] # vi test.php [Enter] <? phpinfo(); ?> ※ 위 내용을 test.php 파일로 저장한 후 웹 브라우저를 다시 실행한 다음 다음과 같이 주소란에 입력하고 엔터를 쳐보세요. http://localhost/test.php 아래 화면이 나오면 apache와 php가 제대로 연동 되어 성공적으로 설치된 것입니다. 대단히 축카 축카 ~~~~~~~~~~~~~~~(^.^;)

8. MySQL + Apache + PHP 연동확인

- 먼저 소스로 설치한 MySQL 서버 기동하기 # /usr/local/mysql/share/mysql/mysql.server start [Enter] # ps -ef | grep mysqld mysql 456 0 15:09 ? 00:00:00 /usr/local/mysql/libexec/mysqld - 아파치 웹 서버 기동하기 # /usr/local/apache/bin/apachectl start [Enter] # ps -ef | grep httpd nobody 856 0 15:30 ? 00:00:00 /usr/local/apache/bin/httpd - 다음과 같이 테이블을 만들고 자료를 입력합니다. [root@localhost bin]# ./mysql Welcome to the MySQL monitor. Commands end with ; or \g mysql> show databases; // 데이터베이스 보기 mysql> use test; // test 데이터베이스 선택 mysql> create table apm_test ( // 테이블 만들기 -> id varchar(8), -> pass varchar(8) -> ); Query Ok, 0 rows affected <0.00 sec> mysql> insert into apm_test values("kimjs", "123456"); // 데이블에 자료 입력 Query OK, 1 row affected <0.00 sec> mysql> quit - /usr/local/apache/htdocs/db_test.php 라는 파일을 아래와 같이 작성하여 생성합니다. <? mysql_connect("localhost","test",""); $result = mysql_db_query("test","select id, pass from apm_test"); while ($row = mysql_fetch_object($result)) { echo $row -> id; echo " "; echo $row -> pass; } mysql_free_result($result); ?> 웹 브라우저를 실행한 다음과 주소란에 입력한 후 엔터를 치면 [결과] 처럼 나오면 성공입니다. http://localhost/dbtest.php [결 과] kimjs 123456

httpd와 mysqld 데몬 실행 배치 파일 작성

시스템이 부팅된 후 매번 apache와 mysql 데몬을 각각 실행하여 서버를 구동해야 합니다. 이러한 불편함을 막기 위해 일괄적으로 두 개의 데몬을 실행시킬 수 있는 배치 파일을 작성 하는 방법과 아예 처음 부팅되는 시점에서 데몬을 자동으로 시작시키는 방법에 대해서 알아 보겠습니다. - 배치 파일을 작성법 시스템 부팅후 apm.start 파일을 실행하면, httpd와 mysqld 데몬을 실행시키주는 배치 파일을 다음과 같이 만듭니다. [kimjs]pwd [Enter] // kimjs 사용자의 홈 디렉토리에 배치 파일 작성 /home/kimjs [kimjs]# vi apm.start [Enter] #!/bin/sh /usr/local/mysql/share/mysql/mysql.server start /usr/local/apache/bin/apachectl start :wq [kimjs]# chmod 755 apm.start [Enter] # killall mysqld [Enter] // mysql 데몬을 모두 죽임 # killall httpd [Enter] // apache 데몬을 모두 죽임 # ./apm.start // 배치 파일 실행 # ps -ef | grep mysql // 데몬 실행 여부 확인 # ps -ef | grep httpd - 부팅시 자동으로 데몬 실행시키는 방법 Windows에서 자동 배치파일과 비슷한 기능을 제공하는 파일이 /etc/rc.d/rc.local이라는 파일이 다. 그럼 여기서 rc.local 파일에 부팅시 자동으로 실행시킬 데몬을 등록하는 방법과 실행과정을 알아보겠습니다. # vi /etc/rc.d/rc.local [Enter] // apache와 mysql 데몬을 띄우는 명령문 추가 ; /usr/local/mysql/bin/safe_mysqld & ☜ 파일 맨 끝에 2줄 추가(mysql 데몬을 백그라운드로 실행) /usr/local/apache/bin/apachectl start :wq # reboot [Enter] // 시스템 재 부팅 # ps -ef | grep httpd // 재 부팅 이후 데몬 실행 확인 # ps -ef | grep mysqld ※ 위와 같이 시스템이 부팅되면서 특정한 데몬을 자동으로 띄우는 방법은 크게 두 가지로 나누어지는데 1) 소스로 새롭게 설치한 데몬은 '/etc/rc.d/rc.local'에 데몬 실행에 관한 명령문을 추가하여 설정하며 2) 기존에 RPM 팩키지로 설치된 데몬은 '/etc/rc.d/init.d/' 디렉토리에 보관되어 있어 있기 때문에 'Control-panel &' 명령어를 실행한 후 Runlevel Editor 버튼을 클릭하여 해당 데몬을 선택하고 'Add' 버튼을 클릭하여 추가할 수 있습니다.
2009/07/17 20:31 2009/07/17 20:31