2009. 3. 27. 16:01

YUM으로 APM 설치하기

VMware 에 Centos 설치도 끝이 났으니 본격적으로 APM을 설치해보기로 하겠습니다.

우선 yum 에서 가장 빠른 mirror 사이트로 연결해주는 플러그인부터 설치를 합니다.(꼭 필요는 없습니다.)
Cent OS 4.X 
yum install yum-plugin-fastestmirror -y

Cent OS 5.X
yum install yum-fastestmirror -y

그외에 필요한 시스템 라이브러리들을 설치해둡니다.
yum -y install zlib libpng freetype gd gcc g++


yum list httpd* mysql* php* 명령을 이용하여 패키지의 리스트를 살펴봅시다.
CentOS 4.4 버젼은 mysql4, php4 버젼대만 설치 가능했지만 repo 파일을 추가하여 php5,mysql5 를 설치할 수 있도록 설정했습니다. (http://wyseburn.tistory.com/119)


yum install mysql mysql-server 을 실행하여 mysql5를 설치합니다.


yum install httpd 를 실행하여 아파치를 설치합니다.


yum install php 를 실행하여 php5 를 설치합니다.


yum install php-mysql 를 실행하여 php의 mysql 접속 모듈을 설치합니다.


yum list php-* 명령을 실행하면 PHP 에서 사용할 라이브러리의 목록을 확인하시고 필요한 것들은 설치해주세요.
함수관련정보 : http://kr.php.net/manual/kr/funcref.php


yum install php-pear 는 php의 라이브러리인 pear 를 설치하는 명령입니다.
pear는 데이타베이스 관련 추상화 계층인 DB,MDB,MDB2 등외에도 여러가지 유용한 라이브러리를 제공하고 있습니다. ( 참고 : http://pear.php.net/ )
그 외에는 php-gd,php-mbstring 정도만 설치했습니다.


/etc/init.d 디렉토리를 확인해보면 설치한 httpd,mysqld 의 실행스크립트를 확인하실 수 있습니다.
서비스의 시작과 종료 방법은 두가지로 데몬을 직접 시작하는 경우와 service 명령 또는 /etc/init.d 에 있는 실행스크립트로 실행하는 방법이 있습니다.
어차피 service httpd start 나 /etc/init.d/httpd start 나 같은 것이라고 생각하시면 되겠습니다.

 [service로 실행]
/sbin/service httpd [start | restart | stop]
/sbin/service mysqld [start | stop]

[실행스크립트로 바로 실행]
/etc/init.d/httpd [start | restart | stop]
/etc/init.d/mysqld [start | stop] 

[mysql 데몬 직접 실행/중지]
/usr/bin/mysqld_safe &
/usr/bin/mysqladmin shutdown

[apache 데몬 직접 실행/재시작/중지]
/usr/sbin/apachectl [start | restart | stop]

그외에 각각의 실행파일과 디렉토리등 기본 설정은 아래와 같습니다.

아파치
conf  : /etc/httpd/conf
홈 : /var/www/html
로그 : /etc/httpd/logs
pid-file=/etc/httpd/run/httpd.pid

Mysql
실행파일 : /usr/bin
DB파일 : /var/lib/mysql
cnf파일 : /etc/my.cnf
소켓파일 : /var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

PHP
ini파일 : /etc/php.ini
conf파일 : /etc/httpd/conf.d/php.conf

우선 mysql 관련 설정을 먼저 합니다. mysql은 제일 먼저 디비 파일들을 생성해야 하므로
/usr/bin/mysql_install_db 를 실행시켜 줍니다. 그러면 /var/lib/mysql 파일이 생성된 걸 확인할 수 있습니다.
/var/lib/mysql 말고 다른 곳에 데이타파일을 만들고 싶으시면 my.cnf 파일에 datadir 을 수정하시면 됩니다.
그외에 사용자 등록등은 책이나 인터넷을 찾아보시기 바랍니다.

그럼 이제 /etc/httpd/conf/httpd.conf 를 열어 아파치 설정을 손보도록 합시다. (원본은 백업 하시구요)
기본으로 KeepAlive 가 Off 되있네요. On으로 변경
중간 쯤에 UserDir 관련 설정이 보이네요.
주석을 잠시 읽어보면 사용자 계정이 /home 밑에 생성되는데 /home/계정 의 퍼미션은 711 로하고 /home/계정/public_html 의 퍼미션은 755 로 해야 "403 Forbidden"이 뜨지 않는다는 군요.

<IfModule mod_userdir.c>
    UserDir disable        -> "http://도메인/~계정" 형식으로의 접속을 할 것인지(허가시 주석처리하면 됩니다.)
    UserDir
public_html  -> 기본적으로 http 서버가 읽어들일 디렉토리명
</IfModule>


참고 : 기본적으로 useradd로 사용자 계정 생성시에 public_html 이 자동으로 만들어 지지 않으니 /etc/skel 에 public_html 디렉토리를 만들어 줍니다. /etc/skel 은 눈치 채셨겠지만 계정생성시 공통적으로 만들어줄 디렉토리를 정의 할 수 있는 곳입니다. /etc/skel/public_html 이 되겠지요. 이러면 모든 계정 생성시에 자동으로 생성이 됩니다.

<Directory /home/*/public_html>
    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    <Limit GET POST OPTIONS>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>


그리고 주석처리 되어 있는 부분을 해제해 줍니다.
계정에 관한 옵션은 아래 내용을 확인하세요. 전 그냥 Indexes 만 해제했습니다.(-Indexes)

DirectoryIndex index.html
이부분은 주소접속시 파일명을 제시하지 않으면 기본적으로 읽어들일 파일명을 기재하는 부분입니다.
원하시는 파일명을 적어 줍시다 (index.htm index.php)
참고 : php.conf 파일에도 DirectoryIndex 가 존재합니다.

대충 설정이 끝났으면 계정을 추가(useradd 계정)하고 아래 명령을 실행하여 커미션을 조정해 줍니다.
chmod 711 /home/계정
chmod 755 /home/계정/public_html

그리고 계정에 index.php 파일 하나를 만들고 내용은 아래와 같이 넣습니다.
<?php
phpinfo();
?>


자 여기까지 하면 일반계정 접속을 위한 작업은 끝이 났습니다. 하지만 CentOS를 설치할때 SELinux을 설치하였다면 한가지 작업을 더해줘야 합니다. 하지않으면 접속이 되지 않고 forbidden 오류가 뜹니다.

chcon -R -t httpd_user_content_t 디렉토리명

아파치 웹서버가 해당 디렉토리에 접근할 수 있게 허가해주는 것인데 매번 사용자 계정을 추가할때 꼬박꼬박 해주어야 합니다. ㅡㅡ;; 그놈의 보안이 먼지...
이게 귀찬으시면 SELinux 를 중지시키면 됩니다.(/etc/selinux/config 에서 SELINUX=disabled 로 하면 중지)


휴.. 정상적으로 접속이 되네요.

참고로 .php 확장자 외에 다른 확장자(htm,html)등도 php로 처리되기 바란다면 /etc/httpd/conf.d/php.conf 내에

AddHandler php5-script .php .htm .html

처럼 확장자를 추가해주시면 되겠습니다.