웹마스터 팁

수일의 삽질끝에 내 손끝에서 이루어진 역사... ^^
더디어 APM연동을 소스 레벨에서 이루어 내고야 말았다.

이 자리를 빌어 오리엔트웹(orientweb.com)의 공경욱 팀장님께 심심한 감사를 표하는 바이다.
그리고 phpschool.com의  백명훈(http://www.kernel.tv)님의 글이 많이 도움이 되었다.

설치환경을 간단하게 소개하자면

RedHat 7.2(커널 : linux-2.4.7-10)
Apache 1.3.27(1.3.26 버전이상 사용하라는 권고를 어디선가 들은듯 하다)
PHP 4.2.3
MySQL 3.23.53(4.X 버전도 가능할것이다)
(이상 APM들은 모두 소스 버전들이다)

자 이제 부터 본격적으로 시작해보자.

************************************************
                   리눅스 서버 설치
************************************************
1. 파티션 설정
아마 처음에 어떻 파티션을 얼마마한게 잡아야 할지 고민일 것이다.
공경욱 팀장의 조언에 따라 다음과 같이 구성하였다.
아래글에 보면 있지만 혹자는 /boot의 용량을 40M정도로 잡는다고 한다.
하긴..여길 봐도 기껏 10M정도만 차지하고 있으니...
[root@www ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             3.9G   95M  3.6G   3% /
/dev/sda1             486M   10M  453M   3% /boot
/dev/sdb2              18G  549M   16G   4% /home
/dev/sda5             3.4G  931M  2.3G  28% /usr
/dev/sdb1              49G  464M   46G   1% /var

참고로 스왑 파티션은 물리적 메모리의 두배정도 잡아주면 좋다고 한다.
너무 많이 잡아도 다 사용하지 못한다고 한다. 얼마까지 한계가 있었는데..-_-

/home밑에는 사용자들의 파일들이 모일거니까 좀 넉넉하게 잡았고
/var는 학교 홈페이지의 모든 자료와 파일들이 쌓이므로 크게 잡았다.

2. network, firewall설정
다른것은 쉽게 적어넣을 수 있으나 nework부분과 broadcast부분은 무슨 말인지.. 그냥 넘어가면 된단다. 나는 기본으로 나오는것을 고치지 않고 그냥 썼다.
firewall은 medium으로 하고 eth0을 체크
그리고 dhcp를 제외하고 모두 선택하였다.
이부분에 대해서는 정확히 말을 못하겠다. 공팀장은 여기서 방화벽 없음을 선탠하라는 조언을 했다. 나중에 필요한 데몬만 올리면 그것이 곧 방화벽이 된다고,,, 어려웠다

3. 패키지 선택
우앙... 처음에 이걸 어찌해야 할지 몰라서 참으로 난감했다.
역시 공팀장의 조언을 구했다..
제일 마지막에 보면 custume이라는것이 있는데 이걸 선택하고 패키지 선택부분에서 아래에 해당하는 패키지를 선택하자.
  network support
  router/firewall
  dns
  network managed works
  authoring and publishing
  utilite
  software developemnt
  kernel devel
  선택을 다하면 약 830여 메가 정도 나올것이다.
  이후에 개별 패키지 선택부분에 가서 imap에 관련된 두개의 패키지를 선택해주자. (꼭 두개가 다 필요한건지 확인을 못해봤다 -_-)

이정도만 하면 무난하게 리눅스의 설치가 진행될것이다.
(물론 세부적인 내용은 생략했다.)

4. ntsysv에서 필요없는 서비스 내리기
필요없는 서비스가 너무 많이 뜨면 부하도 걸릴것이고 해킹의 위험도 있지 않을까?
ntsysv또는 setup으로 조정이 가능하다
공팀장이 선택해놓은 서비스는 다음과 같다. (역시 정확하게 어떤 서비스가 어떤일을 하는지..왜 필요한지 아직 모른다. 알고 싶다 -_-)
  crond(예약작업에 필요한 데몬일거다 아마)
  ipchans(방화벽에 관련된 서비스 아닐까?)
  iptables
  klogd
  mysqld(mysql을 깔면 자동으로 이것이 선택되어 있다)
  network
  random
  sendmail(mail과 관련이 있겠지)
  sshd(secured shell deamon)
  wu-ftpd(ftp 데몬, 백업파일 올리려니 ftp가 있어야 해서 -_-)
  xinetd(일명 수퍼 데몬)

이상만 선택해도 이상없이 잘된다. 아까 말했지만 정확한 사용처가 궁금하다

이상으로 리눅스 설치는 끝나게 된다.
ntsysv로 설정을 바꾼 후 적용하고 싶으면
/etc/rc.d/rc파일을 실행시키면 된다.

**************************************************
                   APM 소스 설치 및 연동
**************************************************
전체적인 설치는 다음과 같다.
참고로 앞으로의 모든 작업은 root계정으로 실행해야 한다.
사족하나!! 소스 컴파일 이전에 혹시 관련 rpm들이 있으면 제거를 해야 한다.
위에서 리눅스를 설치하고 바로 왔으므로 관련 패키지가 당연히 없다고 생각한다.
혹시 기존의 상태에서 APM만 새로 설치하실 생각이면 다음 게시물에서 제거하는 방법데로 제거를 하고 아래의 작업을 진행해야 한다.

혹시 소스가 필요하신 분들은 내 홈페이지(yanemone.net)에서도 다운받을 수 있게 해 두었으니 다운받으시도록 하세요...^^

mysql configure->make->make install
apache cofigure ->
php configure->make->make install
apache cofigure -> make -> make install

잠와서 안되겠다 내일 계속 쓰겠다

1. MySQL 압축해제 및 설치
http://www.mysql.com/Downloads/MySQL-3.23/mysql-3.23.53.tar.gz 에서 소스버전으로 최근버전을 받아보자.
2002.11.26 현재 3.23버전이 안정버전이고 4.05버전은 개발버전이므로 알아서 선택하면 되겠다.

보통 소스들은 /usr/local/src에 받아둔다. 다른 소스들도 여기에 받아둘것이다.
일반적으로 소스파일은 tar.gz형태다.

[root@www ]# tar xvfz mysql-3.23.53.tar.gz [enter]  하면 압축이 풀린다.
압춤이 풀리면 풀린 디렉토리로 들어가가서 다음과 같이 configure를 한다.
[root@www mysql-3.23.53]# ./configure --prefix=/usr/local/mysql
> --with-charset=euc_kr
> --localstatedir=/var/lib/mysql  [enter]
는 안해도 되나 다음줄에 계속 된다는 의미로 사용하면 보기에 좋다^^

잠간 옵션에 대해서 설명하면 --prefix는 mysql이 어디에 설치될건지를 결정하는것이고 --localstatedir은 mysql의 데이터가 어디에 저장될지를 결정하는 것이다.
옵션에 대해서 알고 싶으면 ./configure --help 해보면 나온다.

Thank you for choosing MySQL! 이라는 메시지가 나온다면 MySQL을 컴파일할 준비가 다 되었다는 말이다.

[root@www mysql-3.23.53]# make    컴파일 시작.
시스템 사양에 따라 시간 차이가 있으며 APM 중에 가장 시간이 많이 걸리는 단계이다.

[root@www mysql-3.23.53]# make install    MySQL을 설치.

[root@www mysql-3.23.53]# scripts/mysql_install_db       MySQL의 데이터를 관리할 기초적인 DB와 테이블을 생성

주의할 점은 mysql_install_db은 반드시 한번만 실행!!

다음으로 mysql 유저와 그룹을 생성한다.
배포판에 따라 설치되었던 RPM버전에 의해 이미 생성되어 있을 수도 있다.

[root@www mysql-3.23.53]# groupadd mysql
[root@www mysql-3.23.53]# useradd -g mysql mysql
[root@www mysql-3.23.53]# chown -R mysql /var/lib/mysql
[root@www mysql-3.23.53]# chgrp -R mysql /var/lib/mysql
[root@www mysql-3.23.53]# vipw  보안을 위해 새로 생성된 mysql유저가 로그인을 못하도록 수정.

mysql:x:500:500::/home/mysql:/bin/bash  라인을 찾아서 다음과 같이 수정.  
mysql:x:500:500::/var/lib/mysql:/sbin/nologin  

:x를 통해 저장후 종료,
You are using shadow passwords on this system.
Would you like to edit /etc/shadow now [y/n] 라고 물으면 n 라고 한다.

저장후 초기 홈디렉토리인 /home/mysql를 삭제
[root@www mysql-3.23.53]# rm -rf /home/mysql  
[root@www mysql-3.23.53]# ls -al /var/lib/mysql  MySQL   DB디렉토리 확인
합계 16
drwx------    4 mysql    mysql        4096  7월 27 17:05 .
drwxr-xr-x   15 root     root         4096  7월 27 17:05 ..
drwx------    2 mysql    mysql        4096  7월 27 17:05 mysql
drwx------    2 mysql    mysql        4096  7월 27 17:05 test

위와 같은 출력하면을 볼 수 있다.
DB가 하나 추가될 때마다 디렉토리가 생긴다. mysql DB는 앞에서 생성시킨 MySQL을 관리할 DB이다.

[root@www mysql-3.23.53]# cp support-files/my-medium.cnf /etc/my.cnf
[root@www mysql-3.23.53]# vi /usr/local/mysql/share/mysql/mysql.server

편집기로 열어서 safe_mysql이 실행되는 라인(107 line쯤)에 --language=korean 옵션을 추가.
참고로 mysql.server는 mysql이 정상적으로 실행되도록 짜여 있는 스크립트화일이다.

$bindir/safe_mysqld --pid-file=$pid_file --datadir=$datadir --language=korean &    한글메세지를 띄우도록 해준다.

시스템 부팅시에 자동 실행되도록 해 준다
[root@www /mysql-3.23.53]# cp -p /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld

[root@www /mysql-3.23.53]# ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc3.d/S90mysqld
만일 Xwindows로 부팅할 경우를 위해 /etc/rc.d/rc5.d/ 디텍토리에도 링크를 만든다.

이후에 ntsysv명령을 하면 시스템 부팅시에 자동실행될 데몬을 쉽게 지정할 수 있다.
[root@www /mysql-3.23.53]# ntsysv

mysql데몬의 시작과 종료 및 관련 명령어를 사용하기 편하게 하기위해서 시스템 부팅환경에 PATH를 지정해 둔다.

[root@www /mysql-3.23.53]# vi /root/.bash_profile

# User specific environment and startup programs

PATH=$PATHHOME/bin:/usr/local/mysql/bin
BASH_ENV=$HOME/.bashrc
USERNAME="root"

시스템 부팅환경은 배포판마다 조금씩 다를 수 있으니 사용자의 환경에 맞게 적절히 설정하면 되겠다.

[root@www mysql-3.23.53]# /etc/rc.d/init.d/mysqld start
[root@www mysql-3.23.53]# ps -ef | grep mysql    MySQL 프로세스 확인하기
[root@www mysql-3.23.53]# /etc/rc.d/init.d/mysqld stop    MySQL 데몬 종료하기

이상으로 MySQL DB의 설치가 끝났다.
여기까지 이상없이 진행하여 왔다면...이제 숨을 고르고 다음을 준비하자.
지금까지의 작업은 그런대로 할만하나 다음의 작업에서 실패할 확률이 높다. (내가 그랬다  그러니..여러분들은 한번만에 성공하길 바란다...)

2. Apache 압축 풀기 및 설치
http://www.apache.org/dist/httpd/apache_1.3.27.tar.gz 에서 받을 수 있다.
[root@www mysql-3.23.53]# cd ../apache_1.3.27    초기에 아파치소스 압축을 풀어놓은 곳으로 이동.
[root@www apache_1.3.27]# ./configure --prefix=/usr/local/apache

이렇게만 하고 그만한뒤 PHP디렉토리로 옮기자.
위의 작업은 PHP에서 apache를 인식할 수 있도록 하기 위한 전초작업이다.

3. PHP압축 풀기 및 설치
http://www.php.net/get_download.php?df=php-4.2.3.tar.gz 에서 받을 수 있다.
[root@www apache_1.3.27] cd ../php-4.2.3
[root@www php-4.2.3]# ./configure --with-config-file-path=/etc
--with-mysql=/usr/local/mysql
--with-apache=../apache_1.3.27
--enable-track-vars
--with-gd
내가 준 옵션은 이게 다다. 물론 다른 옵션들이 추가 될수 있겠지만...이렇게만 주자.
--enable-track-vars  옵션은 HTTP_GET_VARS, HTTP_POST_VARS, HTTP_COOKIE_VARS 배열에 들어 있는 GET, POST, cookie 변수들이 어디서 왔는지 기억하도록 한다. 꼭 설정해 두세요.

참고로 Zend Optimizer 를 위한 옵션으로 --disable-debug라는 것이 있는데 Zend를 설치할 생각이면 옵션을 같이 포함시키면 되겠다.

[root@www php-4.2.3]#make    컴파일
[root@www php-4.2.3]#make install    인스톨

mysql 보다는 적게 걸리나 이것도 시작이 조금 걸리는 작업이다.

4. Apache 컴파일 및 설치
[root@www php-4.2.3]# cd ../apache_1.3.27
[root@www apache_1.3.27]# ./configure --prefix=/usr/local/apache
--activate-module=src/modules/php4/libphp4.a
--sysconfdir=/etc/httpd/conf
--htdocsdir=/var/www/html
--logfiledir=/var/log/httpd

이정도의 옵션을 주고 실행한다.

[root@www apache_1.3.27]# make    아파치를 컴파일.
[root@www apache_1.3.27]# make install    아파치 인스톨

[root@www apache_1.3.2]# cp ../php-4.2.3/php.ini-dist /etc/php.ini    php환경설정 파일 복사

다음으로 시스템이 시작될 때 아파치가 자동으로 실행되게 하기 위해 다음과 같이 설정한다.

/etc/rc.d/rc.local파일을 vi로 열어 마지막에 다음줄을 추가한다.
/usr/local/apache/bin/apachectl start

저장하고 종료한다.

여기 까지 왔으면 거의 다 성공했다..축하한다.
다음으로 httpd.conf파일을 편집해야 한다. 이미 편집한 파일을 가져다가 사용해도 되나 자신의 힘으로 고쳐보자.
(참고로 php.ini파일과 httpd.conf파일을 첨부해 놓는다)

httpd.conf에서 다음 부분을 찾아서 그 아래에 내용을 추가한다
#
# AddType allows you to tweak mime.types without actually editing it, or to
# make certain files to be certain types.
#
AddType application/x-tar .tgz
AddType image/x-icon .ico

추가할 내용
-------------------------------------------------
AddType application/x-httpd-php .php .html .htm
AddType application/x-httpd-php-source .phps
----------------------------------------------------

그리고 다음 내용을 추가하거나 수정한다.

---------------------------------------------
#ServerName localhost.localdomain 이라고 막혀 있는데 풀어주자.
DocumentRoot 가 아파치 configure할 때 htdocs=..에 지정한 대로 되어 있는지 확인하자.
#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/var/www/html">
위의 부분은 DocumentRoot에서 지정한 디렉토리와 같은지도 확인하자.
아마 같을 것이다.

------------------------------------
#ServerName www 이라고 막혀 있는 부분을 풀어주자. 그러면 메시지 하나를 덜 보면서 깔끔하게 apache 가 start되는것을 볼 수 있다.

#
# DirectoryIndex: Name of the file or files to use as a pre-written HTML
# directory index.  Separate multiple entries with spaces.
#
<IfModule mod_dir.c>
    DirectoryIndex index.html
</IfModule>
라는 부분이 있는데 이것은 기본적으로 index.html만 시작 파일로 되어 있어서 index.htm이나 index.php같은 것은 시작파일로 될 수 없다.
이렇게 고치자

<IfModule mod_dir.c>
    DirectoryIndex index.html index.htm index.php index.php3
</IfModule>
----------------------------------------------------

저장하고 빠져나온다.

이렇게 httpd.conf파일을 수정하면 데몬을 죽였다가 다시 살려야 변경한 부분이 적용된다.
[root@www..]/usr/local/apache/bin/apachectl stop - 현재 떠 있는 데몬 죽이기
[root@www..]/usr/local/apache/bin/apachectl start - 아파치 데몬 시작



5. Test 하기
테스트 화일을 만들어 확인을 해 보자.
(물론 mysql 데몬과 apache 데몬이 떠 있어야 한다
확인은 ps -aux | grep mysql과 ps -aux | grep apahce 라고 해본다)

메인 홈페이지 경로는 아파치 컴파일옵션(--htdocsdir=/var/www/html) 에 의해 설정된 경로다.

[root@www apache_1.3.27]# vi /var/www/html/test.php

에디터 창에서 다음내용을 입력한다.

<?
phpinfo();
?>

저장을 하고 브라우저에서 http://localhost/test.php 또는 홈페이지URL/test.php를 입력하여 어떤 내용이 출력되는지 본다.

아무것도 안나온다면 뭔가 잘못되었다는 뜻이고 PHP에 관련된 내용이 좍~ 나오면 정상적으로 된것이다.
아래쪽으로 좀 내려서 mysql 관련한 내용이 나오는지도 확인하자.

==========================
긴글을 읽느라고 고생하셨습니다.
혹시 이글에 대한 질문이나 틀린점은 저의 홈페이지 게시판에 남겨 주십시오
감사합니다.
제목 글쓴이 날짜
cron과 rsync 그리고 replication 을 이용한 데이터 백업 [3] 최종우 2002.12.03
cron을 이용한 자동 백업 받기 최종우 2002.12.02
리눅스 보안 : 기초적인 방화벽 : portsentry 설치하기 [2] 정인배 2002.11.29
[FreeBSD] qmail+mysql+vpopmail+qmailadmin 설치 [1] DeX™ 2002.11.26
[FreeBSD] bind를 몰아낼 djbdns 설치하기 [5] DeX™ 2002.11.26
Apache + PHP + Mysql확실한 연동 및 리눅스 재설치 정보 [2] file 최종우 2002.11.26
리눅스 mysql 사용자 계정주기/삭제하기 [4] 정인배 2002.11.22
리눅스 서버를 구축해 보자! #2 [5] 꼬토 2002.11.22
리눅스 서버를 구축해 보자! #1 [11] 꼬토 2002.11.21
리눅스(레드헷8.0 배포판 기준) 처음 설치하시는 분들을 위한 apm 초간단 팁 [8] 김종환 2002.11.17
리눅스 시스템관리 고급 명령어 정인배 2002.11.16
ab 를 이용한 간편한 아파치 성능 측정 [2] 정인배 2002.11.15
윈xp pro 를 net 서버로 바꾸기 [7] file 정회철 2002.11.13
[Lindox] 설치 강좌 쓸때 유용한 명령어 [4] NeSTY♨™ 2002.11.05
[기초] 퍼미션 값에 대해서 [4] NeST™y 2002.11.05
[Lindox] 실수로 기본 명령어삭제시 강제 복구하기 NeSTY♨™ 2002.11.05
[Lindox] 가상콘솔 줄여서 메모리 절약하기.. NeSTY♨™ 2002.11.05
[기초]커널 2.4.x, quota 셋팅법 NeST™y 2002.11.05
사용자 자동 등록 쉘스크립트 [1] 편리 2002.11.05
OpenBSD3.2 설치가이드 - 완결 [3] pravda 2002.11.02