이 문서는 2004년도에 기말 과제로 작성된겁니다.


1. 리눅스 기본제공 APM rpm 사용 구동하기

리눅스 전부설치시 사용하기 (RPM으로 APM 설치되어있음)

리눅스 설치시 전부설치를 하면 APM이 설치되어있습니다

우선 아파치가 설치된상태입니다

#rpm -qi httpd 로 버전을 봅시다

버전 2.0.40입니다.


아파치를 실행합니다

       #httpd -k start

       웹 브라우저에서 확인 : 주소창에 http://localhost/를 입력합니다.

잘 나옵니다..

아파치 홈디렉토리인 /var/www/html로 이동하여 index.html를 생성해봅니다

       index.html

       <html><body><center>

       <br><br><br>

       <font size=6>기본적으로 설치된 아파치 서버입니다</font>

       </center></body></html>

한글이 깨져서 나옵니다.


       해결방법은 설정파일(RPM설치시 : /etc/httpd/conf/httpd.conf, 일반설치시 : /etc/httpd.conf)에서

       AddDefaultCharset ISO-8859-1 을

       AddDefaultCharset EUC-KR 로 바꾼후

       아파치 리스타트(httpd -k restart)하시면 됩니다.


       이제 웹브라우저를 refresh하면 잘나옵니다

만약 그대로라면 브라우저 환경설정->고급->캐시에서

       캐시된 페이지와 웹 페이지의 비교를 페이지를 열 때마다 에 체크해주세요.

       (전 mozilla 1.2.1 을 사용 합니다)

이제 php가 되는지 한번 해봅시다.

       우선 설치/버전 확인합니다. (#rpm -qi php)

       4.2.2버저이 설치되어있군요


php가 제대로 동작하는지 보기위해 홈디렉토리(/var/www/html)에 index.php를 만듭니다.

       <html><body><center>

       <br><br><font size=6>간단한 php문 테스트</font><br>

       <?

       $str = "hi man, am aaa";

       echo("$str");

       echo "<br>";

       echo $str;

        ?>

       </center></body></html>


       웹브라우저에선 http://localhost/index.php 하면 나오겠죠

       php설정이 안되있다면 php코드(<? ... ?>)도 같이 나올테죠

       함 봅시다~

잘나오네요.. php설정까지 잘 되어있습니다.


그럼 이제 mysql 테스트.

       설치정보를 확인합니다.(#rpm -qi mysql)

       버전은 3.23.54a네요


rpm으로 설치되어있기때문에

/etc/init.d/mysqld start 하면 mysql이 시작됩니다

보통 /usr/bin/safe_mysqld --user=root & 로 실행시키면 대부분 mysql.socket에 대한 에러가 나옵니다.

이는 소켓파일(/var/lib/mysql/mysql.sock 혹은 /tmp/mysql.sock)과 폴더에대한 소유권한이

mysql에 없기때문으로 소유권과 그룹을 mysql.mysql로 바꿔줘야 합니다.

하지만 /etc/init.d/mysqld start로 하면 소켁파일에 대한 소유권한을 자동으로 바꿔줍니다

mysql에 연결합니다. (#mysql -u root -p )

mysql> show databadses; 명령어를 치면 기본으로 제공하는 데이타베이스가 보입니다.

       mysql DB는 기본적으로 제공하는 DB이니 지우면 안됩니다.(사용자 계정 등에 대한정보 등..)


       그럼 test DB로 접속합시다

       mysql> use test; 로 test DB로 들어갑니다.


       mysql> show tables; 로 현재 DB에 들어있는 table을 확인합니다.


       Empty set(0.00sec) 이라고 나옵니다.

       현재 생성된 테이블이 없고 show tables; 명령어를 실행하는데 걸린 시간이 0.00초라고 나옵니다.

       아무것두 없으니 역시 빠릅니다.


       DB작업에 대한 간단한 명령어로는

       DB생성 : mysql> create database DB명 ( or % mysqladmin -u root -p create DB명 )

       DB삭제 : mysql> drop database DB명

       DB사용 : mysql> use DB명 (사용할 default database 선택)

       DB변경 : mysql> alter database db명 DEFAULT CHARACTER SET charset (4.1이상에서만 가능)


test용으로 aaa 테이블을 만듭니다.

       mysql> create table aaa(

           -> id int,

           -> name varchar(30),

           -> memo varchar(100)

           -> );

       Query OK, 0 rows affected (0.00 sec)


       생성이 잘 됐나 확인합니다.

       mysql> desc aaa;

       +-------+------------+------+-----+-------------+-----+

       | Field | Type        | Null | Key  | Defaul        | Extra |

       +-------+------------+------+-----+-------------+-----+

       | id   | int(11)     | YES |      | NULL        |       |

       | name | varchar(30) | YES |      | NULL        |       |

       | memo | varchar(100) | YES  |      | NULL        |       |

       +-------+------------+------+-----+-------------+-----+

       3 rows in set (0.01 sec)


       웹에서 출력을 위해 자료를 몇개 입력하겠습니다.

         INSERT INTO  aaa(id, name, memo) VALUES (1,'who','나야나~');

         INSERT INTO  aaa(id, name, memo) VALUES (2,'누구세요','저도 잘 몰라요.어쨌든 방가~');

         INSERT INTO  aaa(id, name, memo) VALUES (2,'넌 누구냐','root님이시다 ~');


이제 quit 명령어로 mysql을 종료합니다.

       mysql> quit


아까 만들었던 index.php를 수정합니다.

       다음과 같이 수정합니다.

       <html><body><center>

       <br><br>

       <font size=6>간단한 php문 테스트</font><br>

       <?

       $db_host = "localhost";     $db_id = "root";     $db_passwd = "";     $db_database = "test";

                                             

       $dbconn = mysql_connect("$db_host","$db_id","$db_passwd")

         or die("데이터베이스 연결에 실패하였습니다.");

       $status = mysql_select_db($db_database,$dbconn);

       $query = "select * from aaa";

       $result = mysql_query($query,$dbconn);

       $rows = mysql_num_rows($result);

       ?>

       <table width=400>

       <tr>    <td>id</td><td>name</td><td>memo</td>      </tr>

       <?

       for ($i=0; $i<$rows; $i++) {

               $id = mysql_result($result,$i,0);

               $name = mysql_result($result,$i,1);

               $memo = mysql_result($result,$i,2);

       ?>

       <tr><td><?echo($id);?></td><td><?echo($name);?></td><td><?=$memo?></td></tr>

       <?   }   ?>

       </table></center></body></html>


웹브라우저에서 index.php파일을 확인해봅니다.

좀전에 insert 한 데이터들이 잘 나오는것을 확인할 수 있습니다.


       이상으로 리눅스 기본 APM rpm을 구동해봤습니다. 이제 rpm을 지우고 소스를 받아 설치해봅니다.




2. 기본설치된 APM rpm 제거후 컴파일 설치

기존 APM rpm을 삭제합니다.

       삭제하기 위해서 APM프로세서가 동작중인지 확인하고 중단시킵니다.

       # ps -aux | grep apache

       # ps -aux | grep mysql

       # ps -aux | grep php

       # killall httpd



이제 설치된 rpm을 지웁니다.

       # rpm -e --nodeps apache

       # rpm -e --nodeps mysql

       # rpm -e --nodeps php

       --nodeps는 강제삭제 옵션입이다.(의존성 무시)



APM을 설치하기위해

       http://www.apache.org/

       http://www.php.net/

       http://www.mysql.com/

       에서 리눅스9용 소스파일을 다운받습니다.


http://www.apache.org/ 에서 아파치를 다운받습니다.

       apache_1.3.33.tar.gz 을 받았습니다.


http://www.mysql.com/ 에서 mysql을 다운받습니다.

       mysql-4.1.8.tar.gz(소스파일) 을 다운받았습니다.


http://www.php.net/ 에서 php 를 다운받습니다.

       php-5.0.3.tar.bz2 을 다운받았습니다.


       최신버전을 다 받았습니다.

       이제 압축을 풀고 설치에 들어갑니다.


       대게 설치파일은 source, rpm, binary로 3가지를 제공합니다.

       리눅스 설치시에 rpm으로 설치되었고 rpm설치는 쉬우니 rpm은 안받고..

       학습이 목표이기때문에 make도 해볼겸 source로 받았습니다.



===== MYSQL 설치 =====

1. mysql 압축파일을 풀고 /usr/local/ 폴더로 옮깁니다.

       # tar xvfz mysql-4.1.8.tar.gz

       # mv ./mysql*/ /usr/local/mysql/


2. /usr/local/mysql/ 폴더로 이동합니다.

       # cd /usr/local/mysql


3. 환결설정을 위해 configure를 실행합니다.

       prefix는 프로그램이 설치된 디렉토리를 지정하고

       --with-charset 옵션은 DB에서 사용할수 있는 언어입니다.

       한글 지정을 안하면 한글이 깨집니다.

       # ./configure --prefix=/usr/local/mysql --with-charset=euc_kr


4. make 명령어를 실행 합니다.(컴파일)

       # make

       직접 해본결과 2가지의 에러와 만났습니다.


       - 첫번째 에러 메세지 :

         make: *** No targets specified and no makefile found. 멈춤."


         해결 :

         이런 메세지가 나온다면 우선 바이너리 파일을 받은건 아닌지 확인합니다.

         바이너리 파일이라면 mysql폴더 안에 INSTALL-BINARY이란 파일이 있을겁니다.

         이 파일을 실행하여 설치하던가 아니면 mysql사이트에서 새로 소스 파일을 다운 받아야합니다.


       - 두번째 에러 메세지 :

         ......

         checking whether build environment is sane... configure : error :

         newly created file is older than distributed files!


         check your system clock


         해결 :

         첫번째 에러를 해결한후 make하니 이렇게 나오는군요.

         이는 시스템 clock 시간이 받은 파일이 패키징 된 날짜보다 과거이기 때문에

         발생하는 에러입니다.

         이럴땐 수업시간에 배운 "# rdate -s time.bora.net && clock -w" 명령어로

         시스템 시간을 동기화 시켜준후 다시 make 하시면 정상적으로 컴파일 됩니다.


       정상적으로 수행됐다면 마지막에

       "Thank you for choosing MySQL!" 메세지가 출력됩니다.


5. make install 명령어를 실행합니다.(설치)

       # make install

       make했으니 이제 설치합니다.


6. mysql_install_db 명령어로 mysql의 기본 데이타베이스를 생성합니다.

       # ./scripts/mysql_install_db

       사용자 정보등 mysql의 기본정보들을 담는 DB를 생성해줍니다. 딱 한번만 실행합니다.


7. 백그라운드로 mysql 데몬을 실행합니다.

       # ./bin/mysqld_safe &

       이전버전에선 safe_mysqld였는데 safe_mysqld로 바꼈네요..

8. 정상적으로 작동하는지 mysql에 접속해봅니다.

       # ./bin/mysql mysql

       - 에러 :

         " #./safe_mysqld & " 명령실행시 mysqld ended가 나오는 경우가 있습니다.

         정상적으로 실행되지 않고 종료됐음을 나타냅니다.

         혹은 mysql실행하면 아래와 같은 에러가 나올때도 있습니다.

         “ ERROR 2002 (HY000): Can't connect to local MySQL server through

         socket '/tmp/mysql.sock' (111) “


         해결 :

         이럴땐 우선

         # groupadd mysql 로 mysql 그룹을 만들어주고

         # useradd -g mysql mysql로 mysql 사용자를 만들어줍니다.

         이미 생성되어있다고 나오면 안하셔도 됩니다.


         그후에

         # chown -R root /usr/local/mysql/ 과

         # chown -R mysql /usr/local/mysql/var 명령어로

         권한을 줍니다. 이리하시면 에러가 해결됩니다.

         /usr/local/mysql/var 는 mysql의 데이터가 쌓이는 폴더입니다.


9. mssql 설치를 완료했습니다.

       접속해보니 잘되는군요. ./scripts/mysql_install_db명령어에 의해 생긴

       기본 데이터 베이스 mysql과 test도 잘 있습니다.



===== APACHE 와 PHP 설치 =====

1. apache 압축 파일을 풀고 /usr/local/ 폴더로 옮깁니다.

       # tar xvfz apache_1.3.33.tar.gz

       # mv ./apache*/ /usr/local/apache/


2. php 압축 파일을 풀고 /usr/local/폴더로 옮깁니다.

       # tar xvfj php-5.0.3.tar.bz2

       # mv ./php*/ /usr/local/php/


3. apache 폴더로 이동합니다.

       # cd /usr/local/apache


4. configure

       # ./configure --prefix=/usr/local/apache --enable-module=most --enable-shared=max

       apache의 경로와 dso 모드로 설치를 뜻합니다.(dso모드가 확장이 쉬움)


5. 컴파일 합니다.

       # make


6. 설치합니다.

       # make install

       설치가 잘돼었군요.

       apache 설정파일인 httpd.conf의 경로와 아파치 실행방법을 예의바르게 보여주고 있습니다.


7. php 폴더로 이동합니다.

       # cd /usr/local/php


8. configure

       # ./configure --with-apxs=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql

       mysql의 경로와 apache의 apxs 파일 경로를 설정해줍니다.

       이때 apache의 conf에 자동으로 모듈을 올려줍니다.


       php configure도중 에러가 발생했습니다.

       - 에러 메세지 :

         .....

         onfiguring extensions

         checking whether to enable LIBXML support... yes

         checking libxml2 install dir... no

         configure: error: libxml2 version 2.5.10 or greater required.


         해결 :

         libxml2 가 필요하다고 나오는군요.. 2.5.10 버전

         http://xmlsoft.org/sources/ 에서 다운받을수 있습니다.

         php 5.0.3을 설치하려면 libxml2가 필요한것 같습니다.(5.0부터 적용)


         http://xmlsoft.org/sources/에서

         libxml2-2.6.16-1.i386.rpm

         libxml2-devel-2.6.16-1.i386.rpm

         libxml2-python-2.6.16-1.i386.rpm

         위 3개를 다운 받습니다. (php 5.0 부턴 xml라이브러리를 설치하셔야 합니다.)


         rpm을 설치합시다.

         # rpm -Uvh libxml2*

         이제 libxml2도 깔았으니 다시 configure 해줍시다.


         이제 성공적으로 설치가 되었습니다.

         Thank you for using PHP랍니다. 에러 안나서 저도 너무 감사했습니다.


9. 컴파일 합니다.

       # make


10. 설치 합니다.

       # make install


11. php.init-dist파일은 php에 대한 기본 설정 파일입니다.

       이파일을 /usr/local/lib/ 폴더에 php.ini로 복사하여 php설정이 적용되도록 합니다.

       # cp php.ini-dist /usr/local/lib/php.ini


12. 이제 설치가 다 되었습니다.


       어렵습니다. 여기까지 오는데 make만 20번 이상 한것 같습니다.

       최신버전이기 때문에 그런걸까요? 설치 순서도 다른분들이 말하는거랑 틀린부분도 많고 어렵군요.


       php가 제대로 구동하도록 apache폴더에 conf안에 있는 httpd.conf 파일에 다음을 추가합니다.

       <IfModule mod_dir.c>

            DirectoryIndex index.html index.php

       </IfModule>

       #      DirectoryIndex는 각 폴더에 우선적으로 보여줄 파일입니다.

       AddType application/x-httpd-php .php .htm .html

       AddType application/x-httpd-source .phps

13. apache를 실행시켜 보겠습니다.

       # /usr/local/apache/bin/apachectl start


이상으로 APM 설치가 완료되었습이다.


       웹브라우저로 확인해보겠습니다.

       mozilla를 실행시켜 주소창에 http://localhost/를 적습니다.

       아직 index.html이나 index.php 파일을 안만들었기에 이렇게 나오는군요.

       안되는줄 알고 깜짝 놀랬습니다.(왼쪽 그림)

       이후는 처음에서 해보았던 php와 mysql 테스트와 동일합니다.(오른쪽 그림)

       잘되는군요.



'가지가지' 카테고리의 다른 글

UDP  (0) 2006.06.19
Motor Position (Modeling, PID, Root Locus)  (0) 2006.06.16
Qt 실행시 "세그멘테이션 오류" 잡기  (0) 2006.05.23
linux에서 DHCPd사용시 인터넷이 안될때 설정  (0) 2006.05.23
Sendmail 사용 - 2004년 2학기  (0) 2006.05.23
NTFS Mount  (0) 2006.05.22
Ethereal TCP/UDP 3,4,5  (0) 2006.05.21
Ethereal TCP/UDP 1,2  (0) 2006.05.21