Page 1

CentOS 4.4 (The Community ENTerprise Operating System)

서버 구축 [2] 본 문서는 최근에 필자가 APM(Apache, PHP, MySql) 기반의 서버를 구축하는데 있어 필요한 절차를 [1], [2] 에 걸쳐 작성된 것입니다. 이에 사용하는 모든 라이브러리 및 설치 소스의 버전에 따라 다를 수 있으며 설치 과정에서 몰라도 크게 상관없는 부분은 깊이 있게 설명을 해두지 않았음을 알려드립니다.

여기 모든 설치와 설정은 Root 권한으로 접속 후 실행되어 집니다.

1. 설치 후 초기 설정 가. X 윈도우 설정 oracle 10g 이상을 셋팅하지 않고서는 X 윈도우를 실행할 이유가 없었습니다. 그래서 일단 필자는 초기 부팅 시 Text 모드로 실행되게 설정합니다. 필요 없으면 안 해도 됩니다. 설정법은 다음과 같습니다. [root@localhost ~]# vi /etc/inittab 로 해당 설정 파일을 열어 18 line 에

id:5:initdefault: 항목이 있습니다. 여기에 5를 3으로 수정 후 저장하고 나옵니다. 그리고 다시 재부팅을 하면 X 윈도우가 아닌 텍스트 모드로 부팅이 완료됨을 확인할 수 있습니다.

나. yum 을 이용한 업데이트 초기 리눅스를 설치하고 난 후에 시스템에 설치된 모든 rpm 에 대해 업데이트 하는 것이 좋습니다. 업데이트 하는 방법으로 yum 을 이용합니다. yum에 대한 좀더 상세한 사용법은 이 문서 마지막에 부록으로 실어 놓겠습니다. [root@localhost ~]# yum update 명령으로 간단히 업데이트를 할수 있습니다. 명령을 실행하면 업데이트 항목을 검토하고 실행할건지 물어옵니다. 그러면 y 를 입력하고 엔터를 누르면 계속 진행하고 업데이트 완료 될 때까지 기다리면 됩니다.

다. 한글 깨짐 방지 보통 리눅스만 설치가 완료되면 SecureCRT 와 같은 SSH 접속 프로그램으로 원격 접속하여 관리를 하게 됩니다. 이때 한글이 깨지는 경우가 많은데 조치 사항은 다음과 같습니다. [root@localhost ~]# vi /etc/sysconfig/i18n 로 파일을 수정합니다. 파일을 열면 보통 아래와 같이 되어있습니다.

LANG="ko_KR.UTF-8" SUPPORTED="ko_KR.UTF-8:ko_KR:ko" SYSFONT="latarcyrheb-sun16" 표 2 i18n의 수정 전

이렇게 설정하고 재부팅을 해야 적용이 되는 듯 하였습니다.


LANG="ko_KR.eucKR" SUPPORTED="ko_KR.eucKR:ko_KR:ko" SYSFONT="latarcyrheb-sun16" 표 3 i18n의 수정 후 하지만 이렇게 하고서도 SSH 접속을 해서 관리를 해보면 한글이 깨지는 경우가 있습니다. 이럴 경우에는 사용자 쉘 프롬프트에서 다음과 같이 해봅니다.

.bashrc 파일에 다음과 같은 내용을 추가합니다. # cat >> ~/.bashrc export LANG=ko_KR.eucKR Ctrl키+d 또는 # cat >> ~/.bashrc LANG=C Ctrl키+d 또는 vi 로 .bashrc 를 열어 export LANG=ko_KR.eucKR 을 추가 합니다. 표 4 실제 수정 예

라. SSH 접속시 ROOT 접속 못하게 설정 보안 관계로 이 부분은 기본적으로 중요하게 생각하는 부분입니다. [root@localhost ~]# vi /etc/ssh/sshd_config

// 파일을 열어 37 line 쯤에 있는

#PermitRootLogin yes

// 주석처리 되어 있는 이 부분을

PermitRootLogin no

//라고 설정하고 저장합니다.

[root@localhost ~]# /etc/rc.d/init.d/sshd restart

//sshd를 재시작 합니다.

마. su 명령어 특정 사용자만 실행 가능하게 설정 우선 root 권한으로 명령을 실행할 수 있는 명령어 sudo를 삭제한다. [root@localhost ~]# rm -rf /usr/bin/sudo 아래와 같이 권한 설정을 바꾸고, [root@localhost ~]# chmod 4755 /bin/su (이게 아니면 4750 으로 해봄) [root@localhost ~]# chown root:wheel /bin/su 소유그룹을 wheel로 한다. 그런 다음 /etc/group 파일을 열어 wheel 그룹에 su 명령어를 쓸 사용자들을 등록합니다. (예 : wheel:x:10:root,doly)

바. 자동 시간 설정 [root@localhost ~]# crontab -e

00 00 * * * root '/usr/bin/rdate -s time.bora.net && /sbin/clock -w' 을 입력하고 저장하고 빠져 나옵니다. 크론 설정에 대해서는 따로 얘기하지 않겠습니다. 참고: 시간맞추기 rdate -s time.bora.net && clock -w


2. ProFtp 설치 가. 설치 먼저 설치할 디렉토리로 이동합니다. 필자는 설치할 관련 파일들을 보통 /usr/local 아래에 디렉토리를 만들어 보관합니다. 그래서 일단 /usr/local 로 가서 setfiles 라는 디렉토리를 생성하고 그 디렉토리에서 모든 설치를 진행하겠습니다. [root@localhost ~]# cd /usr/local [root@localhost local]# mkdir setfiles [root@localhost local]# cd setfiles [root@localhost setfiles]#

표 5 setfiles 디렉토리 생성 ProFtp 는 http://www.proftpd.org/ 에서 받으실 수 있습니다. 다음은 ProFtp 설치 과정을 보여 줍니다. [root@localhost setfiles]# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.0a.tar.gz --00:17:22-- ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.0a.tar.gz => `proftpd-1.3.0a.tar.gz' Resolving ftp.proftpd.org... 81.223.20.36 Connecting to ftp.proftpd.org|81.223.20.36|:21... connected. Logging in as anonymous ... Logged in! ==> SYST ... done.

==> PWD ... done.

==> TYPE I ... done.

==> CWD /distrib/source ... done.

==> PASV ... done.

==> RETR proftpd-1.3.0a.tar.gz ... done.

Length: 1,858,160 (1.8M) (unauthoritative) 100%[==========================================>] 1,858,160

99.14K/s

ETA 00:00

00:17:59 (53.38 KB/s) - `proftpd-1.3.0a.tar.gz' saved [1858160] [root@localhost setfiles]# tar xvfz proftpd-1.3.0a.tar.gz .......... 압축 해제 과정 출력 됨 ........... [root@localhost setfiles]# cd proftpd-1.3.0a [root@localhost

proftpd-1.3.0a]#

./configure

--prefix=/usr/local/proftpd

--enable-shadow .......... 컨피그 과정이 출력 됨 ........... [root@localhost proftpd-1.3.0a]# make .......... 컴파일 과정이 출력 됨 ........... [root@localhost proftpd-1.3.0a]# make install .......... 설치 과정이 출력 됨 ........... [root@localhost proftpd-1.3.0a]# cd .. [root@localhost setfiles]# rm -rf proftpd-1.3.0a //설치를 완료 후엔 설치 폴더 필요없음.

표 6 ProFtp 설치 과정 조금 더 첨가 해서 얘기하면 ./configure 할때 --prefix 는 설치할 디렉토리이고 뒤의 옵션은 대부분의 Linux에서 shadow 패스워드 시스템을 사용하기에 적어 준 것입니다. 그리고 설치가 완료되면 사용했던 소스 디렉토리는 삭제 해버렸습니다.

--enable-autoshadow


설치가 완료되고 /usr/local 아래에 보면 proftpd 디렉토리가 생긴 것을 확인할 수 있습니다. 이제 설치는 다 되었구 설정해서 FTP 를 사용해 보도록 하겠습니다.

나. 운용 A. 환경설정파일 편집 환경설정 파일은 /usr/local/proftpd/etc/proftpd.conf 입니다. [root@localhost setfiles]# vi /usr/local/proftpd/etc/proftpd.conf

표 7 ProFtp 환경 설정 파일 편집 A-1. 실행 그룹 변경 먼저 27번 line에 있는 실행 그룹을 나타내는 설정을 변경합니다. Group nogroup 을 Group nobody 로 변경합니다. A-2. wheel 그룹 사용자 외에 자신의 home 디렉토리 못 벗어나게 설정 31번 line에 주석 처리 되어있는 #DefaultRoot ~ 이 부분을 주석을 없애고 DefaultRoot ~ !wheel 이라고 수정합니다. 그런 다음 /etc/group 파일을 열어 wheel 그룹에 허용할 사용자를 추가합니다. (예 : wheel:x:10:root,doly,myuser) A-3. 기타 설정 - 파일을 올렸는데 시간이 다르게 나올 경우 다음 옵션을 추가 합니다. TimesGMT off - 트래픽 제한 만약, wheel 그룹 사용자만 빼고 모든 사용자에게 200K/sec 로 설정하고 싶다면, 아래 설정은 30M까지는 제한이 없게 설정했습니다. 31457280 이 수치가 30M라는 의미 입니다. TransferRate APPE,RETR,STOR,STOU 200.0:31457280 group !wheel

B. ProFtp 시작 모든 설정이 끝났다면, 서버(데몬)를 시작합니다. [root@localhost setfiles]# /usr/local/proftpd/sbin/proftpd - 아무런 메시지가 없으면 시작 된것입니다. - 다음 명령으로 확인해 봅니다. [root@localhost setfiles]# netstat -an | grep LISTEN | grep 21 tcp

0

0 0.0.0.0:21

0.0.0.0:*

LISTEN

- 위와 같이 21번 포트가 정상적으로 열려있어야 합니다. [root@localhost setfiles]# ps -ef | grep proftpd nobody root

14544

1 0 00:32 ?

14551 4072 0 00:33 pts/5

00:00:00 proftpd: (accepting connections) 00:00:00 grep proftpd

위와 같이 proftpd 프로세스가 정상적으로 떠 있어야 합니다.


이렇게 모든게 정상임을 확인했다면, 서버 부팅시 자동으로 시작되도록 rc.local 파일에 추가합니다. [root@localhost setfiles]# echo /usr/local/proftpd/sbin/proftpd >> /etc/rc.d/rc.local /etc/rc.d/rc.local 파일을 편집기로 열어 추가해도 됩니다.

표 8 ProFtp 시작 및 확인 C. 기타 명령어 - ftp 서버 정지 [root@localhost ~]# /usr/local/proftpd/sbin/ftpshut usage: /usr/local/proftpd/sbin/ftpshut [ -R ] [ -l min ] [ -d min ] time [ warning-message ... ] ftp 서버를 정지하는 명령어입니다. 즉시 정지 하기 위해서는 ftpshut now 라고 하면 됩니다. 그래도 안될때는 [root@localhost ~]# killall proftpd 혹, shutmsg 가 남아있는 경우가 있습니다. 이 파일이 있으면, ftp 접속이 되지 않으니 있으면 지워 주기 바랍니다. rm -rf /etc/shutmsg - ftp서버에 접속한 사용자 수 알아내기 [root@localhost ~]# /usr/local/proftpd/bin/ftpcount Master proftpd process 14544: 0 users - ftp 만의 top [root@localhost ~]# /usr/local/proftpd/bin/ftptop ftptop/0.9: Sun Jan 7 00:39:48 2007, up for 7 min 0 Total FTP Sessions: 0 downloading, 0 uploading, 0 idle PID

S USER

CLIENT

SERVER

q를 누르게 되면 빠져 나옵니다. - ftp 만의 who [root@localhost ~]# /usr/local/proftpd/bin/ftpwho standalone FTP daemon [14544], up for 8 min no users connected

TIME COMMAND


3. Sendmail 설정 가. Sendmail 인증 부분 설정 [root@localhost ~]# vi /etc/mail/sendmail.mc 로 파일을 편집기(vi, pico 등)를 이용하여 엽니다. 48,49번 line의 내용을 편집합니다. dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

표 9 48,49번 줄의 수정 전 여기를 수정하는 것은 smtp 인증 기능을 사용하기 위해서입니다. 이걸 사용하는 것은 스패머들의 장난을 막기위해 인가된 사용자의 메일만 허용하게 하는 것입니다. 이 부분의 앞에 있는 주석(dnl)을 삭제합니다. TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

표 10 48,49번 줄의 수정 후 다음은 105번 line의 내용을 편집합니다. DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

표 11 105번 줄의 수정 전 위의 설정은 로컬에서 보낸것만 허용한다는 것입니다. 하지만, 메일서버로 사용하기 위해서는 이 설정을 지워야 합니다. 그래서 앞에 dnl 을 입력함으로서 주석처리합니다. dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

표 12 105번 줄의 수정 후 이렇게 수정한 후에 저장하고 빠져 나옵니다. [root@localhost ~]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf 명령으로 수정한 사항을 적용합니다. 그런 다음, [root@localhost ~]# /etc/rc.d/init.d/sendmail restart 로 Sendmail을 재시작 합니다. [root@localhost ~]# /etc/rc.d/init.d/sendmail restart sendmail를 종료하고 있습니다: [ 확인

]

sm-client을 종료하고 있습니다: [ 확인 ] sendmail (을)를 시작합니다: [ 확인 ] sm-client을 시작하고 있습니다: [ 확인 ] [root@localhost ~]#

표 13 실제 실행 예


나. 기타 메일 운용 Sendmail은 주로 access, local-host-names, virtusertable 파일을 설정하며 운용하게 됩니다.

/etc/mail/access 파일 : Relay(허용할 도메인)제한 설정 파일 /etc/mail/local-host-names 파일 : 메일수신자(수신 도메인) 설정 파일 /etc/mail/virtusertable 파일 : 가상메일 설정파일 본 문서는 서버를 셋팅하는게 목적이기에 운용에 상세한 설명은 하지 않겠습니다. 이 부분에 추가적인 정보를 원하시면 필자의 이메일로 보내주십시오. 부족하나마 성심껏 답변해 드리도록 하겠습니다.


4. IMAP 설치 이후 PHP에서도 이 IMAP을 지원하게 될 것입니다. 설치할 프로그램들의 과정은 대략 소스를 다운받고 압축을 풀고 컨피그를 하고 컴파일 해서 인스톨하게 된다는 것을 염두 해 두기 바랍니다. 하지만 이 imap은 설치를 바로 하게 됩니다. 우선 ftp://ftp.cac.washington.edu/imap/ 로 가서 imap.tar.Z 를 다운받는 것부터 시작합니다. 지금부터 그 설치 과정을 보겠습니다. [root@localhost setfiles]# wget ftp://ftp.cac.washington.edu/imap/imap-2006d.tar.Z --23:25:52-- ftp://ftp.cac.washington.edu/imap/imap-2006d.tar.Z => `imap-2006d.tar.Z' Resolving ftp.cac.washington.edu... 140.142.3.249, 140.142.15.201 Connecting to ftp.cac.washington.edu|140.142.3.249|:21... connected. Logging in as anonymous ... Logged in! ==> SYST ... done.

==> PWD ... done.

==> TYPE I ... done.

==> CWD /imap ... done.

==> PASV ... done.

==> RETR imap-2006d.tar.Z ... done.

Length: 2,692,289 (2.6M) (unauthoritative) 100%[===============================================>] 2,692,289

538.34K/s

ETA 00:00

23:25:59 (488.52 KB/s) - `imap-2006d.tar.Z' saved [2692289] [root@localhost setfiles]# zcat imap-2006d.tar.Z | tar xvf .......... 압축 해제 과정 출력 됨 ........... [root@localhost setfiles]# mv imap-2006d /usr/local/imap [root@localhost setfiles]# cd /usr/local/imap [root@localhost imap]# make slx SSLTYPE=none make sslnone make[1]: Entering directory `/usr/local/imap' +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Building in NON-COMPLIANCE with IESG security requirements: + Non-compliant: ++ TLS/SSL encryption is NOT supported ++ Unencrypted plaintext passwords are permitted + + In order to rectify this problem, you MUST build with: ++ SSLTYPE=nopwd + You must also have OpenSSL or equivalent installed. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Do you want to continue this build anyway? Type y or n please: y //y를 입력하고 엔터 합니다. .......... 설치 과정이 출력 됨 ........... [root@localhost imap]#

표 14 IMAP 설치 과정


◈ 설치가 정상적으로 완료되면 다음과 같은 과정을 거칩니다. [root@localhost imap]# cp ipopd/ipop3d /usr/sbin/ipop3d [root@localhost imap]# cp imapd/imapd /usr/sbin/imapd [root@localhost imap]# cp c-client/c-client.a /usr/local/lib/c-client.a [root@localhost imap]# cp c-client/c-client.a /usr/local/lib/libc-client.a [root@localhost imap]# cp c-client/mail.h

/usr/local/include/mail.h

[root@localhost imap]# cp c-client/rfc822.h /usr/local/include/rfc822.h [root@localhost imap]# cp c-client/linkage.h /usr/local/include/linkage.h ◈ 더 필요한 헤더가 있을경우 같은방법으로 /usr/local/include 로 복사합니다. ◈ /etc/xinetd.d/ipop3d 를 다음 내용으로 만들어서 pop3가 되게끔 합니다. [root@localhost imap]# vi /etc/xinetd.d/ipop3d # default: on # description: This is pop3 service. service pop3 { disable = no flags

= REUSE

socket_type

= stream

wait

= no

user

= root

server

= /usr/sbin/ipop3d

log_on_success += HOST DURATION log_on_failure += HOST } :wq! ◈ /etc/xinetd.d/imapd 를 다음 내용으로 만들어서 imap이 되게끔 합니다. [root@localhost imap]# vi /etc/xinetd.d/imapd # default: on # description: This is imap service. service imap { disable = no flags

= REUSE

socket_type

= stream

wait

= no

user

= root

server

= /usr/sbin/imapd

log_on_success += HOST DURATION log_on_failure += HOST } ◈ xinetd 데몬 재가동 [root@localhost imap]# /etc/rc.d/init.d/xinetd restart


◈ POP3 확인 [root@localhost imap]# telnet localhost 110 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. +OK POP3 localhost.localdomain 2006d.96 server ready // 위와 같은 메시지가 출력되면 정삭적으로 pop3 가 작동하는 것입니다. // 추가적으로 사용자로 로그인 해보면 더욱 확실합니다. user [사용자ID] +OK User name accepted, password please pass [비밀번호] +OK Mailbox open, 0 messages quit ◈ IMAP 확인 [root@localhost imap]# telnet localhost 143 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. * OK [CAPABILITY IMAP4REV1 LITERAL+ SASL-IR LOGIN-REFERRALS] localhost.localdomain IMAP4rev1 2006d.376 at Mon, 8 Jan 2007 10:51:55 +0900 (KST) // 위와 같은 메시지가 출력되면 정삭적으로 imap 이 작동하는 것입니다. // 추가적으로 사용자로 로그인 해보면 더욱 확실합니다. a00 login [사용자ID] [비밀번호] a00 OK [CAPABILITY IMAP4REV1 LITERAL+ IDLE UIDPLUS NAMESPACE MAILBOX-REFERRALS BINARY UNSELECT SCAN SORT THREAD=REFERENCES THREAD=ORDEREDSUBJECT MULTIAPPEND] User mhlee authenticated a00 logout // 빠져나오기 * BYE localhost IMAP4rev1 server terminating connection a00 OK LOGOUT completed Connection closed by foreign host. [root@localhost imap]#

표 15 IMAP 설치 완료 후 진행 사항


5. APM(Apache, PHP, MySql) 설치 ◈ APM 버전 Apache : httpd-2.2.2 MySql

: mysql-5.0.24

PHP

: php-5.2.0

◈ 라이브러리 종류와 버전 zlib

: zlib-1.2.3

libpng

: libpng-1.2.8

freetype2

: freetype-2.2.1

libjpeg

: jpegsrc.v6b

gd

: gd-2.0.33

LIBXML2

: libxml2-2.6.16

LIBICONV

: libiconv-1.11

swf

: dist.99

mcrypt

: mcrypt-2.5.6

표 16 설치 할 프로그램 버전

가. 라이브러리 설치 PHP 언어에는 라이브러리를 설치해야 작동하는 함수들이 많이 있습니다. 하지만 모든 라이브러리를 설치하는 것은 무리 이므로, 위의 몇가지만을 기본적으로 설치하도록 하겠습니다.

(1) ZLIB 설치 (압축관련 라이브러리) [root@localhost setfiles]# wget ftp://ftp.superuser.co.kr/etc/zlib-1.2.3.tar.bz2 [root@localhost setfiles]# tar jfvx zlib-1.2.3.tar.bz2 [root@localhost setfiles]# cd zlib-1.2.3 [root@localhost zlib-1.2.3]# ./configure && make && make install [root@localhost zlib-1.2.3]# cd .. [root@localhost setfiles]# rm -rf zlib-1.2.3

표 17 ZLIB 설치 과정 (2) LIBPNG 설치 (PNG 포맷을 다루기 위한 라이브러리) [root@localhost setfiles]# wget ftp://ftp.superuser.co.kr/etc/libpng-1.2.8.tar.bz2 [root@localhost setfiles]# tar jfvx libpng-1.2.8.tar.bz2 [root@localhost setfiles]# cd libpng-1.2.8 [root@localhost libpng-1.2.8]# cp scripts/makefile.linux makefile [root@localhost libpng-1.2.8]# make test && make install [root@localhost libpng-1.2.8]# cd .. [root@localhost setfiles]# rm -rf libpng-1.2.8

표 18 LIBPNG 설치 과정


(3) FREETYPE2 설치 (글자를 그리기 위한 라이브러리) [root@localhost setfiles]# wget ftp://ftp.superuser.co.kr/etc/freetype-2.2.1.tar.bz2 [root@localhost setfiles]# tar jfvx freetype-2.2.1.tar.bz2 [root@localhost setfiles]# cd freetype-2.2.1 [root@localhost freetype-2.2.1]# ./configure && make && make install [root@localhost freetype-2.2.1]# cd .. [root@localhost setfiles]# rm -rf freetype-2.2.1

표 19 FREETYPE2 설치 과정 (4) LIBJPEG 설치 (JPG 포맷을 다루기 위한 라이브러리) [root@localhost setfiles]# wget ftp://ftp.superuser.co.kr/etc/jpegsrc.v6b.tar.gz [root@localhost setfiles]# tar xvfz jpegsrc.v6b.tar.gz [root@localhost setfiles]# cd jpeg-6b [root@localhost jpeg-6b]# ./configure --enable-shared --enable-static [root@localhost jpeg-6b]# make && make test [root@localhost jpeg-6b]# mkdir /usr/local/man/man1 [root@localhost jpeg-6b]# make install [root@localhost jpeg-6b]# cd .. [root@localhost setfiles]# rm -rf jpeg-6b

표 20 LIBJPEG 설치 과정 다른 점은 중간에 /usr/local/man/man1이라는 디렉토리를 생성합니다. 이유는 make install 하면 /usr/local/man/man1 디렉토리가 없다고 멘 페이지가 설치가 되지 않는다는 에러가 납니다.

(5) GD 설치 (그래픽 관련 라이브러리) [root@localhost setfiles]# wget ftp://ftp.superuser.co.kr/etc/gd-2.0.33.tar.gz [root@localhost setfiles]# tar xvfz gd-2.0.33.tar.gz [root@localhost setfiles]# cd gd-2.0.33 [root@localhost gd-2.0.33]# ./configure && make && make install [root@localhost gd-2.0.33]# cd .. [root@localhost setfiles]# rm -rf gd-2.0.33

표 21 GD 설치 과정 (6) LIBXML2 설치 [root@localhost setfiles]# wget ftp://ftp.superuser.co.kr/etc/libxml2-2.6.16.tar.gz [root@localhost setfiles]# tar xvfz libxml2-2.6.16.tar.gz [root@localhost setfiles]# cd libxml2-2.6.16 [root@localhost libxml2-2.6.16]# ./configure && make && make install .......... 설치 과정이 출력 됩니다. 다른 라이브러리보다 다소 시간이 소요됩니다. ........... [root@localhost libxml2-2.6.16]# cd .. [root@localhost setfiles]# rm -rf libxml2-2.6.16

표 22 LIBXML2 설치 과정


(7) LIBICONV 설치 [root@localhost setfiles]# wget ftp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.11.tar.gz [root@localhost setfiles]# tar xvfz libiconv-1.11.tar.gz [root@localhost setfiles]# cd libiconv-1.11 [root@localhost libiconv-1.11]# ./configure --prefix=/usr/local [root@localhost libiconv-1.11]# make [root@localhost libiconv-1.11]# make install [root@localhost libiconv-1.11]# cd .. [root@localhost setfiles]# ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2 [root@localhost setfiles]# rm -rf libiconv-1.11

표 23 LIBICONV 설치 과정 (8) SWF 설치 (플래쉬 관련 라이브러리) [root@localhost setfiles]# wget ftp://ftp.sgi.com/sgi/graphics/grafica/flash/dist.99.linux.tar.Z [root@localhost setfiles]# tar xvfz dist.99.linux.tar.Z [root@localhost setfiles]# mkdir /usr/local/swf [root@localhost setfiles]# cd dist [root@localhost dist]# mkdir /usr/local/swf/include [root@localhost dist]# mkdir /usr/local/swf/lib [root@localhost dist]# mkdir /usr/local/swf/fonts [root@localhost dist]# mkdir /usr/local/swf/psfonts [root@localhost dist]# mkdir /usr/local/swf/bin [root@localhost dist]# cp swf.h /usr/local/swf/include [root@localhost dist]# cp libswf.a /usr/local/swf/lib [root@localhost dist]# cp bin/* /usr/local/swf/bin [root@localhost dist]# cp fonts/* /usr/local/swf/fonts [root@localhost dist]# cp psfonts/* /usr/local/swf/psfonts [root@localhost dist]# cd .. [root@localhost setfiles]# rm -rf dist

표 24 SWF 설치 과정 (9) MCRYPT 설치 [root@localhost setfiles]# wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.6.tar.gz [root@localhost setfiles]# tar xvfz libmcrypt-2.5.6.tar.gz [root@localhost setfiles]# cd libmcrypt-2.5.6 [root@localhost libmcrypt-2.5.6]# ./configure && make && make install [root@localhost libmcrypt-2.5.6]# cd .. [root@localhost setfiles]# rm -rf libmcrypt-2.5.6

표 25 MCRYPT 설치 과정


나. MySql5 설치 상기 라이브러리를 정상적으로 모두 설치 했다면 MySql5를 설치합니다. 설치 과정은 아래 표의 순서로 하면 되겠습니다. [root@localhost setfiles]# wget ftp://ftp.superuser.co.kr/db/mysql/mysql-5.0.24.tar.gz [root@localhost setfiles]# tar xvfz mysql-5.0.24.tar.gz [root@localhost setfiles]# cd mysql-5.0.24 [root@localhost mysql-5.0.24]# ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --disable-shared

--enable-assembler

--with-client-ldflags=-all-static

--with-thread-safe-client

--with-mysqld-ldflags=-all-static

--with-mysqld-user="mysql"

--with-readline

--without-docs --without-bench --with-charset=euckr [root@localhost mysql-5.0.24]# make [root@localhost mysql-5.0.24]# make install [root@localhost mysql-5.0.24]# cd .. [root@localhost setfiles]# rm -rf mysql-5.0.24

표 26 MySql5 설치 과정 ◈ MySql5를 설치한 후 다음과 같은 설정을 합니다.

a. 설정 파일 복사(이미 파일이 존재하면 덮어씁니다.) [root@localhost setfiles]# cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf b. 기본 db 생성 [root@localhost setfiles]# /usr/local/mysql/bin/mysql_install_db c. mysql 운영 사용자 생성 홈 디렉토리는 필요 없기 때문에 -M 옵션을 주어서 사용자를 생성합니다. [root@localhost setfiles]# useradd -M mysql d. data 디렉토리를 mysql이라는 사용자 권한으로 바꾸어 주어야 합니다. [root@localhost setfiles]# chown -R mysql:mysql /usr/local/mysql/data e. 아무곳에서나 mysql 및 mysqldump 명령어를 실행가능하게 심볼릭 링크를 걸어줍니다. (걸어주기전 /usr/bin 아래에 실행파일이 존재하지 않는지를 먼저 확인합니다.) [root@localhost setfiles]# ln -s /usr/local/mysql/bin/mysql /usr/bin/ [root@localhost setfiles]# ln -s /usr/local/mysql/bin/mysqldump /usr/bin/ f. mysql 데몬을 실행시킵니다. [root@localhost setfiles]# /usr/local/mysql/bin/mysqld_safe & g. mysql root 비밀번호를 설정합니다. [root@localhost setfiles]# /usr/local/mysql/bin/mysqladmin -u root password "암호"

표 27 MySql5 설치 후 설정 사항

--without-debug


다. APACHE2 설치 다음은 Apache 웹서버를 설치 하겠습니다. [root@localhost setfiles]# wget ftp://ftp.superuser.co.kr/apache/httpd-2.2.2.tar.gz [root@localhost setfiles]# tar xvfz httpd-2.2.2.tar.gz [root@localhost setfiles]# cd httpd-2.2.2 [root@localhost httpd-2.2.2]# ./configure --prefix=/usr/local/apache2 --enable-modules=so --enable-so --enable-rewrite [root@localhost httpd-2.2.2]# make [root@localhost httpd-2.2.2]# make install [root@localhost httpd-2.2.2]# cd .. [root@localhost setfiles]# rm -rf httpd-2.2.2

표 28 APACHE2 설치 과정 Apache 를 설치 완료 한 후에 환경설정 및 운용법에 대해서는 PHP 설치를 완료한 후에 합니다.

라. PHP5 설치

[root@localhost setfiles]# wget http://kr.php.net/get/php-5.2.0.tar.gz/from/this/mirror // 설치전 라이브러리를 인식 시키위해 ld.so.conf 파일을 수정합니다. [root@localhost setfiles]# vi /etc/ld.so.conf * 다음라인을 추가 합니다. /lib /usr/lib /usr/local/lib /usr/local/include (imap 때문에 추가해 봤음) /usr/local/mysql/lib/mysql // 추가한 후 저장하고 빠져나와서 ldconfig 명령으로 적용 시킵니다. [root@localhost setfiles]# ldconfig // 이제 본격적으로 PHP를 설치합니다. [root@localhost setfiles]# tar xvfz php-5.2.0.tar.gz [root@localhost setfiles]# cd php-5.2.0 [root@localhost

php-5.2.0]#

./configure

--prefix=/usr/local/php

--with-apxs2=/usr/local/apache2/bin/apxs --enable-debug=no --with-png-dir=/usr

--enable-track-vars=yes --with-zlib-dir

--with-mysql=/usr/local/mysql

--enable-sysvshm=yes

--enable-sysvsem=yes

--enable-url-fopen-wrapper=yes

--with-jpeg-dir=/usr

--with-gdbm=/usr

--with-ttf --enable-ftp

--with-tiff-dir=/usr --enable-memory-limit --enable-mbstring --with-expat-dir=/usr --enable-sockets --enable-wddx --with-freetype-dir=/usr --enable-bcmath --enable-mbstr-enc-trans --enable-mbregex --enable-exif

--with-gd

--with-openssl=/usr

--enable-gd-native-ttf

--with-iconv=/usr/local

--with-xml

--enable-gd-imgstrttf --with-xmlrpc

--enable-calendar

--with-swf=/usr/local/swf

--with-mcrypt=/usr/local/lib --with-openssl --with-imap=/usr/local/imap --with-kerberos [root@localhost php-5.2.0]# make [root@localhost php-5.2.0]# make install


//설치가 완료되면 환경설정파일을 복사합니다. [root@localhost php-5.2.0]# cp php.ini-dist /usr/local/php/lib/php.ini [root@localhost php-5.2.0]# cd .. [root@localhost setfiles]# rm -rf php-5.2.0

표 29 PHP5 설치 과정

마. APACHE2 환경 설정 PHP 설치가 완료되고 ZendOptimizer 를 설치하기전에 APACHE 설정을 확인하고 넘어 가겠습니다. 환경 설정 파일은 /usr/local/apache2/conf/http.conf입니다. 환경 설정 파일을 열어 알맞게 편집하겠습니다.

[root@localhost setfiles]# vi /usr/local/apache2/conf/httpd.conf 표 30 APACHE2 설치된 경로 확인 보는 바와 같이 여러 디렉토리가 있습니다. Apache 환경설정파일은 conf 디렉토리 내에 httpd.conf 파일입니다. 이 설정파일을 열어 다음을 확인 및 수정할 부분을 필수적인 부분만 설명하겠습니다. Apache 설정에 관한 자세한 사항은 슈퍼유저코리아 등과 같은 커뮤니티 사이트에서 쉽게 정보를 얻을 수 있을 것입니다. [root@localhost setfiles]# vi /usr/local/apache2/conf/httpd.conf ◈ HTTPD.CONF 확인 1. 53 line 에 다음을 확인합니다. LoadModule php5_module

modules/libphp5.so

2. 65 line 에 다음을 수정합니다. User daemon

User nobody

Group daemon

Group nobody

3. 86 line 에 다음을 수정합니다. ServerAdmin you@example.com

ServerAdmin [관리자 이메일]

4. 164 line 에 다음을 수정/추가 합니다. <IfModule dir_module> DirectoryIndex index.html </IfModule> 위 내용은 index.html 을 기본으로 실행되게 되어 있는 것입니다. index.php 를 기본으로 실행되게 추가 하겠습니다. 관리자 입맛에 맞게 수정/추가 하면 됩니다. <IfModule dir_module> DirectoryIndex index.php index.php3 index.html index.htm </IfModule> 이렇게 수정함으로써 index.php index.php3 index.html index.htm 순서로 먼저 실행되게 됩니다. 만약 index.php 가 폴더내에 없으면 index.php3를 찾고, 없으면 index.html 이런 식입니다. 5. 213 line 의 접속 로그 설정을 다음과 같이 수정하는 것이 좋을 것입니다.


CustomLog logs/access_log common 이 설정대로 하면 모든 그림 파일 및 플래시 파일이 로그에 남습니다. 그렇게 되면 조금만 지나면 이 로그 파일의 용량이 엄청나게 늘어납니다. 그래서 그림 파일 및 플래시 파일이 로그에 안남도록 하겠습니다. SetEnvIfNoCase Request_URI (gif|png|jpg|css|js|bmp|jpeg|swf)$ IMAGE=1 CustomLog /usr/local/apache2/logs/access_log common env=!IMAGE 로 수정/추가 합니다. 6. 308 line 다음에 PHP 실행 관련 설정을 추가합니다. 307 : AddType application/x-gzip .gz .tgz 여기 다음 줄에 다음 두 라인을 추가합니다. ----------------------------- 추가 내용 -----------------------------AddType application/x-httpd-php .php .phtml .php3 .inc .ph .html .htm AddType application/x-httpd-php-source .phps -------------------------------------------------------------------AddType application/x-httpd-php .php .phtml .php3 .inc .ph .html .htm 여기는 확장자가 .php .phtml .php3 .inc .ph .html .htm 파일에서 php 코드 실행되게 설정한 것입니다. AddType application/x-httpd-php-source .phps 여기는 .phps 확장자는 소스를 그대로 보여주도록 하는 것입니다. 7. 유저 홈 디렉토리 설정 및 가상 호스트 설정 [유저 홈 디렉토리에 대한 설정] # User home directories #Include conf/extra/httpd-userdir.conf 설정 내용 아랫 부분에 이 부분이 있습니다. Include conf/extra/httpd-userdir.conf

이 라인의 맨 앞의 주석(#)을 지웁니다.

[가상 호스트에 대한 설정] # Virtual hosts #Include conf/extra/httpd-vhosts.conf 유저 홈 디렉토리 설정 조금 아래에 이 부분이 있습니다. 가상 호스트를 운영하려면 해당 라인의 주석(#)을 지우고 httpd-vhosts.conf 파일을 수정/관리 합니다. 일단 필자는 이 부분은 그대로 두고 넘어 가겠습니다. 모든 설정을 마쳤으면 저장하고 빠져나옵니다. [root@localhost setfiles]# vi /usr/local/apache2/conf/extra/httpd-userdir.conf ◈ httpd-userdir.conf 확인(유저 홈 디렉토리 설정 확인) 이 설정은 사용자의 홈페이지 디렉토리를 설정할 수 있습니다. UserDir public_html 이 부분이 사용자가 웹서비스를 게시 하려면 사용자 계정 아래에 public_html 폴더를 만들어 public_html 폴더 아래에 홈페이지를 업로드 해서 게시 할수 있음을 의미합니다. 특별히 수정하지 않아도 됩니다.

표 31 APACHE2 환경 설정 확인


바. PHP 환경 설정 /usr/local/php/lib/php.ini 이 PHP 환경설정 파일입니다. 이 파일을 열어 필요한 부분을 수정합니다. 다음은 필자가 몇가지 수정한 사항이며 상세한 설정은 서버관리자가 판단하여 알맞게 설정하면 됩니다. [root@localhost setfiles]# vi /usr/local/php/lib/php.ini 1. 255 line 을 수정합니다. max_execution_time = 300 //PHP 스크립트 실행시간 제한(초단위) max_input_time = 600 memory_limit = 256M

//최대 입력 시간 제한(초단위) //메모리 사용 제한

2. 403 line 을 수정합니다. register_globals = Off 를 register_globals = On 으로 수정합니다. 3. 423 line 을 수정합니다. post_max_size = 300M //POST로 전송 가능 데이터 크기를 제한합니다.(파일 업로드에 영향을 미침) 4. 528 line 을 수정합니다. upload_max_filesize = 200M //파일업로드 크기 제한 이정도로 수정하고 저장 후 빠져나옵니다.

표 32 PHP 환경 설정

사. ZendOptimizer3.2 설치

[root@localhost

setfiles]#

ftp://ftp.superuser.co.kr/ZendOptimizer/ZendOptimizer-3.2.0-linux-glibc21-i386.tar.gz [root@localhost setfiles]# tar xvfz ZendOptimizer-3.2.0-linux-glibc21-i386.tar.gz [root@localhost setfiles]# cd cd ZendOptimizer-3.2.0-linux-glibc21-i386 [root@localhost cd ZendOptimizer-3.2.0-linux-glibc21-i386]# ./install.sh 하면 다음과 같은 화면이 나오면서 설치를 시작합니다.

[OK]에 엔터를 입력하면서 계속 엔터를 입력하면서 다음으로 진행 하면 됩니다. 조심스럽게 진행하다 보면 다음과 같이 php.ini 파일의 경로를 물어옵니다.

wget


/usr/local/php/lib

여기에 경로를 /usr/local/php/lib 로 입력하고 [OK]를 입력하고 진행합니다.

마지막으로 Apache를 사용하느냐?고 물어옵니다. [Yes]를 입력하고 진행합니다.

아파치 실행 파일의 경로를 확인하는 화면이 나옵니다. 이상 없다면 [OK]를 입력하고 진행합니다. 그러면 설치를 진행하는 화면이 나오고 잠시 기다리면 다음과 같은 화면이 나타납니다.

[OK]를 입력합니다.

설치 성공을 알리는 메시지와 함께 웹서버를 재시작해야 적용이 된다고 합니다. [OK]를 입력합니다.


웹서버를 재시작할건지 물어옵니다. [Yes]를 입력합니다. 그러면 다음과 같이 Apache를 재시작합니다. 잠시 기다리면 됩니다.

잠시 후 이상이 없다면 다음과 같이 재시작 성공 메시지가 나타납니다.

[OK]를 클릭하면 종료하고 셀 프롬프트로 나갑니다. [root@localhost cd ZendOptimizer-3.2.0-linux-glibc21-i386]#

표 33 ZendOptimizer3.2 설치

이상 모든 APM 환경에서 웹서버 구축을 완료하였습니다. 그럼 이렇게 셋팅된 서버가 정상적으로 잘 셋팅이 되었는지를 간단하게 확인해 보도록 하겠습니다. 먼저 홈디렉토리에 phpinfo() 합수를 이용해 PHP 설치 정상 유무를 확인해 봅니다. [root@localhost setfiles]# cd /usr/local/apache2/htdocs

//기본 홈 디렉토리로 이동

[root@localhost htdocs]# vi index.php <? phpinfo(); ?> :wq! [root@localhost htdocs]# 이렇게 작성한 index.php 파일을 웹브라우저로 http://설정한 아이피 또는 http://localhost 로 확인하면 정상적인 페이지가 출력이 되면 APM 셋팅은 완료된 것입니다.

표 34 APM 설치 확인 다음으로 PHP에서 Imap 관련 함수가 제대로 작동하는지 알아보겠습니다. 이는 PHP에 Imap 관련 함수 셋팅에 많은 어려움들을 격고 있기 때문에 그냥 보여드리는 것입니다. [root@localhost setfiles]# cd /usr/local/apache2/htdocs [root@localhost htdocs]# vi imap.php

//기본 홈 디렉토리로 이동


<? $ID = "테스트ID"; $passwd = "비밀번호"; $mbox = imap_open ("{localhost:143}INBOX", "$ID", "$passwd"); if ($mbox != false) print "Success!"; else print "Fail!"; ?> :wq! [root@localhost htdocs]# 이렇게 작성한 index.php 파일을 웹브라우저로 http://설정한 아이피/imap.php 또는 http://localhost/imap.php 로 확인하면 "Success!" 라고 출력이 되면 성공입니다.

표 35 PHP의 IMAP 관련 함수 정상 확인

[ 부록 ] yum 사용방법 1. 업데이트 목록 확인. 현재 업데이트 서버에 올라와 있는 패키지의 목록은 check-update 옵션으로 확인할 수 있습니다. [root@localhost ~]# yum check-update 단, check-update의 경우 현재 시스템에 설치된 패키지를 기준으로 업데이트 목록을 출력해주기 때문에 시스템에 설치되 지 않은 패키지 목록은 볼 수 없습니다. 이들 목록은 list 명령을 사용합니다. [root@localhost ~]# yum list 일반적으로 리스트중 업데이트가능한 항목은 updates 업데이트 할 항목이 없는경우 base 라고 출력됩니다. 추가적으로 현재 클라이언트 시스템에 설치된 모든 패키지 목록은 다음으로 확인 합니다. [root@localhost ~]# yum list installed

2. 업데이트 Yum에는 update와 install 이라는 두가지 설치 모드를 가지고 있습니다. update는 말 그대로 업데이트 된 패키지를 설치하는 것으로, 기본적으로는 업데이트 된 모든 패키지를 설치하게 되는데, 일부만을 업데이트 하고자 한다면 직접 지정하여 설치하면 됩니다. [root@localhost ~]# yum update [package1] [package2] [...] 뒤에 패키지를 지정하지 않고 yum update를 실행하면 업데이트 가능한 항목들과 새로 설치될 항목들의 리스트(헤더파


일)만 다운 받고 설치할 것인지 물어보며 Y 를 누르면 모든 항목을 자동 설치합니다. (의존성검사하여 필요한 화일까지 같이 설치합니다.) install은 현재 클라이언트 시스템에 설치되지 않은 패키지를 설치할 때 사용합니다. [root@localhost ~]# yum install package1 [package2] [...]

3. 패키지 제거 [root@localhost ~]# yum remove package1 [package2] [...]

4. 패키지 정보 보기 [root@localhost ~]# yum info packages1

5. 업데이트 서버에 있는 패키지 정보 보기 [root@localhost ~]# yum info updates

6. 기타 정보 Yum 설정 파일은 /etc/yum.conf 에 있습니다. 패키지는 설치되기 전에 /var/cache/yum에 다운로드 됩니다.

필자 정보 및 사용범위 규정 이름 : 이민호

/

이메일 : minho444@hanmail.net

본 문서는 수정 및 배포가 불가합니다. 본 문서의 저작권은 이민호(필자)에게 있습니다. 본 문서는 저작권법에 의해 보호 받으며, 위반시에는 법률에 따라 처벌을 받게 됩니다. 본 문서는 재판매, 재배포, 블로그, 게시판, 홈페이지 등에 게시할 목적으로 이용할 수 없습니다.


센트OS  

센트오에스 설치 문서

Advertisement
Read more
Read more
Similar to
Popular now
Just for you