• 이 강좌의 저작권은 mckdh.net에게 있고 아래 저작자표시-비영리-변경금지 의 Creative Commons License 약관을 따라야 합니다.
  • 이 강좌는 위키로 제작되어 문서의 추가, 수정, 삭제가 용이하기 때문에 지속적으로 문서가 진화될 예정입니다.

Contents

1 홈 리눅스 그리드 컴퓨터 환경 설치 배경
2 서버 설치 (레드헷9)
2.1 네트워크 설정
2.2 telnet, ftp 설정
2.3 java 설치
2.4 mysql 설치
2.5 Apache 설치
2.6 PHP 설치
2.7 Tomcat 설치
2.8 JK 설치
2.9 삼바 설치
2.10 NFS 설치
2.11 SVN 설치
2.12 위키 서버 설치
3 클라이언트 설치 (우분투 7)
3.1 우분투 소개
3.2 우분투 다운로드
3.3 우분투 설치
3.4 설치후 해야할 일


1 홈 리눅스 그리드 컴퓨터 환경 설치 배경 #

집에 컴퓨터가 (1.7Ghz 512Mb)인 메인 컴퓨터와 (1Ghz 256Mb)인 안쓰는 컴퓨터가 있는데, 안 쓰는 컴퓨터를 리눅스 서버로 만들고 내 메인 컴퓨터는 리눅스 클라이언트로 연결하여 활용하기로 하였다.
각종 서버를 설치하였더니 저사양 컴퓨터에서도 다양한 서버들이 잘 돌아가며, 남는 하드도 자료 저장소로 유용하게 활용하고 있다.
리눅스 클라이언트인 우분투는 윈도우 못지 않은 편리한 설치와 다양한 유틸리티를 제공한다. 조만간 우분투등의 리눅스 데스크탑이 윈도우를 따라잡을 수 있을 것이며, 우리는 윈도우에 종속될 필요 없이 다양한 선택을 할 수 있는 혜택을 누릴 것이라 생각하였다.
이런 구형 컴퓨터의 최대 활용이야 말로 자원의 재활용을 실천하면서 강력한 집에서의 그리드 컴퓨터 환경 이라는 생각이 들었다.

* (인터넷) <--> 집((서버(1Ghz 256Mb)) <-> (클라이언트(1.7Ghz 512Mb)) 구조
* apache, php, jk, tomcat등은 출처 알수 없는 문서를 참고했음

2 서버 설치 (레드헷9) #

2.1 네트워크 설정 #

0. 인터넷 회선과 연결되는 리눅스 서버, 데스크탑 클라이언트가 각각 하나씩 있음
레드헷 9 기준
1. IP 설정
1.0 인터넷 회선과 연결되는 네트워크 카드 하나,
데스크탑 클라이언트와 연결되는 네트워크 카드 하나가 필요함
1.1 인터넷 회선과 연결되는 네트워크 카드 설정
- 설정 파일 : /etc/sysconfig/network-scripts/ifcfg-eth0
- 설정 내용 : 대개 DHCP 일것이므로 아래와 같이 설정함
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

1.2 데스크탑 클라이언트와 연결되는 네트워크 카드 설정
- 설정 파일 : /etc/sysconfig/network-scripts/ifcfg-eth1
- 설정 내용 :
DEVICE=eth1
BOOTPROTO=static // 직접 설정
BROADCAST=192.168.1.255
IPADDR=192.168.1.1 // 보통 이렇게
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes

1.3 접속 확인
- 리스타트 : /etc/init.d/network restart
- ifconfig eth0 으로 인터넷 회사로부터 아이피를 할당받았는가 확인
- ping으로도 확인

2. 내부 공유 설정
2.1 IP 마스커레이드 설정
- IP 마스커레이드란? 인터넷이 되는 리눅스 서버에서 내부 네트워크로 연결된 사설 IP
들의 패킷을 외부 네트워크로 나갈 수 있도록 포워딩해 주는 기술로 인터넷 회선 하나를
여러 사람들이 함께 사용하고자 할때 또는 내부 네트워크의 보안 유지에 유용함
- 리눅스 서버 eth0은 인터넷 회선과, eth1은 클라이언트와 연결되어 있는 상황에서
아래 명령어를 그대로 적용
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

- iptables -L -t nat 명령을 실행하여 마스커레이드 설정이 제대로 되었는지 확인
Chain PREROUTING (policy ACCEPT)
target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination

MASQUERADE all -- anywhere anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

- echo "1" > /proc/sys/net/ipv4/ip_forward 로 IP forwarding 기능 활성화
- /etc/sysctl.conf 를 열어서 net.ipv4.ip_forward = 1 로 줄것
(이거 몰라서 한참 해맸음)

2.2 클라이언트 설정
- 윈도우
IP : 192.168.1.2 ~ 254 설정
게이트웨이 : 192.168.1.1 로 설정
DNS : 인터넷 회선 DNS 입력
윈도우 재시작 -> ping 확인

- 리눅스
ifconfig eth0 192.168.1.2
route add default gw 129.168.1.1
/etc/resolv.conf 에 DNS 등록

3. CODNS 설정
2.1 CODNS란 유동IP를 고정도메인과 맵핑해주는 서비스를 제공하는 회사의 서비스중 하나다.
2.2 회원가입->리눅스용프로그램복사->CODNS_CLIENT.LINUX -start 로 실행

->CODNS_CLIENT.LINUX -change 로 각종 설정 셋팅 (http://www.codns.com 참고)

2.2 telnet, ftp 설정 #

0. 리눅스 서버를 제어하는 기본 관문인 telnet, ftp를 설정한다.

1. telnet
1.0 rpm -qa | grep telnet 하여 telnet 패키지가 없으면 구해서 설치
1.1 /etc/xinetd.d/telnet 을 아래와 같이 설정한다.

service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = no
}

1.2 /etc/init.d/xinetd restart 로 텔넷 작동

1.3 telnet localhost 로 작동 확인

2. ftp (여기는 vsftp임)

2.0 rpm -qa | grep vsftpd 하여 vsftpd 패키지가 없으면 구해서 설치

2.1 /etc/xinetd.d/vsftpd 를 아래와 같이 설정한다.

service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
nice = 10
disable = no
}

2.2 /etc/vsftpd/vsftpd.conf 설정

listen=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
connect_from_port_20=NO
userlist_enable=YES
pasv_enable=YES
(내가 고친 설정들)

2.3 /etc/init.d/xinetd restart 로 ftp 작동

2.3 java 설치 #

0. 배포파일 다운로드 : http://java.sun.com/j2se (톰캣 5.x는 1.5와 궁합이 맞음)

1. 설치할 경로복사, 나는 /usr/local/servers로 jdk-1_5_0_11-linux-i586.bin을 옮겼다.

2. chmod 755 jdk-1_5_0_11-linux-i586.bin

3. /etc/profile 설정 추가

JAVA_HOME=/usr/local/servers/jdk1.5.0_11
PATH=$PATH:
$JAVA_HOME/bin:

export JAVA_HOME

4. source /etc/profile

5. 임의의 위치에서 java 를 실행하여 확인

2.4 mysql 설치 #

0. 배포파일 다운로드 : mysql.org 나는 소스컴파일이 아닌 자동설치 파일을 받았음

1. 설치할 경로 복사 및 압축 해제

2. 설치 관련 주요 명령어(mysql-standard-4.1.22-pc-linux 에 해당함)
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> cd /usr/local
shell> gunzip < /PATH/TO/MYSQL-VERSION-OS.tar.gz | tar xvf -
shell> ln -s FULL-PATH-TO-MYSQL-VERSION-OS mysql
shell> cd mysql
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> chgrp -R mysql .

shell> bin/mysqld_safe --user=mysql 3. /etc/profile 설정 추가
MYSQL=/usr/local/servers/mysql
PATH=$PATH:
$JAVA_HOME/bin:$MYSQL/bin:

export JAVA_HOME MYSQL

4. 캐릭터셋 과 관련된 my.cnf 설정
mysql 밑에서 ./support-files/my-medium.cnf 파일을 /etc/my.cnf 파일로 복사한다.
client mysqld mysqldump 에 아래의 설정을 삽입한다.
default-character-set = utf8

5. mysql 계정 주요 설정
5.1 root 암호 설정

- mysql 관리자 root 패스워드 설정하기
# mysql -u root mysql
mysql> update user set password = password('shcm0816') where user = ' root';

- 빠져나간후 데이터베이스를 재시작
# mysqladmin -u root reload

- 패스워드 입력
# mysql -u root -p mysql

5.2 user 계정 생성

- GRANT명령을 이용한 사용자 생성(이 방법이 권장된다)

- mckdh이라는 DB를 만들고, 이 DB를 아래에서 나열된 권한을 가진 mckdh이라는

사용자를 생성
create database mckdh;
grant usage on mckdh.* to mckdh@localhost identified by 'mckdh';
grant usage on mckdh.* to mckdh@'%' identified by 'mckdh';
flush privileges;

6. 부팅 자동실행 설정
root@localhost mysql# cp ./support-files/mysql.server /etc/init.d/mysqld
root@localhost mysql# chkconfig --level 3 mysqld on

2.5 Apache 설치 #

- 현재 Apache 웹데몬이 실행되고 있다면 실행을 중지시킴

shell> /etc/init.d/httpd stop

- 설치기존에 존재하는 RPM 패키지를 찾아서 삭제

shell> rpm -qa | grep httpd
shell> rpm -e httpd RPM name

- 적당한 위치에서 다운로드 받은 배포파일의 압축을 푼다.
shell> mv httpd-2.0.52.tar.gz /usr/local/src
shell> cd /usr/local/src
shell> tar xvfz httpd-2.0.52.tar.gz

- 생성된 디렉토리 httpd-2.0.52로 이동
shell> cd httpd-2.0.52

- 다음과 같은 옵션을 사용하여 configure를 진행.
shell> ./configure --enable-layout=RedHat --enable-rule=SHARED_CORE
--enable-modules=so --enable-so

SVN 연동시 아래의 설정 덧붙임

--prefix=/usr/local/apache2 --enable-suexec \
--enable-so --with-suexec-caller=bin \
--enable-ssl --with-ssl=/usr/local/ssl --enable-cache \
--enable-ext-filter --with-z=/usr/include --enable-dav \
--with-dbm=db4 --with-berkeley-db=/usr/local/BerkeleyDB.4.2


- 이어서 컴파일과 인스톨을 실행.

shell> make

shell> make install

- 위의 과정으로 설치를 진행하면 Apache의 root 디렉토리는 /usr이 되고,
웹서비스 /var/www 디렉토리 밑에서 이루어지며,
설정파일들은 /etc/httpd/conf 디렉토리에,
실행파일들은 /usr/sbin 디렉토리에 설치됨.

- 마지막으로 /etc/httpd/conf/httpd.conf 파일의 설정을 변경.
기본적으로 변경해야할 부분은
;servername www.yourdomain.com:80 의 주석을 제거하고 주소를 변경.
한글을 지원하기 위해서 AddDefaultCharset ISO-8859-1 부분을 찾아서 AddDefaultCharset utf8 또는
AddDefaultCharset euc_kr 로 변경.

- /usr/sbin/apachectl 파일을 /etc/init.d 디렉토리에 httpd로 이름을 변경하여 복사.
파일이 있으면 덮어쓴다.
shell> cp /usr/sbin/apachectl /etc/rc.d/init.d/httpd

- 부팅시 자동으로 httpd 데몬이 실행되도록 /etc/rc.d/init.d/httpd의 symbolic link 파일을 생성.(절대경로)
shell> ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc0.d/K90httpd
shell> ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc3.d/S89httpd

2.6 PHP 설치 #

- 기존에 PHP가 RPM으로 설치되어있는지 확인한 후 설치되어 있으면 RPM을 제거.
shell> rpm -qa | grep php
shell> rpm -e (--nodeps) php RPM name

- GD 옵션을 사용하기 위해 libpng RPM가 설치되지 않았으면 다운로드 받아서 설치한다. http://ftp.redhat.com/pub/redhat/linux/9/en/os/i386/RedHat/RPMS/libpng-devel-1.2.2-16.i386.rpm
shell> rpm -ivh libpng-devel-1.2.2-16.i386.rpm

- 배포파일을 적당한 위치로 옮긴 후 압축을 풀어줍니다.
shell> mv php-4.3.9.tar.gz /usr/local/src
shell> cd /usr/local/src
shell> tar xvfz php-4.3.9.tar.gz

- 압축을 풀면 php-4.3.9 디렉토리가 생성됩니다.
디렉토리 안으로 이동하여 configure를 실행시킵니다.
shell> cd ./php-4.3.9
shell> ./configure --with-apxs2=/usr/sbin/apxs --with-config-file-path=/etc --with-zlib --with-gd --with-mysql --with-mod-charset --with-language=korean --with-charset=euc_kr

- 컴파일과 인스톨을 진행.
shell> make
shell> make install

- 다음은 위의 과정으로 설치를 진행했을 경우의 설치 경로입니다.
PHP CLI
binary : /usr/local/bin/
PHP CLI man page : /usr/local/man/man1/
Apache
Shared module (libphp4.so) : /usr/lib/apache/
shared extensions :
/usr/local/lib/php/extensions/no-debug-non-zts-20020429
PEAL environment :
/usr/local/lib/php/
build environment : /usr/local/lib/php/build/
header
files : /usr/local/include/php/
helper programs : /usr/local/bin/

- /etc/httpd/conf/httpd.conf 파일의 AddType 부분으로 이동해서 다음을 추가.
AddType application/x-httpd-php .php .phtml
AddType application/s-httpd-php-source .phps

DirectoryIndex 부분을 찾아 index.php와 index.phtml을 추가.
DirectoryIndex index.html index.htm index.html.var index.php index.phtml

2.7 Tomcat 설치 #

- apache-tomcat-5.5.23 을 예를 들어 /usr/local/servers에 복사
- tar xvfz apache-tomcat-5.5.23
- ln -s apache-tomcat-5.5.23 tomcat
- /etc/profile
CATALINA_HOME=/usr/local/servers/tomcat
CLASSPATH=$JAVA_HOME/lib/tools.jar:
$JAVA_HOME/lib/activation.jar:
$JAVA_HOME/lib/mail.jar:
$CATALINA_HOME/common/lib/servlet-api.jar
PATH=$PATH:
$JAVA_HOME/bin:$MYSQL/bin:$CATALINA_HOME/bin

export JAVA_HOME CATALINA_HOME MYSQL CLASSPATH
- 톰켓 자동실행 설정 (이거 많이 해맸음)
#vi /etc/rc.d/init.d/tomcat 로 아래 설정 복사
****************************************************
#!/bin/sh
#
#Startup script for Tomcat, the Apache Servlet Engine
#
# chkconfig: - 85 15
# description: Start Tomcat
#
# processname: tomcat
#
# Source function library.
. /etc/rc.d/init.d/functions
export JAVA_HOME=/usr/local/java
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:
$JAVA_HOME/bin:$CATALINA_HOME/bin

# See how we were called.
case "$1" in
start)
echo -n "Starting tomcat: "
daemon $CATALINA_HOME/bin/catalina.sh start
touch /var/lock/subsys/tomcat
echo

stop)
echo -n "Shutting down tomcat: "
daemon $CATALINA_HOME/bin/catalina.sh stop
rm -f /var/lock/subsys/tomcat
echo

restart)
$0 stop
sleep 2
$0 start

)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0

******************************************

#cd /etc/rc.d/init.d/
#chmod 755 tomcat
#chkconfig --add tomcat
#chkconfig --level 3 tomcat on

- 재 부팅시 java 작동 여부 확인..
#reboot
#ps -aux | grep java

2.8 JK 설치 #

- /native 폴더로 가서

./buildconf.sh

./configure --with-apxs=/usr/local/httpd-2.2.4/bin/apxs

make && make install

/usr/local/httpd-2.2.4/moduels
안에 mod_jk.so가 있으면 제대로 설치되었음

- /etc/httpd/conf/httpd.conf 파일을 vi와 같은 편집기로 열어 LoadModule 부분을 찾아서 다음을 추가.
LoadModule jk2_module lib/apache/mod_jk2.so

DirectoryIndex 부분을 찾아서 index.jsp를 추가.
DirectoryIndex index.html index.html.var index.php index.phtml index.jsp

#UserDir public_html

# jk setup 추가
JkWorkersFile /etc/httpd/conf/workers.properties
JkShmFile /var/log/mod_jk.shm
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkMount /servlet/* mckdh
JkMount /*.jsp mckdh
JkMount /*.do mckdh

다음으로 /etc/httpd/conf 디렉토리에 workers2.properties 파일을 생성. 아래의 설정 내용으로 구성.
shell> cd /etc/httpd/conf
shell> vi worker2.properties
worker.list=mckdh
worker.mckdh.port=8009
worker.mckdh.host=mckdh.codns.com
worker.mckdh.type=ajp13
worker.mckdh.lbfactor=50
worker.mckdh.socket_keepalive=1

- 실행이 안되면 로그 파일들을 확인할 것

2.9 삼바 설치 #

- 환경 : /etc/samba/smb.conf
global

workgroup = MSHOME #윈도우 그룹과 맞춰줄것

server string = Samba Server

hosts allow = 192.168.1. 192.168.2.

printcap name = /etc/printcap
load printers = yes

printing = cups
log file = /var/log/samba/%m.log

max log size = 0

security = share
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
unix password sync = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*password* %n\n *Retype*new*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*


pam password change = yes
dns proxy = no
homes
comment = Home Directories
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775
printers
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
public
path = /home/donghun
public = yes
only guest = yes
writable = yes
printable = no

DONGHUN # 윈도우에서 접속되어 사용되어질 공간
comment = Donghun Use
path = /home/donghun
valid users = donghun
read only = no
writable = yes
public = no
printable = no
create mask = 0765
- 삼바유저 생성
#> smbadduser leemgs:Administrator <--- (Linux ID: win ID)
- Window's ID: Windows's LoginID
- smbpasswd: Window's Password
- 실행 : /etc/rc.d/init.d/smb restart
- 윈도우 클라이언트 확인 : 실행창 \\192.168.1.1\donghun
- 리눅스 클라이언트 확인 : smbclient '\\192.168.1.1\donghun' kdh1234

2.10 NFS 설치 #

1. NFS 설치 여부 확인
root@localhost root# rpm -qa | grep nfs
redhat-config-nfs-1.0.4-5
nfs-utils-1.0.1-2.9

2. 관련 데몬 작동 확인
root@localhost root# rpcinfo -p
프로그램 버전 원형 포트
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 32769 status
100024 1 tcp 32768 status
391002 2 tcp 32769 sgi_fam

2.1 만약 '포트매퍼에 연결할수 없다' 등의 에러 발생시 다음과 같이 포트맴퍼 데몬을 띄운다.
/etc/init.d/portmap start

3. NFS데몬을 띄운다.
/etc/init.d/nfs start

4. 마운트될 디렉토리 설정
vi /etc/exports 에서

/home/donghun 192.168.1.2(rw) 과 같이 설정
(마운트될디렉토리 클라이언트주소(NFS옵션))

5. NFS를 위한 방화벽 설정
-A RH-Lokkit-0-50-INPUT -p udp -m udp -s 192.168.1.0/24 -d 0/0 --dport 2049 -i eth0 -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m udp -s 192.168.1.0/24 -d 0/0 --dport 111 -i eth0 -j ACCEPT

6. NFS 데몬 재실행
/etc/init.d/nfs restart

7. NFS 서버 작동 점검
/etc/init.d/nfs status
exportfs -v

8. 부팅시 NFS 데몬 작동 실행
ntsysv명령 실행 하여 nfs와 portmap을 체크

9. 클라이언트에서 NFS 마운트
프롬프트 상 실행
mount -t nfs 192.168.1.1:/home/donghun /mnt/donghun

부팅시 실행
vi /etc/fstab
192.168.1.1:/home/donghun /mnt/donghun nfs timeo=15,intr

2.12 위키 서버 설치 #

진화하는 위키 위키강좌 http://mckdh.net/53 참고

3 클라이언트 설치 (우분투 7) #

3.1 우분투 소개 #

우분투(Ubuntu)는 데스크탑에서 쉬운 리눅스를 사용할 수 있도록 만들어진 리눅스 배포판입니다. 데비안 GNU/Linux를 기반으로 하고 있고, Canonical 사(Mark Shuttleworth 소유)의 지원을 받고 있습니다. 우분투라는 이름은 남아프리카 어로 "humanity towards others(공동체 의식에 바탕을 둔 인간애)"를 뜻합니다.
(출처: http://ubuntu.or.kr/wiki.php)



3.4 설치후 해야할 일 #

설치후 해야할 일 참고 URL 모음
서버와의 네트워크 연결은 1.2 네트워크 설정 참고
기타 해야될 일
http://kldp.org/node/83170
http://blog.naver.com/kyway?Redirect=Log&logNo=70013239829
vmware 설치 : 리눅스 내의 가상 윈도우 머신
wine 설치 : 리눅스 에서 윈도우 프로그램 단위별 실행 가능 프로그램
Posted by 산골
산골 블로그 소개 저는 하얀머리 개발자와 작가를 꿈꾸는 블로거 산골 입니다. 프로그램 개발자로서 저의 관심사는 개발자의 숨통을 트여준 아이폰 개발, 철학과 같은 깊이가 있는 객체지향 방법론입니다. 글쓰기와 수영을 좋아합니다. 블로그를 통해 관심사를 공유합니다. 제 블로그에 관심 있으시면 아래 RSS나 즐겨찾기로 편하게 구독하세요.

rss Bookmark and Share

댓글을 달아 주세요

  1. BlogIcon 이윤하 2007.08.13 10:06 신고  댓글주소  수정/삭제  댓글쓰기

    개발일을 하는 사람으로서
    이런 글을 읽을 때마다 참으로 부끄러워져......

    산골소년 화이팅.

  2. BlogIcon arma 2007.08.13 10:30 신고  댓글주소  수정/삭제  댓글쓰기


    윗 분!!!
    부끄럽다고 말하지말고 실천하세요...
    이런 습관은 참 좋은 거예요...

    사진 블로그나 만들고 말이야.... 흥 ~~

  3. BlogIcon deneb 2007.08.13 17:40 신고  댓글주소  수정/삭제  댓글쓰기

    윤하는 귀찮아서 안 할꺼에요.
    귀찮은거 무지 싫어함. ㅋㅋ

  4. BlogIcon 2007.08.13 17:43 신고  댓글주소  수정/삭제  댓글쓰기

    --;;

    앞으로 열심히 하겠습니다...