'공부하고(?)/Linux'에 해당되는 글 22건

블로그 정리중 글옮김 (2009년 3월 26일 글)

 

1.Packet Filtering
Packet Filtering은 네트워크상의 특정 호스트나 라우터를 지나가는 패킷의 헤더를 보고 전체 패킷의 폐기나 사용에 관한 것을 결정하는 것을 말합니다. Packet Filtering은 패킷을 'DROP'시키거나, 'ACCEPT'시키거나 ‘DENY'할 것인가를 결정합니다. 여기에서 말하는 DROP, ACCEPT, DENY의 뜻은 다음과 같습니다.

DROP : 패킷에 대한 어떠한 정보도 되돌려 주지 않고 폐기 해버리는 것입니다.
DENY : DROP처럼 패킷을 폐기 하기는 하지만, 폐기된다는 것을 송신 측에 전달합니다.
ACCEPT : 위에서 설명한 DROP이나 DENY와는 다르게 패킷을 수용하는 것입니다.

리눅스에서는 패킷 필터링이 리눅스 커널 내부에 구성됩니다. 커널을 재구성할 때 netfilter에 관련된 옵션들을 설정해주면 패킷 필터링을 위한 환경이 마련됩니다. 우리가 사용하게 될 iptables는 리눅스 커널의 모듈로서 동작하게 됩니다.

2. Packet Filtering의 이유
패킷을 필터링 하는 이유는 여러 가지가 있을 수 있겠지만, 크게 그 이유를 정해본다면, 네트워크의 제어와 보안 그리고 감시가 그 이유가 될 수 있습니다. 여기서 말하는 제어,보안,감시에 대해서 좀 더 자세히 살펴보도록 하겠습니다.

먼저 네트워크 제어라는 것은, 내부 네트워크에서 다른 네트워크로 또는 외부 네트워크에서 내부 네트워크로 접속을 하고자 했을 때 어떤 형태의 접속은 가능하게 하고 또 다른 형태의 접속은 불가능하게 해야 될 때가 있습니다. 간단한 예를 들어 보면, 인터넷을 사용하다 보면 불필요한 광고나 유해한 것들이 우리들을 짜증나게 만들거나 때로는 시스템의 자원을 낭비하게 만들 때가 있습니다. 그런 경우에 특정 사이트나 주소에서 전송되어 오는 패킷을 거부하도록 패킷 필터링을 설정 해두면 더 이상 그런 광고들로부터의 스트레스는 받지 않아도 될 것 입니다. 이것이 네트워크 제어라고 볼 수 있습니다.

그리고 네트워크 보안이라는 것은, 말 그대로 네트워크 보안입니다. 커다란 네트워크에서 자신의 네트워크를 허용되지 않은 침입이나 공격으로부터 네트워크를 보호하거나, 자신의 네트워크에서 외부로 정보가 유출되는 것을 막는 것을 말합니다.  예를 들어 보면, DOS공격과 같은 특정 네트워크를  향한 공격을 패킷 필터링을 통하여 해결 할 수 있습니다. 물론 완벽한 보안은 불가능 하겠지만, 패킷 필터링을 함으로 해서 보안위협에서 조금이나마 안전해 질 수 있습니다.

네트워크 감시는 위에서 언급한 제어나 보안에 포함 됩니다. 네트워크의 설정이 잘못 되거나 잘못된 패킷이 전달 될 경우에는 패킷 필터링을 통해 그 네트워크를 감시하고 잘못된 패킷에 대한 정보를 알 수 있습니다. 예를 들어서, 잘못된 설정의 네트워크가 쏟아내는 정보들이 네트워크 자원을 독점하게 되거나 트랙픽을 증가시키게 되면 네트워크가 마비 될 수도 있습니다. 그러한 것을 미리 미리 살펴보고 감시를 통해서 이런 것들을 방지할 수 있습니다.

3. 리눅스에서 Packet Filtering 방법
리눅스는 커널버전 1.1부터 패킷 필터링을 포함하기 해서 커널 버전 2.2에서는 ipchains, 그리고 지금 많이 사용되고 있는 2.4버전에서는 iptables이 있습니다.

패킷 필터링을 위해서는 netfilter를 포함하고 있는 커널이 필요합니다. netfilter라는 것은 iptables와 같은 프로그램이 모듈로 작동할 수 있도록 해주는 것입니다.  netfilter는 2.3.15 이상의 리눅스 커널에 들어있으며 커널 설정에서 CONFIG_NETFILTER을 설정 해주어야 됩니다. 즉,netfilter 관련 항목을 설정해주면 됩니다. iptables라는 프로그램은 커널에게 어떤 패킷을 필터링할 것인지에 대해서 알려줍니다. 그러면 커널이 정해진 규칙에 따라서 패킷을 필터링 하게 됩니다.

4. iptables를 이용한 패킷 필터링 방법
iptables를 사용하는 커널은 'filter',''nat','mangle' 세 개의 테이블을 가지고 있습니다. 특별한 지정이 없이 iptables를 사용하면 filter 테이블을 기본적으로 사용하게 됩니다. 여기서 말하는 세 개의 테이블은 각각 다음과 같은 것을 담당합니다.

filter : 패킷 필터링 관련 테이블
nat : 목적지나 출발지 정보를 변경관련 테이블
mangle : 패킷의 특성을 변경하거나 지정하는 것에 관련된 테이블(TTL,TOS)

filter 테이블에는 필터링 때 사용되는 세 개의 체인 INPUT, OUTPUT, FORWARD 가 존재 합니다. 여기서 말하는 체인이라는 것은, 패킷의 이동경로를 말합니다. 이 체인에는 패킷을 필터링 하는 규칙들이 지정되게 되는데, 그 것을 룰(rule)이라고 합니다. 이 룰에 따라 패킷을 필터링 하게 됩니다.

리눅스의 iptables는 다른 사용에 관한 문서가 필요 없을 만큼의 자세한 메뉴얼 페이지를 제공합니다. man iptables 해보시면 자세한 매뉴얼을 보실 수 있습니다.

iptables는 모듈로 되어있을 것입니다. 모듈은 iptable_filter.o 입니다. 모듈은 처음 iptables를 실행할 때 자동으로 로드 되는 것입니다. 리눅스가 커널을 재설정할 수 있는 특징이 있듯이 iptables의 모듈도 커널에 포함 시킬 수 있습니다. lsmod 해서 모듈 구성정보를 보시면 iptables관련 모듈들이 적재되어 있는 것을 보실 수 있습니다.

iptables 명령이 실행되기 전에는 기본적으로 만들어져있는 체인에는 아무런 규칙도 없는 빈 체인입니다. 간혹 특정 배포판 같은 경우에는 기본적으로 방화벽 옵션을 설정해두는 경우가 있습니다. 그때는 사용자가 수정해서 사용할 수 있습니다.

5.필터링 규칙
iptables의 규칙(rule)은 패킷이 일치되어야 할 상태를 설정하고, 일치되었을 때 어떤 작업(j)을 할 것인가를 나타냅니다. 예를 들어서, 로컬 호스트 127.0.0.1로부터의 모든 ICMP 패킷을 DROP하기 위해서는 target을  ICMP로 하고 소스 IP는 127.0.0.1이 됩니다. 그리고 해야 할 작업은 DROP입니다.

127.0.0.1 은 'loopback' 인터페이스라고 하는 것인데, 실재 네트워크 접속이 전혀 없더라도 이 아이피는 가지고 있습니다. ICMP 패킷은 'ping' 프로그램을 이용해서 생성할 수 습니다. (ping은 ICMP의 echo-request를 보내고 그 응답을 받습니다.)

다음의 예제를 보면서 살펴보도록 하겠습니다.
root@slug>#ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.1 ms

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.2/0.2/0.2 ms

root@slug>#iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
root@slug>#ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 0 packets received, 100% packet loss
root@slug>#_


위의 예제를 보면, 처음으 ping은 성공해서 손실이 없었습니다. 그러나 iptables에서 icmp패킷을 DROP하도록 설정한후에는 ping이 100% 손실했다고 보여줍니다. 여기서 -c 옵션은 하나의 패킷만 만들어 보내는 것입니다.

위에서 사용된 iptables의 명령어의 뜻은 다음과 같습니다.
iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
-->“filter table의 INPUT체인의 제일 마지막에 새로운 규칙을 추가하라. 그 추가하는 규칙은 출발지의 아이피가 127.0.0.1이고 그 프로토콜은 icmp(ping이 사용하는 프로토콜)이고, 그 프로토콜을 통해서 오는 모든 패킷은 DROP(폐기하고 그 폐기 정보를 보내지 않는다.”

후에 이 규칙을 제거해야 될 필요가 있다면 두 가지 방법으로 그 규칙을 제거 할 수 있습니다. 규칙을 제거하는 첫 번째 방법은, 입력체인에 있는 규칙의 순서를 보고 그 순서의 규칙을 제거하는 방법이 있습니다. 예를 들면 다음과 같습니다.
root@slug># iptables -D INPUT 1
--> filter table의 INPUT체인의 첫 번째 규칙을 제거하라.

두 번째 방법은 규칙을 추가할 때 사용한 -A 옵션을 그냥 -D로 바꿔주면 됩니다. 자신이 설정했던 규칙이 몇 번째인지 알 수 없을 때 사용합니다. 예를 들면 다음과 같습니다.
root@slug># iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP

6. 필터링 지정 
① 출발지와 목적지
출발지(-s, --source)와 목적지(-d, --destination) IP 주소를 지정하는데 4가지 방법이 있습니다. 첫 번째 방법은  'slug.skku.ac.kr' 이나 'localhost' 와 같이 도메인 네임을 이용하는 것입니다. 두 번째 방법은 '127.0.0.1' 과 같이 IP 주소를 이용하는 것입니다. 세 번째와 네 번째 방법은 IP 주소의 네트워크를 지정하는 것으로 '192.168.1.2/24' 또는 '192.168.1.2/255.255.255.0'같은 형태입니다. 이 두가지 표현 방법들은 모두 192.168.1.0부터 192.168.1.255 사이의 모든 IP 주소를 지정하는 것입니다. '/' 다음의 숫자는 IP 주소의 어떤 부분까지가 의미 있는가를 나타내는 것입니다.

root@slug>#iptables -A INPUT -s 0/0 -j DROP
--> 0/0에서 오는 모든 패킷들을 DROP하라. 0/0은 모든 네트워크가 됩니다.

② 프로토콜의 지정
iptables에서는 특정 프로토콜을 '-p' 옵션을 사용하여 지정할 수 있습니다.

③ 인터페이스 장치 지정
인터페이스 장치는 두 가지가 있습니다. 그 둘은 ‘-i’와 ‘-o’가 있는데,'-i'('--in-interface')는 들어오는 인터페이스 장치를 말하는 것이고, '-o'('--out-interface')는 나가는 인터페이스 장치를 말합니다. 인터페이스 장치의 예로는 eth0과 같은 네트워크 인터페이스 카드 디바이스가 되겠습니다.

참고>인터페이스 장치 이름이 '+'로 끝나는 경우도 있는데, 이것은 지정한 이름으로 시작하는 모든 인터페이스 장치를 모두 지정할 때 사용됩니다.

⑤ 타겟 지정 
필터에 일치 하는 패킷을 어떻게 처리 할 것인지에 대해서 지정하는 것을 타겟 지정이라고 합니다. 타겟의 예로는 DROP, DENY, ACCEPT, LOG 등등이 있습니다.

7. 요약
iptables의 기본적인 사용법은 다음과 같습니다.
iptables [-t 테이블] [명령어] [매칭옵션]
테이블은 filter, nat, mangle 세 개가 있으며, 명령어에는 -F, -A, -D, -I, -R, -N, -X 등 여러 가지가 있습니다. 각 명령어의 의미는 맨페이지를 참고하시면 됩니다. 위의 명령어중 자주 사용되는 멸령어는 -F (Flush : 체인을 비움), -A(Append : 체인에 룰 추가), -D(Delete : 체인의 룰 삭제) 등이 있습니다. 매칭 옵션은 위에서 언급 했던 것 처럼 일일이 언급하기 어려울 정도로 많이 있습니다. 지정된 매칭 옵션에 따라 해당 명령어를 지정 테이블에 실행 한다고 생각 하시면 됩니다.

예를 들어서 인터넷 공유에 사용되는 마스쿼레이딩 같은 경우는 다음과 같습니다.
#!/bin/sh
echo "1" > /proc/sys/net/ipv4/ip_forward 
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
/sbin/iptables -A INPUT -i eth0 -j ACCEPT 
/sbin/iptables -A OUTPUT -o eth0 -j ACCEPT


위의 예제에서 보면 제일 첫 라인은 쉘스크립트를 작성할 때 사용되는 것과 같은 일반적인 것입니다. 두 번째 라인의 에코문은 커널 레벨에서 아이피 포워딩을 해줄수 있도록 하기 위해서 그 셋팅을 ‘1’ 로 해주는 것입니다. 아이피 포워딩이 되지 않으면 내부의 사설 네트워크에 있는 호스트들은 외부로 접속할 수가 없습니다. 세 번째 라인의 iptables문은 "nat테이블에 포스트라우팅체인에 룰을 추가하는데, 그 룰은 외부로 나가는 인터페이스는 eth0에 MAQUERADE를 하게 하라.“ 라는 규칙을 적용하고 있습니다. 마스쿼레이딩은 인터넷 공유시에 많이 사용되는 방법입니다. 네 번째 라인과 다섯 번째 라인은 없어도 무방하지만, 이해를 돕기 위해서 추가하였습니다. 네 번째 라인은 ‘filter 테이블의 INPUT체인에 룰을 추가하는데, 그 룰은 들어오는 인터페이스 eth0에게 모든 패킷을 ACCEPT하게 하라.”라는 규칙을 적용하고 있습니다. 마찬가지로 다섯 번째 라인에서는 ’ filter 테이블의 OUTPUT체인에 룰을 추가하는데, 그 룰은 나가는 인터페이스인 eth0의 모든 패킷들을 ACCEPT하라.“라는 규칙을 적용하고 있습니다.

위의 예제만 이해하신다면 다른 필터링 규칙을 적용하실 수 있을 것입니다. 

블로그 이미지

커뉴

이 세상에서 꿈 이상으로 확실한 것을, 인간은 가지고 있는 것일까?

,

블로그정리중 글 옮김(2009년 3월 26일 글)

 

Apahche + PHP + MySQL을 같이 잘 맞물리게 해서 홈페이지나 사이트를 구축할때 게시판이나 각종 데이터 베이스 처리가 필요 할때, 보다 수월하게 사용할 수 있습니다.

Apache라는 것은 웹서버를 말하는 것인데, 지금 우리가 접할 수 있는 거의 대부분의 웹서버에서는 아파치를 사용하고 있습니다. 아파치는 1.X버전과 2.X버전 두가지 부류로 나뉘어 지는데, 그 설치 방법과 운영방법이 크게 다르기 때문에 설치 방법이나 운영방법에 대해서 잘 익힌 다음에 설치 하도록 해야 됩니다.
http://www.apache.org

PHP는 펄이나 CGI 프로그램 처럼 서버에서 정해진 작업을 한 다음에 클라인언트로 그 결과를 보내주는 언어 입니다. 그 사용방법이나 구조등이 C언어와 유사하기 때문에 많은 CGI프로그래머들이 PHP로 방향을 전환하게 되었고, 지금은 아주 많은 분야에서 사용되고 있습니다. 쇼핑몰의 구축이나 데이터 베이스등의 관리 여러가지 작업을 할 수 있는 반면 사용법이 아주 쉽기 때문에 널리 확산되었습니다.
http://www.php.net

MySQL은 데이터 베이스를 처리하는 프로그램입니다. 
http://www.mysql.com

그러면 위의 세가지 프로그램을 연동 시켜 보기로 합시다.
첫번째는 Apache 1.3.XX + PHP + MySQL 방법에 대해서 이야기 해보겠습니다.

MySQL은 아파치의 버전에 상관없이 그냥 설치 해도 됩니다.

MySQL의 설치 방법

1.다운로드
MySQL 사이트에서 Stable Version 소스 코드를 다운로드 합니다.(예:mysql-4.0.13.tar.gz)

2.Linux Box의 적당한 디렉토리에 저장해둡니다.(예;/var/tmp)

3.tar과 gunzip로 패키징 되어 있는 파일이므로 압축을 해제합니다.
  어떤 파일인지 확실히 확인해 보시기 위해서는 "file 파일명" 명령으로 확인해보시면 됩니다.
  [root @linux]#pwd   --> 현재 디렉토리 확인
  /var/tmp

  [root @linux]#ls    --> 어떤 파일이 있는 지 확인
  mysql-4.0.13.tar.gz

  [root @linux]#tar xvfz mysql-4.0.13.tar.gz --> 압축해제
  ..................
  ..................
  ..................

  [root @linux]#ls
  mysql-4.0.13      mysql-4.0.13.tar.gz  ---> 새로운 디렉토리가 생겼음

  [root @linux]#cd mysql-4.0.13 --> MySQL의 소스파일이 있는 디렉토리로 이동.

4. 컴파일을 하기 위한 환경파일 Makefile들을 생성합니다.
  [root @linux]#./configure --prefix=/usr/local/mysql --with-charset=euc_kr --localstatedir=/DB
  make라는 유틸리티를 이용해서 컴파일 하기 때문에 make환경설정을 해주어야 됩니다.
  --prefix= 은 컴파일 후에 설치할 디렉토리를 지정하는 것입니다.(/usr/local/mysql이라는 디렉토리에 설치)
  --with-charset=euc_kr 어떤 문자셋으로 설정 할 것인지 지정합니다.(euc_kr :한국어)
  --localstatedir=/DB   데이터 베이스 파일들을 어디에 저장할 것인지를 지정합니다.(/DB라는 디렉토리에 저장.)
  이것은 일반적인 방법이고 좀더 다양한 옵션들을 지정해 줄 수도 있습니다.
  그것들에 대한 설명은 MySQL 문서들을 참고 하시면 됩니다.
  프렌존 서버는 다음과 같은 옵션으로 컴파일 되어있습니다.
  --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --prefix=/usr/local/mysql --with-charset=euc_kr --localstatedir=/DB

  성공적으로 작업이 끝나면 감사 메세지가 나옵니다. 안나오면 비정상이므로 다시 한번 확인해주시길 바랍니다.

5.make를 이용한 컴파일 및 설치
  [root @linux]#make --> 컴파일 합니다.
  [root @linux]#make install --> 설치 합니다.
  [root @linux]#cd /usr/local/mysql 
  파일이 다 만들어 져 있으면 일단 컴파일 및 설치는 끝난것입니다.

6.mysql 사용자 추가
  MySQL은 root권한으로 돌아가지 않고 mysql user의 권한으로 돌아가게 됩니다. 그렇기 때문에 시스템에 mysql이라는 사용자를 추가하고 패스워드를 설정해야 됩니다.
  최대한 어려운 패스워드를 설정해두면 나중에 보안상의 문제를 조금이나마 막을 수 있습니다.
  [root @linux]#useradd mysql -->사용자 추가(로그인 쉘등을 지정해서 로그인이 안되도록 설정해두는것도 좋습니다.)
  [root @linux]#pass mysql -->패스워드 설정.
  New password:
  
7.데이터 베이스가 저장되는 디렉토리의 소유자 및 그룹을 mysql로 변경.
  [root @linux]#chown -R mysql:mysql /DB --> /DB에 파일을 저장하기로 했으므로, 그 소유자와 그룹을 mysql로 설정합니다.

8.MySQL기본 권한 테이블을 설정
(스크립트가 제공 되기 때문에 한번 만 실행 시켜 주면 됩니다.)
  [root @linux]#cd /usr/local/mysql
  [root @linux]#./bin/mysql_install_db --> 때로는 scripts라는 디렉토리 밑에 있는 경우도 있습니다.

9.데이터 베이스 데몬을 실행
  [root @linux]#cd /usr/local/mysql
  [root @linux]#./bin/mysqld_safe & --> 백그라운드로 데몬을 실행 시킵니다.
  [root @linux]#ps -ef | grep mysqld --> 실행이 잘 되고 있는 지 확인.
  mysql      768   738  0 Jul10 ?        00:00:00 /usr/local/mysql/libexec/mysqld
  mysql      770   768  0 Jul10 ?        00:00:00 /usr/local/mysql/libexec/mysqld
  mysql      771   770  0 Jul10 ?        00:00:00 /usr/local/mysql/libexec/mysqld
  mysql      772   770  0 Jul10 ?        00:00:00 /usr/local/mysql/libexec/mysqld
  mysql      773   770  0 Jul10 ?        00:00:00 /usr/local/mysql/libexec/mysqld
  mysql      774   770  0 Jul10 ?        00:00:00 /usr/local/mysql/libexec/mysqld
  mysql      779   770  0 Jul10 ?        00:00:00 /usr/local/mysql/libexec/mysqld
  mysql      780   770  0 Jul10 ?        00:00:00 /usr/local/mysql/libexec/mysqld
  mysql      781   770  0 Jul10 ?        00:00:00 /usr/local/mysql/libexec/mysqld
  mysql      782   770  0 Jul10 ?        00:00:00 /usr/local/mysql/libexec/mysqld
  
  만약에 실행이 되지 않고 에러가 나온다면 /DB 디렉토리로 이동해서 error 로그 파일을 열어보시면, 그 원인이 적혀 있습니다.
  읽어보신 후에 적절한 조치를 취해주시면 됩니다.

10.MySQL 관리가 패스워드 설정
  [root @linux]#cd /usr/local/mysql
  [root @linux]#./bin/mysql -u root
  mysql>SET PASSWORD for root=password('password');
  mysql>exit


PHP 설치
다음 단계는 Apache 1.3.XX 버전을 사용하기로 했기때문에 PHP와 연동을 위해서 Apache의 환경 설정을 먼저 한번 해주어야 됩니다.

[root @linux]#cd /var/tmp/apache-1.3.XX
[root @linux]#./configure --prefix=/usr/local/apache


이제는 PHP의 소스코드가 있는 디렉토리로 이동하여 컴파일을 해주면 됩니다.

[root @linux]#cd /var/tmp/php-4.3.2
[root @linux]#./configure --prefix=/usr/local/php --with-apache=/var/tmp/apache-1.3.XX --with-mysql=/usr/local/mysql --with-language=korean --with-charset=euc_kr --with-config-file-path=/usr/local/apache/conf --enable-track-vars=yes
[root @linux]#make
[root @linux]#make install 

 PHP설치 끝입니다.(PHP는 모듈로 아파치에 같이 들어 가게 되므로, 실행 할 필요가 없습니다.)

APACHE 설치

[root @linux]#cd /var/tmp/apache-1.3.XX
[root @linux]#./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a --> php 연동을 위한 것입니다.
 [root @linux]#make
 [root @linux]#make install

Apache 설치 끝입니다.

환경설정 및 실행
PHP 소스 디렉토리에 보면 php.ini-XXXXX라는 파일들이 있습니다. 이중에서 php.ini-recommended 라는 파일을 apache의 conf라는 디렉토리에 php.ini라는 파일로 복사합니다.Apache의 conf 디렉토리를 보면 httpd.conf라는 파일이 있습니다. 그 파일을 자신의 환경에 맞게 설정해주면 됩니다.

AddType application/x-httpd-php .php .php3 .php4 .phtml .html
AddType application/x-httpd-php-source .phs .phps

이 부분을 httpd.conf에 추가 해줍니다. (Add for PHP라는 부분이 있을 것입니다.)

이제 모든 준비가 끝났습니다.
아파치만 실행 시키면 여러분의 박스에는 APM연동이 끝난 웹서버가 돌아가게 될것입니다.
실행은 다음과 같은 명령으로 할 수 있습니다

[root @linux]#/usr/local/apache/bin/apachectl start --> 시작
[root @linux]#/usr/local/apache/bin/apachectl stop --> 정지
[root @linux]#/usr/local/apache/bin/apachectl restart --> 새로 시작.


서버가 부팅 될때마다 Mysql과 Apache를 실행 시킬 수 있게 하시려면, /etc/rc.d/rc.local이라는 파일에 실행 명령을 추가 해주면 됩니다.

[root @linux]#vi /etc/rc.d/rc.local
#MySQL Start
cd /usr/local/mysql
./bin/mysqld_safe &
#Apache Start
/usr/local/apache/bin/apachectl start &




APACHE 2.0.XX 버전사용시
MySQL은 설치 해둔 상태에서 위의 방법과는 다르게 Apache를 설치 합니다.(PHP를 수동으로 적재)

[root @linux]#cd /var/tmp/apache-2.0.XX
[root @linux]#./configure --prefix=/usr/local/apache2 --enable-so --enable-mods-shared=all --enable-modules=shared --with-mpm=threadpool
[root @linux]#make
[root @linux]#make install

이제는 PHP를 설치 합니다.

[root @linux]#cd /var/tmp/php-4.3.2
[root @linux]#CFLAGS="-L/usr/local/mysql/lib/mysql -lmysqlclient"
[root @linux]#./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --enable-track-vars=yes --with-language=korean --disable-debug --with-charset=euc_kr --enable-modules=so --enable-trans-sid --with-config-file-path=/usr/local/apache2/conf 
[root @linux]#make
[root @linux]#make install

PHP의 컴파일 방법이 조금 달라 진것이 보이 실 것입니다.
이렇게 해두면 수동으로 모듈을 적재 시킬 수 있게 됩니다.

환경 파일은 apache의 httpd.conf만 수정해주면 됩니다. 위에서 한 작업과 동일합니다.
물론 php.ini파일은 conf디렉토리로 복사해 주셔야 됩니다.

httpd.conf 수정

LoadModule php4_module        modules/libphp4.so 
AddType application/x-httpd-php .php .php3 .php4 .phtml .html
AddType application/x-httpd-php-source .phs .phps



 

블로그 이미지

커뉴

이 세상에서 꿈 이상으로 확실한 것을, 인간은 가지고 있는 것일까?

,