Search Results for '프로그래밍'


1208 posts related to '프로그래밍'

  1. 2010/08/01 FC3 사용자는 설치후 udev-039-10.FC3.1로 경신(update)해야 한다.
  2. 2010/08/01 [리눅스] 데몬리스트
  3. 2010/08/01 RPM사용법
  4. 2010/08/01 Perl에서 한글 인코딩 문제
  5. 2010/08/01 [리눅스] DSO방식 APM, Zend, GD설치
  6. 2010/07/18 [정보] 한글 HWP 문서파일 양식 공개
  7. 2010/06/19 새 SharePoint 서버에 PowerPivot for SharePoint 설치
  8. 2010/06/15 Jabber 개요
  9. 2010/06/07 my-sql 인젝션 복구쿼리
  10. 2010/06/07 만료된 페이지 만들기
  11. 2010/06/07 아파치 (apache) 인증 만들기 htaccess
  12. 2010/06/07 1시간 간격으로 apache log를 rotate하기
  13. 2010/06/07 vista x64용 아파치 (비공식 사이트)
  14. 2010/06/07 sshd 접속 포트변경
  15. 2010/06/07 www 자동으로 붙이기
  16. 2010/06/07 .htaccess를 이용한 특정 디렉토리 접근 관리하기
  17. 2010/06/07 계정을 이동할 때 끝김이 없게 하기
  18. 2010/06/07 vsftpd passive mode 사용
  19. 2010/06/07 vsftp port 변경
  20. 2010/06/07 mod_rewrite 별도 설치
  21. 2010/06/07 [VIM] 으로 간단히 소스코드 Packing 하는법
  22. 2010/06/07 리눅스 사용자 계정 생성
  23. 2010/06/07 ncftp - .bash_history
  24. 2010/06/07 ncftp 를 이용한 백업 스크립트
  25. 2010/06/07 ftp 업로드 자동
  26. 2010/06/07 리눅스 mysql auto backup방법
  27. 2010/06/07 리눅스 시간맞추기
  28. 2010/06/07 vsftp에서 500 OOPS: cannot change directory 오류가 나올 때
  29. 2010/06/07 [리눅스 Linux lpic]리눅스 설치시 유용한 10가지 팁
  30. 2010/06/07 리눅스 Vnc클라이언트에서 Alt-Tab 쓰기
FC3 사용자는 설치후 udev-039-10.FC3.1로 경신(update)해야 한다.

실수로 FC3 udev 패키지에 디버깅 코드를 제거하지 않아, SIGCHLD 시그널이 udev에서 봉쇄되어 udev.rules의 정상 종료 상태(proper exit status)를 방해한다(,which prevents getting the proper exit status in udev.rules). 이로인해 시디롬 심볼링크(cdrom symlinks)가 만들어 지지 못하여, pam_ console이 데스크탑 사용자 소유권(desktop user ownerships)을 시디롬 디바이스에 적용할 수 없음을 의미한다.

휘도라 코아 3를 설치한 모든 사용자는 긴급히 이 버전으로 향상(upgrade)시켜야 한다.

이 갱신(update)용 파일들은 여기에서 다운 받을 수 있다.

fce34e8e8ab6a54d07c46d2626529e22 SRPMS/udev-039-10.FC3.1.src.rpm
e86fc1ec12edddd4f7ca68bfebe956cc x86_64/udev-039-10.FC3.1.x86_64.rpm
8b69da0b3adb624a11fc8185f98bada6 x86_64/debug/udev-debuginfo-039-10.FC3.1.x86_64.rpm
7df95371172d0b52452df76612cf674d i386/udev-039-10.FC3.1.i386.rpm
9897ebb971ab099de04c9ceb1ad31b57 i386/debug/udev-debuginfo-039-10.FC3.1.i386.rpm

이 업그레이드는 Update Agent로도 수행할 수 있다; ‘up2date’ 명령으로 Update Agent를 기동할 수 있다.

휘도라에서의 udev

By Harald Hoyer

본 문서는 udev의 비밀과 휘도라에서 작동하는 방법을 밝히려 한다.

Udev는 Dan Stekloff <dsteklof@us.ibm.com>, Kay Sievers , 그리고 다른 많은 분들의 도움을 받고 Greg Kroah-Hartman <greg@kroah.com>이 개발했다.
udev homepage와 the Linux-hotplug-devel mailing list https://lists. sourceforge.net/lists/listinfo/linux-hotplug-devel가 주요 개발 자원이다.

Udev가 하는 일은?

udev는 실제로 존재하는 디바이스에 대한 파일만을 포함하는 동적 디바이스 디렉토리를 제공한다. 보통 /dev/ 디렉토리에 있는 디바이스 노드 파일들을 만들거나 제거하고 혹은 네크워크 인터페이스에 새 이름을 붙여준다(or it renames network interfaces.).

hotplug 서브시스템의 일부로서, 만일 커널 디바이스가 추가되거나 시스템에서 제거되면, udev가 실행된다. 디바이스 생성시, udev는 라벨, 시리얼 번호, 또는 버스 디바이스 번호와 같은 디바이스 속성을 수집하기 위해 주어진 디바이스의 sysfs 디렉토리를 읽는다. 이 속성은 디바이스의 고유한 이름(uni-que name)을 결정하는 열쇠(keys)로 사용될 수 있다. udev는 시스템에 존재하는 디바이스에 대한 데이터베이스를 유지한다. 디바이스 제거시, udev는 삭제될 디바이스 파일을 찾기 위해 데이터베이스를 검색한다.

모듈이 적재되면, hotplug에 의해 udev가 호출되고, 디바이스가 추가되거나 제거된다. 만일 디바이스 노드가 드라이버와 통신할 수 있는 메이져와 마이너 번호(major and minor number)를 포함하고 있는 “dev” 파일을 드라이버가 제공하면, udev는 /sys/안을 들여다본다. 디바이스 노드 파일명과 심볼릭링크(symlinks)를 지정하는 /etc/udev/rules.d/디렉토리에 있는 udev 규칙을 살펴본후, 디바이스 노드는 /etc/udev/permissions.d/에 지정된 허가(perm-issions)를 갖고 /dev/에 생성된다.

디바이스 노드 생성, 제거, 혹은 네트워크 디바이스의 이름을 새로 붙인 후, udev는 /etc/dev.d/아래 디렉토리 트리(directory tree)에서 프로그램을 실행한다. 프로그램의 이름은 알아보기 쉽게 .dev란 접미사를 붙여야 한다. hot-plug 환경 변수에 더하여, DEVNAME도 생성된 노드의 이름이나 네트워크 디바이스의 새로 붙여진 이름이 실행된 프로그램에 이용될 수 있도록 보내진다(be exported). 모든 디렉토리에 있는 프로그램은 사전적 순서로 정렬되는 반면, 디렉토리는 다음 순서로 조회된다:

• /etc/dev.d/$(DEVNAME)/*.dev
• /etc/dev.d/$(SUBSYSTEM)/*.dev
• /etc/dev.d/default/*.dev
Udev가 휘도라에 어떻게 통합되는가?

initrd / initfs

mkinitrd는 /sbin/udev.static를 initrd /sbin/udev에 복사하고 /sbin/udev start에 심볼릭 링크를 한다(symlink).

커널이 부팅한 후, initrd의 내쉬 스크립트(nash script)를 실행한다. 이것은 tmpfs 파일 시스템을 /dev/에 마운트한다. hotplug대신에, /sbin/udev는 initrd 단계(phase)에서 호출된다. udevstart는 디바이스에 대한 모든 디바이스 노드를 생성하는 데, 이 디바이스는 커널에 컴파일(compile)되고 그 모듈은 내쉬(nash)에 의해 적재된다.

문제점

전(whole) udev와 hotplug 하부구조(infrastructure)가 initrd에 이용될 수 있는 것은 아니다. 따라서, hotplug 스크립트, udev 규칙, 허가(permissions), 그리고 /etc/dev.d/ 스크립트가 커널이 보낸 어떠한 hotplug event에 대해서든 모두 실행되는 것은 아니다.

rc.sysinit

제일 먼저, SELinux가 적재되고 활성화되면, /dev/의 문맥이 설정(set)된다. rc.sysinit는 /sbin/start_udev를 호출한다. start_udev는, 아직 마운트된 것이 없다면, tmpfs 파일시스템을 /dev/에 마운트시킨다. 이 때, 모듈 자동적재가 필요하거나 커널 모듈이 없는 곳에 디바이스 노드를 생성한다. 그리고나서, /sbin/udevstart는 다시 호출된다. 즉, 전 udev와 허가(permissions)을 적용하기 위해, initrd 단계에서 hotplug event를 모의 실험한다(? simulate). 그리고, rc.sysinit는 /sbin/kmodule의 결과물를 분석하고(parse) 모든 모듈을 적재한다. 이것은 컴퓨터에서 발견된 모든 하드웨어에 디바이스 노드를 제공할 것이다.

콘솔 사용자 허가(Console User Permissions)

디바이스노드가 생성될 때마다 /etc/dev.d/default/pam_console.dev가 호출되어, 디바이스 노드의 파일명(선택적으로 심볼릭 링크도 같이)과 함께 /sbin/ pam_console_setowner를 호출한다. 이것은 /etc/security/console.perms에서 지정한대로 콘솔 사용자를 위한 허가를 설정한다.

휘도라에서 udev를 커스터마이징하기

udev와 udevinfo의 매뉴얼페이지를 읽어보자. RPM 패키지 파일을 수정하지 말자.

새 규칙

새 규칙은 /etc/udev/rules.d/에 .rules로 끝나는 파일에 있어야 한다. 50-udev.rules은 사용하지 마라. 지지받고 선호받는 방법은 “NAME” tag없이 규칙을 생성하고 “SYMLINK”만을 만드는 것이다.

규칙 작성법에 관한 좋은 문서는 http://www.reactivated.net/udevrules.php에서 찾을 수 있다.

허가

새 허가는 /etc/udev/permissions.d/에 .permissions로 끝나는 파일에 있어야 한다. 50-udev.permissions는 사용하지 말자.

그러나 자신의 디바이스 노드의 사용를 간절히 원한다면!

원하는 디바이스 노드를 /etc/udev/devices/에 놔두자. 그러면 /dev/에 복사될 것이다. 만일 기본 실행으로 처리 되야 한다고 생각되면, a bugzilla entry에 의견을 올리자.

/dev/없이 udev를 업데이트하기

아나콘다나 복구 CD없이 업그레이드하는 단계(추천하고 싶지 않다):

• kernel-2.6을 시작한다
• /sys/가 마운트된 것을 확인한다
• 최신 initscripts 패키지를 설치한다
• 최신 udev 패키지를 설치한다
• /sbin/start_udev를 실행한다
• 최신 mkinitrd 패키지를 설치한다
• 최신 kernel 패키지를 설치한다
• 혹은 기존 커널에 대해서 mkinitrd 를 실행한다

initrd 없는 udev

보통 때처럼 휘도라 코아를 설치하고 재부팅한다. 다음 명령을 실행한다

mkdir /tmp/dev
mount --move /dev /tmp/dev
sbin/MAKEDEV null console zero
mount --move /tmp/dev /dev

initrd 없이 커널을 설치하고 재부팅한다.

SELinux 오류가 발생하고 syslogd는 바라던 대로(as expected) 동작하지 않을 것이다.



휘도라에서의 현 문제

udev에 대하여 알려진 모든 버그
Nvidia

빠른 해결: 만일 rhgb가 필요치 않으면, 단지 /etc/rc.local에 nvidia 모듈을 적재한다.

만일 udev>=032-5이면, nvidia 모듈을 적재한다:

cp -a /dev/nvidia* /etc/udev/devices
chown root.root /etc/udev/devices/nvidia*

이 문제에 관련된 버그질라는 133900이다.

Palm Pilot

만일 udev >= 032-5이면, 다음 명령을 실행한다:

ln -s ttyUSB1 /etc/udev/devices/pilot
ISDN
만일 udev >= 032-5이면:

/sbin/MAKEDEV -d /etc/udev/devices isdn


Copyright © 2003-2004 Red Hat, Inc. All rights reserved.
The Fedora Project is not a supported product of Red Hat, Inc.
Legal | Trademark Guidelines
This page last modified at: 2004/11/08 16:28:47
2010/08/01 23:38 2010/08/01 23:38
acpid-커널이 전원을 관리
dep1000-고속연산을 위한 aep1000/aep2000 코프로세서드라이버
anacron-
apmd-배터리를 필요로 하는장치에 사용(랩탑)
atd-특정시간에 지정명령어실행,시스템부하가 적을시 배치명령실행
autofs- 파일시스템이용시 자동마운트,이용안할시 자동언마운트
bcm5820-하드웨어 암호의 엑셀레이터 제공
chargen-슈퍼데몬 내부의 서비스에 접속이 끊길때까지 문자를 생성한다
cpuspeed-동적 CPU speed 데몬 실행
crond- 리눅스용 스케쥴러 데몬입니다.
cups-공동유닉스 인쇄시스템을 위한 실행,종료스크립트
cups-lpd-cups의 통신에 있어서 물려받은 lpd프로토콜에서의 어플리케이션사용 허용여부
daytime-현제시스템시간을 Wed Nov 13 22:30:27 EST 2002와 같이 출력할때
dc client-Distcache is a Distributed SSL Session Cache Client Proxy
dc server-Distcache is a Distributed SSL Session Cache Server
dovecot-Dovecot Imap Server
echo-echo's characters back to clients
gpm- 마우스 드라이버 데몬 입니다.
httpd- Web 서버 데몬 입니다.
innd-유즈넷뉴스서버로 지역뉴스서버를 설정
iptables- 방화벽 설정 데몬 입니다.
irda-장치간의 적외선 통신 제공
irqbalanced-멀티프로세서체제에있어 CPU간의 인터럽트를 분리함
isdn-isdn
ktalk-talk서버의 KDE버젼
kudzu 새로운 하드웨어가 추가됐을 때 이를 검색해주는 데몬입니다.
lisa-끝난 사용자시스템을 실행시키는 데몬
mdmonitor-RAID모니터링 관리
mdmpd-멀티패스장치 모니터링
messagebus-시스템이벤트를 브로드캐스팅
micorcode ctl-스크립트를 CPU microcode에 적용
named - BIND 데몬 입니다 (Domain Name Server)
netdump-네트워크콘솔을 제외한 콘솔을 초기화
netfs- 넷트웍 파일 시스템 데몬 입니다.
netplugd-논스태틱네트워크인터페이스를 관리하는데몬
network- 리눅스의 네트웍 데몬 입니다. 이것의 체크를 지우시면 인터넷이 되지 않습니다.
nfs-nfs서ㅓ로 작동할수있게함(보안상문제있음)
nfslock-rpclockd와rpcstatd를 실행해줌,nfs를 사용하지않을시 보안상문제로 옵션을 끈다
ntpd-네트워크타임프로토콜로 컴퓨터클라이언트나 서버의 시간을 다른 서비스로 부터 동기화함
pcmcia-랩탑에서 이더넷이나모뎀을 제공하는데 사용
portmap-리모트프로시져콜에관여하는 데몬,NFS나NIS사용시 선택
postgresql-postgresql DB를 이용하고자할때 씀
psacct-프로세스 계산
random시스템 난수발생에 필요한 데몬입니다.-
rawdevices-raw장치할당스크립트,오라클어플리캐이션에서 사용
readahead-startup 을 하는동안 프로그램들을 메모리에 로드시킴
rhnsd-업데이트를 체크해줌
rpcgssd-NFSv4클라이언트를 위한RPCSEC GSS관리하는 사용자레벨데몬
rpcidmapd-NFSv4를 위한 유저레벨 데몬
rpcsvcgssd-NFSv4서버를 위한 RPCSEC GSS관리하는 사용자 레벨데몬
rsync-FTP서버인rsync서버
sendmail-메일 서버 데몬 입니다.
services-인터넷슈퍼데몬서비스
sgi fam-파일교환시 모니터링
smartd-자신을 모니터링하고 기술보고서 작성
smb-삼바서버의 활성화를 하게함
snmpd-단순한 네트워크 관리 프로토콜
snmptrapd-단순한네트워크관리 프로토콜트랩
squid-인터넷오브젝트캐시로 요청되는 인터넷 오브젝트 저장
sshd-ssh 서버
syslog-/var/log에 시스템 로그파일 기록
time -시간서버
time-udp
tux-커널 기반의 스레드http서버
vncserver-vnc서버
vsftpd -ftp데몬
xfs- x폰트 서버를 위한 데몬
xinetd-슈퍼데몬
yppasswdd-NIS클라이언트 사용자가 패스워드를 변경가능하게 해줌
ypserv -표준 NIS /YP 네트워크 프로토콜 서버
ypxfrd -yp맵의 전송을 가속시킴
yum -프로그램 업데이트 데몬
2010/08/01 23:38 2010/08/01 23:38

1. rpm 설치하기
1) 설치하기
-U 옵션 : 기존의 것을 삭제하고 업그레이드하며 아무 메시지도 보여주지 않습니다.
-Uv 옵션 : 기존의 것을 삭제하고 업그레이드하며 패키지 이름을 보여 줍니다.
-Uvh 옵션 : 기존의 것을 삭제하고 업그레이드하며 그 설치 진행과 과정 # 표시로 자세히 보여줍니다.
// **. 보통 (ivh 보다) -Uvh 옵션을 쓰면 됩니다.
// **. 설치할경우 패키지파일전체 이름을 주고, 삭제/조회는 rpm 버젼 번호까지만 주면 됩니다.
mrtg 패키지전체 이름 : mrtg-2.9.17.i386.rpm // **. i386 은 386 CPU 호환 버젼을 말합니다.
mrtg 패키지 버젼 : mrtg-2.9.17

예)
# rpm -U mrtg-2.9.17.i386.rpm
# rpm -Uv mrtg-2.9.17.i386.rpm
# rpm -Uvh mrtg-2.9.17.i386.rpm

부가 옵션들
--nodeps : 의존성관계에 있는 다른 패키지가 설치되어 있지 않다해도 강제 설치 합니다.
--force : 버전을 무시하고 강제로 설치 합니다. ( rpm 버전을 강제로 다운 그레이드 할때 사용합니다. )
예)
# rpm -Uvh mrtg-2.9.17.i386.rpm --nodeps

-- force --nodeps 사용시 다른 패키지에 문제가 없는가를 주의 해야 합니다.
# rpm -Uvh mrtg-2.9.17.i386.rpm --force --nodeps

2) -i 옵션 : 기존의 것을 삭제하고 처음 설치합니다.
예) # rpm -i mrtg-2.9.17.i386.rpm

=========================================================================================
2. rpm 지우기
-evv 옵션 : 아래와 같이 삭제를 하는 동안에 상세한 설명을 보여줍니다.
예)
# rpm -evv mrtg-2.9.17

부가 옵션들
--test : 실제로 삭제를 하지 않고 잘지워지는가 테스트만 해보는 옵션 입니다.
--nodeps : 의존성에 관여하지 않고 지우는 옵션입니다. // **. 의존성 있는 패키지가 안돌아 갈 수 있습니다. 주의를 요하는 옵션 입니다.
-- allmatches 옵션 : rpm 이 아래와 같이 중복으로 설치 되어 있을 경우 해결 방법
# rpm -qa | grep tux // **. 중복으로 설치 되었 습니다.
tux-2.1.0-2
tux-2.1.0-2

# rpm -e tux // **. 삭제가 안됩니다.
error: "tux" specifies multiple packages
# rpm -e tux --allmatches // **. --allmatches 옵션으로 지웁니다.

--noscript 옵션 : rpm 이 스크립트 에러 인하여 지워지지 않을 경우조 지웁니다.
# rpm -e canna --noscripts // **. --noscripts 옵션으로 지웁니다.


=========================================================================================
rpm 조회하기 부분은 옵션이 가장 많고, 가장 많이 사용 하는 부분 입니다.

3. rpm 조회하기
1) -qa 옵션 조회
-qa : 설치 되어 있는 모든 패키지를 알아 봅니다. // **. 좌악 올라 갑니다.
-qa | grep : 질의한 패키지가 설치 되어 있는지 알아본다 // **. 가장 많이 사용 합니다.
-qa | grep -i : 질의한 패키지를 찾을 때 대소문자를 구분하지 않고 물어 봅니다. // **. 대소문자 구별 안하고 찾아주므로 이 옵션 사용이 편합니다. 대부분 패키지는 소문자 이기는 하지만 가끔은 대문자가 있습니다.
-qa | wc -l : 현재 설치 되어 있는 총패키지 수

예 )
# rpm -qa // **. 시스템에 설치된 모든 패키지를 보여 줍니다.
# rpm -qa | grep canna // **.canna란 이름의 패키지가 설치 되어 있는지 알아 봅니다.
# rpm -qa | grep -i canna // **. 대 소문자를 구별하지 않고 알아 봅니다.
# rpm -qa | wc -l // **. 시스템에 설치된 총 패키지 수를 알아 봅니다. 보통 몇백 단위 입니다.

2) rpm에 대한 다른 조회
-qf : 화일로 패키지 알아내기. 설치 되어 있는 화일이 어느 패키지에 속해 있는지 알아봅니다.
-qi : 패키지 정보 알아보기. 패키지에 대한 설명을 보여줍니다.
-ql : 패키지 목록 알아 봅니다.
-qc : /etc/ 밑에 설치 되는 설정 화일만 알아 본니다.

예)
# rpm -qf /bin/ls // **. ls 란 명령어가 어느 패키지에 속해 있는지 알아 봅니다.
# rpm -qf $(which 특정프로그램이름) // **. 경로를 잘 모를 경우 사용 합니다.
ex) rpm -qf $(which ls)
# rpm -qi setup // **. setup 이란 패키지가 어떤 패키지 인가 알아 봅니다.
# rpm -ql setup
# rpm -qc setup

=========================================================================================
4. -q 의 부가 옵션들
1) -q --requires : 패키지가 필요한 모듈 (의존성)
예) # rpm -q --requires setup // **. dump 라는 패키지가 설치되기전에 먼저 설치가 선행되어야 하는 패키지들 입니다. 없으면 설치가 안됩니다.

2) -q --whatrequires : 의존성 걸린 패키지 알아내기
예) # rpm -q --whatrequires xmms // **. xmms에 의존하는 패키지를 보여 줍니다. 함부로 지우면 의존설 걸린 패키지들은 안돌가는 사태가 발생할 수 있습니다.

3) -q --whatprovides module-info : 모듈이 설치 되어 있는 패키지 알아 봅니다.
예) # rpm -q --whatprovides module-info

4) -q --scripts : 패키지가 설치 되기전 또는 설치 된후에 실행되는 스크립트를 알아 봅니다.
5) -q --queryformat : 패키지의 정보를 알아볼때 문자열을 출력해준다.

5. 기타 확장 옵션들
1) -qlv : 패키지 목록 자세한 정보를 알아 봅니다.
예 ) # rpm -qlv setup

2) -ql --dump : 패키지 덤프 화일을 봅니다.
3) -qcf : 화일과 관련된 설정 화일을 알아봅니다. .
4) -qdf : 패키지와 관련된 문서 화일을 보는 옵션 입니다. // **. 패키지 괸련한 문서는 대부분 /usr/share/doc 아래에 있습니다.
예) # rpm -qdf /sbin/dump

5) -qpil : 원하는 패키지로 부터 패키지 정보와 설치되는 곳의 정보를 알아 봅니다.
// **. qi옵션과 ql 옵션의 합침형 입니다.
예) # rpm -qpil mrtg-2.9.17.i386.rpm

6) --querytags : 문자열 출력시에 사용되는 태그 값을 알아 본다.
예) # rpm --querytags
HEADERIMAGE
HEADERSIGNATURES
HEADERIMMUTABLE
.
7) # rpm -qlp // **. RPM 으로 설치 안되었을때 검색 합니다

2010/08/01 23:37 2010/08/01 23:37
기본 언어 타입 정해주기

/usr/lib/perl5/5.6.1/cgi.pm 파일을 보면
아래와 같이 언어 타입을 지정해 놓은 부분이 있다.
$self->charset('iso-8859-1');

위 부분대신 아래와 같이 한글타입으로 변경해 주면 된다.
$self->charset('euc_kr');
2010/08/01 23:37 2010/08/01 23:37

DSO방식 APM, Zend, GD설치

새로운 시스템(노코나 방식, fedora core3(64bit))에 거의 소스로 설치함.

■ 설치환경 : Zeon 2.8, Fedora Core3 64bit
■ 사용프로그램
mysql-3.23.58
apache_1.3.33
php-4.3.11
mod_throttle-3.1.2
ZendOptimizer-2.5.7-linux-glibc23-amd64

gd-2.0.33
libpng-1.2.8
jpeg-6b
freetype-2.1.9

설치순서
1. mysql
2. apache(DSO 방식)
3. libpng, jpeg, freetype, 마지막에 gd
4. php, Zend
5. mod_throttle


1. mysql 소스로 설치

tar xvzf mysql-3.23.58.tar.gz
cd mysql-3.23.58

./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-charset=euc_kr 엔터
make
make install

*** 여기서 초반에러를 방지하기 위해서 ****
adduser mysql <-- mysql이란 계정을 생성
passwd mysql <-- 엔터 하고 비밀번호 아무거나..
cd /home/
chmod 600 mysql <-- 권한 설정
cd /usr/local
chown -R mysql.mysql mysql <-- mysql의 하위 폴더까지 한번에 소유자와 그룹을 mysql로 변경
cd /usr/local/mysql/bin
./mysql_install_db <-- data 디렉토리(DB)를 생성, 반드시 한번만 실행
cd /usr/local/mysql
chown -R mysql.mysql data <-- 새로 생성된 data 디렉토리를 소유자와 그룹을 mysql로 변경
./safe_mysqld --language=korean & <-- mysql데몬을 백그라운드로 실행
cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld <-- 컴 부팅시 mysqld 데몬 시작
chmod 755 /etc/rc.d/init.d/mysqld
chown mysql.mysql /etc/rc.d/init.d/mysqld <-- 데몬 소유자,그룹 변경
./mysqladmin -u root password 새로운비밀번호 <-- mysql 비밀번호를 생성

2. apache(DSO 방식) 소스로 설치
./configure --prefix=/usr/local/apache --enable-rule=SHARED_CORE --enable-module=so --enable-shared=max
make
make install;

3. libpng, jpeg, freetype, 마지막에 gd

- libpng 설치
tar -xvzf tar xvzf libpng-1.2.8.tar.gz
cd libpng-1.2.5
cp scripts/makefile.linux Makefile
make test
make install

- jpeg 설치
tar ?zxf jpegsrc.v6b.tar.gz
cd jpeg-6b
./configure --prefix=/usr
make
make test
make install

마지막 amke install 시에 에러가 발생할것입니다.
이때는 우선 make clean 하고,
cjpeg.1 파일이 들어갈 폴더를 만들어준 다음 다시

make -> make install

필히 참고)
이때 에러메시지 내용은 대략 아래와 같습니다.
/usr/bin/install: cannot create regular file `/usr/local/man/man1/cjpeg.1'
: 그런 파일이나 디렉토리가 없음
/usr/local/man/man1폴더가 없어서 찾지는 못하는 경우입니다.
이때는 /usr/local/man/man1폴더를 생성후에 다시 설치 해주시면 됩니다.


make install-lib
make install-headers

- freetype 설치
tar -xvzf freetype-2.1.3.tar.gz
cd freetype-2.1.3
./configure
make
make install

- GD 설치
tar xvzf gd-2.0.9.tar.gz
cd gd-2.0.9
./configure
make
make install


4. php, Zend 설치
./configure
--with-apxs=/usr/local/apache/bin/apxs
--with-config-file-path=/usr/local/lib
--with-gd=/usr/local
--with-jpeg-dir
--with-png-dir
--with-freetype-dir
--with-mysql=/usr/local/mysql
--with-zlib --with-zlib-dir=/usr/lib64/
--enable-track-vars
--enable-ftp
--with-language=korean --with-charset=euc_kr
--enable-magic-quotes --disable-debug --enable-gd-imgstrttf
--enable-mbstring=kr
make
make install

zend 설치
ZendOptimizer-2.5.7-linux-glibc23-amd64
./install

5. mod_throttle(http://www.snert.com/Software/mod_throttle)
tar xvfz mod_throttle312.tgz
cd mod_throttle

그리고 나서 설치를 하시면 됩니다.
# make install

그런데 여기서 잘 살펴보아야 할점을, 설치를 하는경우 apxs라는 파일을 사용하는데 그것은 아파치의 bin폴더에 있습니다.

보통 저 경로를 지정하지 않았을 경우, 에러가 나게 되지요
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
따라서, 압축을 푼 폴더로 이동을 하신후에
#PATH=$PATH:/usr/local/apache/bin
#export path
저 명령을 내리십시오.

2010/08/01 23:37 2010/08/01 23:37
HWP 파일포맷이 드디어 공개적으로 오픈되었습니다.
http://www.hancom.co.kr/notice.noticeView.do?targetRow=1¬ice_seqno=33
사용자 삽입 이미지
2010/07/18 22:31 2010/07/18 22:31

이 항목에서는 정상 Windows Server 2008 컴퓨터에서 새 PowerPivot 서버를 설치하는 방법에 대해 설명합니다. 또한 SharePoint 2010 및 PowerPivot for SharePoint를 설치하는 과정을 단계별로 안내합니다. 이 과정을 마치고 나면 선택적 서버를 즉시 사용할 수 있습니다.

Ee210708.note(ko-kr,SQL.105).gif참고:
이 지침은 작업 그룹 또는 소규모 부서 서버 배포나 간단한 몇 가지 단계로 PowerPivot for SharePoint를 설치하려는 사람을 위한 것입니다. SharePoint를 이미 설치했거나 클라이언트와 서버 소프트웨어를 같은 컴퓨터에 설치할 경우에는 다른 지침을 사용해야 합니다. 자세한 내용은 방법: 기존 SharePoint 서버에 PowerPivot for SharePoint 설치방법: 단일 컴퓨터에서 PowerPivot 클라이언트 및 서버 소프트웨어 설치를 참조하십시오.

이 항목에는 다음과 같은 섹션이 있습니다.

사전 요구 사항

개요

1단계: SharePoint Server 2010 설치(미구성)

2단계: SQL Server 설치

3단계: 설치 확인

설치 후 단계

필수 구성 요소

컴퓨터가 SharePoint 2010 및 PowerPivot for SharePoint에 대한 하드웨어 및 소프트웨어 요구 사항을 충족하는지 확인합니다.

SQL Server 2008 R2 Enterprise, Evaluation, Developer 또는 Data Center 버전의 설치 미디어가 있어야 합니다.

SharePoint 2010의 설치 미디어가 있어야 합니다. 이 버전에는 Excel 서비스가 포함되어 있어야 합니다.

포트 80을 사용할 수 있어야 합니다. 다른 응용 프로그램에서 포트 80을 사용하는 경우 기존 팜 옵션을 사용하여 PowerPivot for SharePoint를 설치해야 합니다. 자세한 내용은 방법: 기존 SharePoint 서버에 PowerPivot for SharePoint 설치를 참조하십시오.

SQL Server 및 SharePoint 2010을 설치하려면 로컬 관리자여야 합니다. 계정 및 사용 권한 요구 사항에 대한 자세한 내용은 SharePoint 2010 제품 설명서의 SQL Server와 함께 단일 서버 배포(Deploy a single server with SQL Server)를 참조하십시오.

개요

SQL Server 설치 프로그램에는 PowerPivot for SharePoint를 설치한 후 즉시 사용할 수 있도록 해주는 새 서버 설치 옵션이 있습니다.

이 옵션을 사용하려면 SharePoint 2010을 설치했지만 아직 구성하지 않은 정상 서버를 시작해야 합니다. 이 항목의 1단계에서는 SharePoint를 구성되지 않은 상태로 설치하는 방법을 단계별로 안내합니다. 2단계에서는 SQL Server 설치 프로그램을 실행하고 새 서버 옵션을 선택하여 다음을 수행합니다.

  • SQL Server 데이터베이스 엔진 인스턴스를 설치하고 SharePoint에 대한 데이터베이스 서버로 구성합니다.
  • 1단계에서 설치한 SharePoint 서버를 구성하고 PowerPivot for SharePoint에 필요한 기능을 설정합니다.
  • PowerPivot for SharePoint를 설치하고 구성합니다.

새 서버 설치 옵션을 사용하면 모든 서버 제품이 기본값을 사용합니다. 구성되는 기능 및 속성에 대한 자세한 내용은 PowerPivot for SharePoint의 기본 구성을 참조하십시오.

1단계: SharePoint Server 2010 설치(미구성)

이 단계에서는 SharePoint 필수 구성 요소를 설치하고 서버 설정을 실행합니다.

이전에 SharePoint 서버를 설치해 본 적이 있다면 일반적으로 설치 직후 서버를 구성한다는 점을 알고 있을 것입니다. SQL Server 2008 R2 설치에서 새 서버 설치 옵션을 사용하는 것이 목표이므로 1단계에서 SharePoint 서버 구성을 건너뛰고 2단계에서 SQL Server 설치 프로그램이 구성 프로그램을 자동으로 실행하도록 허용해야 합니다. SQL Server 설치 프로그램이 SharePoint를 구성하도록 하면 SQL Server 2008 R2 릴리스의 데이터베이스 엔진 인스턴스를 데이터베이스 서버로 사용할 수 있습니다. 또한 SQL Server 설치 프로그램이 PowerPivot 쿼리 처리 및 서버 관리를 위한 최적의 설정을 사용하도록 SharePoint를 구성할 수 있습니다.

  1. 설치 미디어를 넣거나 SharePoint 2010 설치 파일이 들어 있는 폴더를 엽니다.
  2. 필수 구성 요소 설치 관리자를 실행하여 필수 운영 체제 역할, 기능 및 설치에 필요한 기타 소프트웨어를 추가합니다.
  3. SharePoint Server 설치 프로그램을 실행하여 서버 소프트웨어를 설치합니다.
  4. Microsoft 소프트웨어 사용권 계약에 동의하고 계속을 클릭합니다.
  5. 서버 팜을 클릭합니다. 독립 실행형 배포는 지원되지 않으므로 이 옵션을 선택해야 합니다. 서버 팜 옵션을 추가하면 관리 및 데이터 연결을 지원하는 클레임 인프라가 추가됩니다.
    SharePoint 설치 프로그램의 설치 유형 대화 ��자
  6. 서버 유형 페이지에서 전체를 선택합니다. 이 옵션을 선택하면 같은 서버의 웹 프런트 엔드 역할과 응용 프로그램 서버에 필요한 SharePoint 기능이 모두 추가됩니다.
    SharePoint 설치 프로그램의 서버 유형 대화 상자
  7. 지금 설치를 클릭합니다.
    설치가 끝나면 SharePoint 제품 및 기술 구성 마법사를 실행하라는 메시지가 표시됩니다.
    Ee210708.note(ko-kr,SQL.105).gif중요:
    지금은 서버를 구성하지 마십시오. 지금 구성 마법사를 실행하면 데이터베이스 서버가 아직 설치되어 있지 않으므로 오류가 발생합니다. 이후 단계에서 데이터베이스 서버를 설치한 후에 서버 구성을 수행합니다.
  8. SharePoint 제품 및 기술 구성 마법사 실행 옆의 확인란 선택을 취소하고 닫기를 클릭합니다.
    추가 구성에 대한 메시지를 표시하는 설치 페이지
2단계: SQL Server 구성 요소 설치 및 구성

이 단계에서는 SQL Server 2008 R2 설치 프로그램을 실행합니다. 설치 프로그램은 PowerPivot for SharePoint 및 데이터베이스 엔진 인스턴스를 모두 설치하고 구성합니다. 이 인스턴스는 SharePoint 서버의 데이터베이스 서버로 사용됩니다.

또한 설치 프로그램은 1단계에서 설치한 SharePoint 서버 소프트웨어를 구성합니다. 이렇게 하기 위해 SQL Server 설치 프로그램은 SharePoint 제품 및 기술 구성 프로그램(PSConfig.exe)을 백그라운드에서 실행하여 구성 데이터베이스를 만들고 PowerPivot 기능을 설정합니다. SharePoint는 SQL Server 설치 마법사에서 지정한 값을 사용하여 초기화됩니다.

  1. 설치 미디어를 넣거나 SQL Server 2008 R2 설치 파일이 들어 있는 폴더를 엽니다.
  2. Setup.exe를 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행을 선택합니다.
  3. 왼쪽 탐색 창에서 설치를 클릭합니다.
  4. 새로 설치하거나 기존 설치에 기능을 추가합니다.를 클릭합니다.
  5. 설치 지원 규칙에서 확인을 클릭합니다.
  6. 제품 키에서 평가판 버전을 지정하거나 라이선스를 받은 Enterprise 버전의 제품 키를 입력하고 다음을 클릭합니다.
  7. Microsoft 소프트웨어 사용권 계약에 동의하고 다음을 클릭합니다.
  8. 설치 지원 파일 페이지에서 설치를 클릭합니다.
  9. 설치 지원 규칙 페이지에서 문제가 없으면 다음을 클릭합니다. 문제가 있는 경우에는 페이지의 지시에 따라 문제를 해결한 후에 설치 프로그램을 다시 시작합니다.
    Ee210708.note(ko-kr,SQL.105).gif참고:
    Windows 방화벽에서 포트를 여는 동안 발생하는 경고는 무시해도 됩니다. 외부 응용 프로그램에서 원격 연결을 통해 데이터베이스 엔진, 기본 모드 Analysis Services 인스턴스 또는 Reporting Services에 연결할 경우에만 포트를 열어야 합니다. 자세한 내용은 SQL Server 액세스를 허용하도록 Windows 방화벽 구성을 참조하십시오.
  10. 설치 역할에서 SQL Server PowerPivot for SharePoint를 선택합니다.
  11. 같은 페이지의 PowerPivot for SharePoint 추가 위치:에서 새 서버를 선택합니다.
    설치 마법사의 기능 역할 페이지
  12. 다음을 클릭합니다.
  13. 기능 선택에서 설치할 기능의 읽기 전용 목록이 확인용으로 표시됩니다. 해당 역할에 대해 미리 선택되어 있는 항목을 추가하거나 제거할 수는 없습니다. 다음을 클릭합니다.
  14. 설치 규칙에서 다음을 클릭합니다.
  15. 인스턴스 구성에서 확인용으로 'PowerPivot'이라는 읽기 전용 인스턴스 이름이 표시됩니다. 이 인스턴스 이름은 필수 항목이며 수정할 수 없습니다. 그러나 고유한 인스턴스 ID를 입력해 인스턴스를 설명하는 디렉터리 이름과 레지스트리 키를 지정할 수는 있습니다. 다음을 클릭합니다.
  16. 새 SharePoint 팜 구성에서 서버 팜 계정에 대해 도메인 사용자 계정을 입력합니다. 이 계정은 중앙 관리 서비스를 실행하고 구성 데이터베이스에 액세스하는 데 사용됩니다. 또한 PowerPivot 서비스 응용 프로그램 풀을 비롯한 필수 서비스를 제공하는 데도 사용됩니다. 네트워크 서비스, 로컬 시스템 등의 기본 제공 계정을 지정하지 마십시오. 기본 제공 계정에 대해서는 설치 프로그램이 설치를 차단합니다.
  17. 팜에 새 응용 프로그램 서버 또는 웹 프런트 엔드 서버를 추가할 때 다른 팜 관리자가 입력할 전달 구를 지정합니다. 강력한 암호를 만들 때와 같은 규칙을 따르십시오.
  18. 중앙 관리 웹 응용 프로그램에 연결하는 데 사용되는 포트 번호를 지정하거나 임의로 생성되는 제공된 번호를 사용합니다. 설치 프로그램에서 포트 번호를 옵션으로 제공하기 전에 해당 번호가 사용 가능한지를 확인합니다.
  19. 다음을 클릭합니다.
  20. 디스크 공간 요구 사항에서 기능을 설치하기에 디스크 용량이 충분한지 확인하고 다음을 클릭합니다.
  21. 서버 구성에서 SQL Server Agent, SQL Server 데이터베이스 엔진 및 SQL Server Analysis Services의 계정 정보를 입력합니다.
    SQL Server 데이터베이스 엔진 및 SQL Server Agent에 대해서는 도메인 사용자 계정으로 실행하거나 NT AUTHORITY\SYSTEM과 같은 기본 제공 계정으로 실행하도록 서비스를 구성할 수 있습니다.
    SQL Server Analysis Services에 대해서는 도메인 사용자 계정을 지정해야 합니다. 기본 제공 계정을 지정하지 마십시오. 도메인 계정은 SharePoint 중앙 관리에서 Analysis Services 서비스 계정을 관리 계정으로 관리하는 데 필요합니다.
    서비스를 제공하기 위해 사용자의 도메인 사용자 계정을 사용하지 마십시오. 그렇게 하면 네트워크에서 리소스에 대해 갖는 권한과 동일한 권한이 서버에 부여됩니다. 악의적인 사용자가 서버를 침해한 경우 해당 사용자가 사용자의 도메인 자격 증명으로 로그인한 후 사용자와 동일한 데이터 및 응용 프로그램을 다운로드하거나 사용할 수 있습니다.
    권장되는 계정에 대한 자세한 내용은 SharePoint 팜에서 PowerPivot 배포 계획을 참조하십시오.
  22. 다음을 클릭합니다.
  23. 데이터베이스 엔진 구성에서 현재 사용자 추가를 클릭하여 사용자 계정에 데이터베이스 엔진 인스턴스에 대한 관리자 권한을 부여합니다. 설치 프로그램에서는 이러한 권한을 사용해 팜에 대한 구성 데이터베이스를 만듭니다. 다음을 클릭합니다.
  24. Analysis Services 구성에서 현재 사용자 추가를 클릭합니다.
  25. 같은 페이지에서 Analysis Services 인스턴스를 관리할 모든 사용자의 Windows 사용자 계정을 추가합니다. 예를 들어 SQL Server Management Studio에서 Analysis Services 서비스 인스턴스에 연결하여 데이터베이스 연결 문제를 해결하거나 버전 정보를 가져오려는 모든 사용자에게는 서버에 대한 시스템 관리자 권한이 있어야 합니다. 현재 서버 문제를 해결하거나 서버를 관리해야 하는 사용자의 계정을 추가합니다.
  26. 다음을 클릭합니다.
  27. 나머지 페이지에서 각각 다음을 클릭하여 설치 준비 페이지까지 이동합니다.
  28. 설치를 클릭합니다.

설치를 마치면 설치를 수행한 사용자는 SharePoint 팜의 팜 관리자, 데이터베이스 엔진 및 Analysis Services의 시스템 관리자 및 기본 SharePoint 웹 응용 프로그램의 사이트 모음 관리자가 됩니다. 보안을 개선하기 위해 관리 태스크를 다른 사용자에게 위임할 수 있습니다. 특히 팜 관리자 계정은 로컬 관리자 사용자 그룹의 멤버가 아니어야 합니다. 배포 관리자를 변경하는 방법이나 다른 사람에게 관리 권한을 위임하는 방법은 SharePoint 2010 TechCenter 사이트의 SharePoint 제품 설명서를 참조하십시오.

3단계: 설치 확인

SharePoint 팜에 설치하는 PowerPivot for SharePoint 인스턴스는 SharePoint 중앙 관리를 통해 관리됩니다. 최소한 중앙 관리와 SharePoint 사이트에서 페이지를 검사하여 PowerPivot 서버 구성 요소 및 기능이 사용 가능한지를 확인할 수는 있습니다. 그러나 설치를 전체적으로 확인하려면 SharePoint에 게시하여 라이브러리에서 액세스할 수 있는 PowerPivot 통합 문서가 있어야 합니다. 테스트를 위해 이미 PowerPivot 데이터가 포함된 예제 통합 문서를 게시하여 SharePoint 통합이 올바르게 구성되어 있는지 확인하는 데 사용할 수 있습니다.

중앙 관리와 PowerPivot의 통합을 확인하려면 다음을 수행하십시오.

  1. 시작 메뉴에서 모든 프로그램을 클릭하고 Microsoft SharePoint 2010 제품을 연 다음 SharePoint 2010 중앙 관리를 클릭합니다.
  2. 사용자 이름과 암호를 입력한 다음 확인을 클릭합니다.
    원하는 경우 중앙 관리를 열 때마다 사용자 이름 및 암호를 입력하지 않아도 되도록 브라우저 설정을 수정할 수 있습니다. 중앙 관리를 신뢰할 수 있는 사이트로 추가하려면 다음을 수행하십시오.
    1. Internet Explorer의 도구 메뉴에서 인터넷 옵션을 클릭합니다.
    2. 보안 탭의 보안 설정을 보거나 변경할 영역을 선택하십시오. 섹션에서 신뢰할 수 있는 사이트를 클릭하고 사이트를 클릭합니다.
    3. 이 영역에 있는 모든 사이트에 대해 서버 확인(https:) 필요 확인란 선택을 취소합니다.
    4. 영역에 웹 사이트 추가에 사이트 URL을 입력하고 추가를 클릭합니다.
    5. 닫기를 클릭한 다음 확인을 클릭합니다.
      Ee210708.note(ko-kr,SQL.105).gif참고:
      SharePoint 설치 설명서에는 프록시 서버 오류를 해결하고 업데이트를 다운로드 및 설치할 수 있도록 Internet Explorer의 강화된 보안 구성을 해제하기 위한 추가 지침이 포함되어 있습니다. 자세한 내용은 Microsoft 웹 사이트의 SQL Server와 함께 단일 서버 배포(Deploy a single server with SQL Server)에서 추가 태스크 수행(Perform additional tasks) 섹션을 참조하십시오.
  3. 중앙 관리의 시스템 설정에서 팜 기능 관리를 클릭합니다.
  4. PowerPivot 통합 기능활성인지 확인합니다.
  5. 중앙 관리의 시스템 설정에서 서버의 서비스 관리를 클릭합니다.
  6. SQL Server Analysis ServicesSQL Server PowerPivot 시스템 서비스가 시작되었는지 확인합니다.
  7. 중앙 관리의 응용 프로그램 관리에서 서비스 응용 프로그램 관리를 클릭합니다.
  8. 기본 PowerPivot 서비스 응용 프로그램을 클릭하여 이 응용 프로그램에 대한 PowerPivot 관리 대시보드를 엽니다. 처음 사용하는 경우 대시보드는 로드하는 데 몇 분 정도 걸립니다.
    또는 기본 PowerPivot 서비스 응용 프로그램 옆의 빈 공간을 클릭하여 행을 선택하고 속성을 클릭하여 이 서버 응용 프로그램에 대한 구성 설정을 확인합니다. 구성 설정과 응용 프로그램 속성을 모두 수정하여 서버 구성을 변경할 수 있습니다. 이러한 설정에 대한 자세한 내용은 방법: PowerPivot 서비스 응용 프로그램 만들기 및 구성을 참조하십시오.

SharePoint 사이트와 PowerPivot의 통합을 확인하려면 다음을 수행하십시오.

  1. 앞서 만든 웹 응용 프로그램을 브라우저에서 엽니다. 기본값을 사용한 경우 URL 주소에 http://<your computer name>을 지정할 수 있습니다.
  2. PowerPivot 데이터 액세스 및 처리 기능을 응용 프로그램에서 사용할 수 있는지 확인합니다. 이렇게 하려면 PowerPivot 제공 라이브러리 템플릿이 있는지 확인하면 됩니다.
    1. 사이트 작업에서 기타 옵션...을 클릭합니다.
    2. 라이브러리에 데이터 피드 라이브러리PowerPivot 갤러리가 모두 표시되어야 합니다. 이러한 라이브러리 템플릿은 PowerPivot 기능에서 제공하는 것이며 기능이 올바르게 통합되는 경우 라이브러리 목록에 표시됩니다.

서버에서 PowerPivot 데이터 액세스를 확인하려면 다음을 수행하십시오.

  1. PowerPivot 갤러리 또는 SharePoint 라이브러리에 PowerPivot 통합 문서를 업로드합니다. 예제 파일에 액세스하는 방법은 Excel에서 PowerPivot 통합 문서 만들기를 참조하십시오.
  2. 문서를 클릭하여 라이브러리에서 엽니다.
  3. 슬라이서를 클릭하거나 데이터를 필터링하여 PowerPivot 쿼리를 시작합니다. 서버에서 PowerPivot 데이터가 백그라운드로 로드되고 결과가 반환됩니다. 다음 단계에서는 서버에 연결하여 데이터가 로드 및 캐시되는지 확인합니다.
  4. 시작 메뉴의 Microsoft SQL Server 2008 R2 프로그램 그룹에서 SQL Server Management Studio를 시작합니다. 이 도구가 서버에 설치되어 있지 않으면 마지막 단계로 건너뛰어 캐시된 파일이 있는지 확인하면 됩니다.
  5. 서버 유형에서 Analysis Services를 선택합니다.
  6. 서버 이름에 <server-name>\powerpivot을 입력합니다. 여기서 <server-name>은 PowerPivot for SharePoint를 설치한 컴퓨터의 이름입니다.
  7. 연결을 클릭합니다. Analysis Services 서버를 사용할 수 있는지 확인합니다.
  8. 개체 탐색기에서 데이터베이스를 클릭하여 로드된 PowerPivot 데이터 파일 목록을 확인할 수 있습니다.
  9. 컴퓨터 파일 시스템의 다음 폴더에서 파일이 디스크로 캐시되었는지 확인합니다. 배포가 작동하는지 확인하려면 캐시된 파일이 있는지도 확인해야 합니다. 파일 캐시는 \Program Files\Microsoft SQL Server\MSAS10_50.POWERPIVOT\OLAP\Backup 폴더에서 확인할 수 있습니다.

설치 문제 해결

예상한 페이지 및 기능 대신 오류가 발생할 경우 다음을 수행합니다.

  • 알려진 설치 문제에 대한 해결 방법은 SharePoint 2010 및 SQL Server 2008 R2에 대한 릴리스 정보를 참조하십시오. 릴리스 정보는 소프트웨어를 다운로드한 Microsoft 사이트나 설치 미디어에 제공됩니다.
  • Microsoft 웹 사이트에서 SharePoint 배포 문서를 참조하십시오. 이 문서에서는 Internet Explorer에서 설정을 구성하는 과정을 단계별로 안내합니다. 자세한 내용은 SQL Server에서 단일 서버 배포(Deploy a single server with SQL Server)를 참조하십시오.
설치 후 단계

서버 설치를 마친 후 다음과 같은 몇 가지 설치 후 태스크를 수행해야 합니다.

  • SharePoint 목록에서 데이터 피드 내보내기를 사용하려면 ADO.NET Data Services 3.5 SP1을 설치합니다.
  • Office 문서를 외부 데이터 원본으로 사용하는 서버측 데이터 새로 고침을 사용하도록 설정하려면 Office 데이터 연결 구성 요소를 설치합니다.
  • 개인 및 그룹에 SharePoint 사용 권한을 부여합니다. 사이트 및 콘텐츠에 액세스하려면 이 태스크를 수행해야 합니다.
  • 다른 계정에서 실행하려면 PowerPivot 서비스 응용 프로그램 풀 ID를 변경합니다. 안전한 배포를 위해 서비스와 응용 프로그램에 대해 다른 ID를 지정하는 것이 좋습니다.
  • Excel 서비스에 신뢰할 수 있는 사이트를 추가로 만들어 PowerPivot 데이터 액세스에 가장 적합한 권한 및 구성 설정을 다양하게 구성할 수 있습니다.
  • 온라인 도움말을 활성화합니다.
  • 워크스테이션 컴퓨터에 PowerPivot 제작 도구를 다운로드하여 PowerPivot 통합 문서를 만든 다음 SharePoint에 게시합니다. 도구를 설치하고 PowerPivot 통합 문서를 게시하여 설치한 서버 구성 요소의 상호 운용성을 확인하면 설치 과정이 완료됩니다.

ADO.NET Data Services 3.5 SP1 설치

SharePoint 목록의 데이터 피드 내보내기를 수행하려면 ADO.NET Data Services가 필요합니다. 이 구성 요소는 SharePoint 2010의 PrerequisiteInstaller 프로그램에 포함되어 있지 않으므로 수동으로 설치해야 합니다.

  1. SharePoint 2010의 하드웨어 및 소프트웨어 요구 사항 설명서 하드웨어 및 소프트웨어 요구 사항 확인(Determine Hardware and Software Requirements)(SharePoint 2010)으로 이동합니다.
  2. 소프트웨어 필수 구성 요소 설치에서 현재 사용 중인 운영 체제(Windows Server 2008 SP2 또는 Windows Server 2008 R2)에 맞는 ADO.NET Data Services 3.5의 링크를 찾습니다.
  3. 링크를 클릭하여 서비스를 설치하는 설치 프로그램을 실행합니다.

Office 데이터 연결 구성 요소 설치

SharePoint 사이트에 게시하는 PowerPivot 통합 문서에서 외부 데이터 원본으로 사용되는 텍스트 파일, Excel 파일 또는 Access 데이터베이스의 데이터 새로 고침 작업을 지원하려면 ACE 공급자라고도 하는 Office 데이터 연결 구성 요소가 필요합니다. 이러한 데이터 원본 형식에 대해 데이터 새로 고침을 지원하려면 팜의 각 PowerPivot 서버에 이 구성 요소를 설치해야 합니다.

  1. 2010 Office System 드라이버: 데이터 연결 구성 요소 다운로드 페이지로 이동합니다.
  2. 언어를 선택합니다.
  3. 64비트 버전을 다운로드하도록 선택하고 다운로드를 클릭합니다.

사용 권한 부여

통합 문서를 게시하거나 보려는 사용자에게는 SharePoint 사용 권한이 필요합니다. 게시된 통합 문서를 보려는 사용자에게는 보기 권한을 부여하고, 통합 문서를 게시 또는 관리하는 사용자에게는 참가 권한을 부여하십시오. 사용 권한을 부여하려면 사이트 모음 관리자여야 합니다.

  1. 사이트에서 사이트 작업을 클릭합니다.
  2. 사이트 사용 권한을 클릭합니다.
  3. 사이트 모음 멤버 그룹의 확인란을 선택합니다.
  4. 리본에서 사용 권한 부여를 클릭합니다.
  5. 문서 추가 또는 제거 권한이 있어야 하는 Windows 도메인 사용자 또는 그룹 계정을 입력합니다.
    응용 프로그램이 클레임 인증용으로 구성된 경우가 아니면 전자 메일 주소 또는 메일 그룹을 사용하지 마십시오.
  6. 확인을 클릭합니다.
  7. 사이트 모음 방문자 그룹의 확인란을 선택합니다.
  8. 리본에서 사용 권한 부여를 클릭합니다.
  9. 문서 보기 권한이 있어야 하는 Windows 도메인 사용자 또는 그룹 계정을 입력합니다. 앞서 수행한 단계와 마찬가지로 응용 프로그램이 기본 인증용으로 구성된 경우에는 전자 메일 주소 또는 메일 그룹을 사용하지 마십시오.
  10. 확인을 클릭합니다.

SharePoint에서 응용 프로그램 풀 및 서비스 ID 변경

SQL Server 설치 프로그램은 단일 계정에서 실행할 팜 기능, 응용 프로그램 및 서비스를 제공합니다. 따라서 설치가 간편해지지만 배포에서 SharePoint 팜의 보안 요구 사항이 충족되지는 않습니다. 보다 강력한 배포를 작성하려면 설치가 완료된 후 응용 프로그램 풀과 서비스 ID가 각각 다른 계정에서 실행되도록 변경합니다.

  1. 중앙 관리의 응용 프로그램 관리에서 서비스 응용 프로그램 관리를 클릭합니다.
  2. 기본 PowerPivot 서비스 응용 프로그램을 선택하되 클릭하지는 않습니다. 링크 텍스트 옆의 빈 공간을 클릭하여 선택할 수 있습니다.
  3. 서비스 응용 프로그램 리본에서 속성을 클릭합니다.
  4. 새 응용 프로그램 풀 만들기를 선택합니다.
  5. 응용 프로그램 풀에 대한 이름(예: Service Application Pool - PowerPivotService)을 입력합니다.
  6. 구성된 기존 계정을 선택하거나 새 관리 계정을 등록하여 응용 프로그램 풀의 ID를 설정합니다.
  7. 확인을 클릭합니다.

PowerPivot 서버 구성 요소의 응용 프로그램 풀 및 서비스 ID를 변경하는 방법은 방법: 서비스 계정 및 암호 변경(PowerPivot for SharePoint)을 참조하십시오.

Excel 서비스에서 신뢰할 수 있는 사이트 추가로 만들기

신뢰할 수 있는 사이트를 Excel 서비스에 추가하여 Excel 통합 문서 및 PowerPivot 데이터를 제공하는 사이트에 대한 권한 및 구성 설정을 다양하게 구성할 수 있습니다. 자세한 내용은 방법: PowerPivot 사이트에 대한 신뢰할 수 있는 위치 만들기를 참조하십시오.

도움말 활성화

PowerPivot for SharePoint에는 SharePoint 사이트의 페이지에서 액세스할 수 있는 온라인 도움말이 포함되어 있습니다. 온라인 도움말은 PowerPivot 응용 프로그램 페이지에 대한 정보와 웹의 업데이트된 콘텐츠 링크를 제공합니다. 온라인 도움말은 설치되기는 하지만 활성화되지는 않습니다. 사이트 모음의 도움말을 활성화하려면 다음 단계를 수행합니다.

  1. 사이트 작업에서 사이트 설정을 클릭합니다.
  2. 사이트 모음 관리에서 목록 아래쪽으로 스크롤합니다.
  3. 도움말 설정을 클릭합니다.
  4. SQL PowerPivot 추가 기능 도움말의 확인란을 클릭합니다.
  5. 확인을 클릭합니다.
  6. 도움말이 활성화되었는지 확인하려면 SharePoint 도움말 아이콘을 클릭합니다. 활성화된 경우 PowerPivot 도움말이 목록에 표시됩니다.
  7. PowerPivot 데이터 액세스를 지원하는 다른 사이트 모음에 대해서도 반복합니다.

PowerPivot for Excel 추가 ���능 설치 및 PowerPivot 통합 문서 작성

팜에 서버 구성 요소를 설치한 후에는 포함된 PowerPivot 데이터를 사용하는 첫 번째 Excel 2010 통합 문서를 만들어 웹 응용 프로그램에서 SharePoint 라이브러리에 게시할 수 있습니다. 또는 샘플 PowerPivot 통합 문서를 업로드하거나 게시하여 SharePoint에서 PowerPivot 데이터 액세스를 확인할 수 있습니다.

PowerPivot 통합 문서를 만들려면 Excel 2010과 PowerPivot for Excel 추가 기능이 모두 필요합니다. PowerPivot for Excel을 설치하고 PowerPivot 통합 문서를 만드는 방법은 방법: PowerPivot for Excel 설치Excel에서 PowerPivot 통합 문서 만들기를 참조하십시오.

SharePoint 2010과 PowerPivot for SharePoint가 이미 있는 컴퓨터에 PowerPivot for Excel을 설치하려면 다른 지침을 사용하십시오. 자세한 내용은 방법: 명령 프롬프트에서 PowerPivot for SharePoint 설치를 참조하십시오.

서버 또는 응용 프로그램 추가

이후에 데이터 저장소와 처리 능력이 추가로 필요하다고 판단되는 경우 팜에 두 번째 PowerPivot for SharePoint 서버 인스턴스를 추가할 수 있습니다. 자세한 내용은 방법: SharePoint 팜에 PowerPivot 서버 추가을 참조하십시오.

2010/06/19 05:31 2010/06/19 05:31

0. 개요
  jabber는 구글Talk에서 사용하고 있는 XMPP 기반의 프로톨이다. 이 XMPP는 XML을 기반으로 구성되어 있으며 인스턴스 메신저들이 가져야 할 프로토콜 요소들을 모두 갖추고 있다. 오픈 프로토콜이라는 것은 이처럼 모든 인스턴스 메신저들이 가져야할  기능들에 대하여 jabber.org의 JEPs에서 프로토콜 네임스페이스들을 제공함으로써 누구나 쉽게 메신저 프로토콜을 구현할 수 있도록 제공한다는 의미에서 오픈 이라고 표현한다.

  또한 jabber를 사용하는 서버들 사이에 통신을 할 수 있으며 따라서 다른 도메인을 사용하는 사용자들과 대화를 가능하게 해준다. jabber를 지원하는 메신저들은 이미 많이 배포되어 있으며 아쉽게도 국내용은 아직 없는것으로 알고 있다. jabber를 지원하는 클라이언트(메신저)는 어떠한 공개 jabber 서버에도 접속할 수 있다. 아쉽게도 구글은 아직 공개 jabber로 오픈하지는 않고 있다.

아마 구글이 Talk서버를 오픈하게 되면 jabber를 사용하는 인스턴스 메신저 그룹들은 굉장히 환영할 만한 일이 될것이다.



1. jabber의 구조

사용자 삽입 이미지

 

  • C1, C2, C3 = XMPP Client
  • S1, S2 = XMPP Server
  • G1 = XMPP와 외부 메시징 네트워크에서 사용되는 프로토콜들 사이의 Gateway
  • FN1 = 외부 메시징 네트워크
  • FC1 = 외부 메시징 네트워크의 클라이언트


  [간단한 구조]


 - jabber 메신저 사용자들은 모두 어떠한 jabber public server에 위치하고 있더라도 다른 server에있는 사용자와 대화가 가능해 진다.

 - 구글 토크의 경우 서버와 서버 간 연결을 현재 막아놓은 상태이다.

 - 위 클라이언트들은 공개된 jabber 서버에 계정을 가지고 있는 사용자들이다.

3. 프로토콜  예
   Server advertises resource binding feature to client:

   <stream:stream
       xmlns='jabber:client'
       xmlns:stream='http://etherx.jabber.org/streams'
       id='c2s_345'
       from='example.com'
       version='1.0'>
   <stream:features>
     <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'>
   </stream:features>

   Client asks server to bind a resource:

   <iq type='set' id='bind_1'>
     <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'/>
   </iq>

4. jabber의 장점
- 장점 :
   전 세계 jabber 사용자와 대화가능
   구글 토크와 연동가능
   인증된 프로토콜사용으로 메신저 신뢰성 향상
   기존 메신저와의 차별화 가능
   서버 및 클라이언트 라이브러리 제공
   서버를 오픈하지 않고 프로토콜만 활용하여 쓸 수 있다.
   프로토콜로 인한 문제를 미연에 방지할 수 있다.
   XML로 표준화됨으로 타 기능과 연동에 용이하다.  

5. 향후 전망
- 현재 구글 토크는 서버를 Gmail 사용자에게만 오픈하고 있는데 곧 public server로 등록할 것이라는 내용을 구글 토크 홈페이지에서 간접적으로 언급하고 있다. 그렇게 되면 jabber는 엄청난 사용자들을 확보 할 수 있을 것이다.
http://www.google.com/talk/about.html#open


-  XMPP(extensible messaging and presence protocol) 메신저는 SIMPLE과 함께 국제 인터넷 표준 기술 협회(IETF)의 인스턴트 메신저 표준 후보 중 하 나로 인텔, 휴렛패커드(HP), AT&T 등이 지원 의사를 밝혔다


6. 참조 사이트

  http://www.jabber.org/

2010/06/15 03:57 2010/06/15 03:57
* script 삽입 공격을 당했는지 확인하는 쿼리

DECLARE @T varchar(255), @C varchar(255);
DECLARE Table_Cursor CURSOR FOR
SELECT a.name, b.name
FROM sysobjects a, syscolumns b
WHERE a.id = b.id AND a.xtype = 'u' AND
(b.xtype = 99 OR
b.xtype = 35 OR
b.xtype = 231 OR
b.xtype = 167);
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @T, @C;
WHILE (@@FETCH_STATUS = 0) BEGIN

exec ('select ['+@C+'] from ['+@T+'] where ['+@C+'] like ''%<script%</script>''');
-- print 'select ['+@C+'] from ['+@T+'] where ['+@C+'] like ''%<script%</script>'''

  FETCH NEXT FROM Table_Cursor INTO @T, @C;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;

* 위의 공격을 당했을 때 복원하는 쿼리 (100% 다 되는 것은 아님 - 별도 확인 필요)

* 해킹 시 길이가 긴 경우에는 짤리고 들어가는 현상이 발생함 - 이 경우에는 복원을 해도 원상복구가 안됨

* 백업 받은 것을 복원하는 수 밖에는 없음

DECLARE @T varchar(255), @C varchar(255);
DECLARE Table_Cursor CURSOR FOR
SELECT a.name, b.name
FROM sysobjects a, syscolumns b
WHERE a.id = b.id AND a.xtype = 'u' AND
(b.xtype = 99 OR
b.xtype = 35 OR
b.xtype = 231 OR
b.xtype = 167);
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @T, @C;
WHILE (@@FETCH_STATUS = 0) BEGIN
  EXEC(
    'update ['+@T+'] set ['+@C+'] = left(
            convert(varchar(8000), ['+@C+']),
            len(convert(varchar(8000), ['+@C+'])) - 6 -
            patindex(''%tpircs<%'',
                      reverse(convert(varchar(8000), ['+@C+'])))
            )
      where ['+@C+'] like ''%<script%</script>'''
      );
  FETCH NEXT FROM Table_Cursor INTO @T, @C;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;


DB injection 공격?
구글에서 <script src= 0.js 라고 검색하면 놀랄 정도로 많은 사이트들이 DB 공격을 받았음을 확인 하실 수 있을겁니다.
제가 관리하는 사이트 또한 위와같은 스크립트 삽입되어 수많은 사이트를 찾아 다니며 복구하고 나름대로 보안하는 방법을 접하게 된 것을 올려 봅니다.


1. 공격 유형 :
SQL injection 홈페이지 상의 DB사용하는 페이지를 공격 즉, 웹소스 취약한 곳을 통해 DB를 공격.
특수 코드 삽입해서 DB에 스크립트를 삽입하여 접속하는 사용자에게 악성코드를 설치하는 유형.


2. 조치 시 주의 사항
1) 홈페이지 변조를 통해 악성코드 링크를 삽입한게 아니라, SQL injection 기법을 이용해 DB 컨텐츠에 삽입한 것입니다.
2) 조치 시 DBA 의 도움을 받는게 좋습니다.
3) 공격 때문에 기존의 데이터가 일부 덧씌워져 변경되었을 수 있습니다. 이럴 땐 백업의 도움을 받아야 겠지만, 일부 데이터의 유실은 어쩔 수 없을 듯...
4) 근본 원인은 사이트가 SQL injection 공격에 취약하게 개발되어 있어서 그렇습니다. 공격 포인트를 파악해서 외주개발 업체, 혹은 내부개발팀을 통해 소스를 수정하세요.
5) 소스를 수정할 수 없는 경우 웹 방화벽이 도움이 될 수도 있습니다. 그러나, 제품 도입시 면밀히 검토하실 필요가 있습니다. 단순 패턴 매칭 형태를 사용해서, 보유패턴과 1byte 만 틀려도 탐지 못하는 제품이 몇 개 있더군요.


3. 공격으로 생긴 DB table 삭제
comd_list 테이블 삭제
ahcmd 테이블 삭제
foofoofoo 테이블 삭제
Reg_Arrt 테이블 삭제
comd_list 테이블 삭제
D99_CMD 테이블 삭제
D99_TMP 테이블 삭제
Kill_kk 테이블 삭제
jiaozhu 테이블 삭제


4. 삽입 스크립트 제거 복구
DECLARE @T varchar(255), @C varchar(255);
DECLARE Table_Cursor CURSOR FOR
SELECT a.name, b.name
FROM sysobjects a, syscolumns b
WHERE a.id = b.id AND a.xtype = 'u' AND
(b.xtype = 99 OR
b.xtype<object id=sayboxtistorycom4534743 codeBase=http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0 height="100%" width="100%" classid=clsid:d27cdb6e-ae6d-11cf-96b8-444553540000> <object width="100%" height="100%" wmode="transparent" id="sayboxtistorycom4534743" src="http://cfs.tistory.com/blog/plugins/CallBack/callback.swf?destDocId=callbacknestsayboxtistorycom4534743&id=453&callbackId=sayboxtistorycom4534743&host=http://saybox.tistory.com&float=left&" allowscriptAccess="always" menu="false" type="application/x-shockwave-flash" ></object></object>= 35 OR
b.xtype = 231 OR
b.xtype = 167);
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @T, @C;
WHILE (@@FETCH_STATUS = 0) BEGIN
  EXEC(
    'update ['+@T+'] set ['+@C+'] = left(
            convert(varchar(8000), ['+@C+']),
            len(convert(varchar(8000), ['+@C+'])) - 6 -
            patindex(''%tpircs<%'',
                      reverse(convert(varchar(8000), ['+@C+'])))
            )
      where ['+@C+'] like ''%<script src=http://도메인주소/s.js></script>'''
      );
  FETCH NEXT FROM Table_Cursor INTO @T, @C;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;

'스크립트 부분은 삽입된 스크립트를 입력


5. 보안 적용 1 - MSSQL 메모리에서 위험한 sp들을 내린다.
보안상 위협이 될 수 있는 개체들에 대하여 일반 사용자 그룹의 사용권한을 제한한다.
SP 등록해제는 위험을 감안해야 하므로 메모리에서만 내린다. 단점, 재부팅되거나 DB 재시작시 다시 아래 쿼리 실행 할것!

dbcc xp_cmdshell(free)
dbcc xp_dirtree(free)
dbcc xp_regdeletekey(free)
dbcc xp_regenumvalues(free)
dbcc xp_regread(free)
dbcc xp_regwrite(free)
dbcc sp_makewebtask(free)


6. 보안 적용 2
무엇보다 DB 인젝션이 발생한 원인인 로그인, 회원가입, 게시판 등 사용자가 DB를 접하게 되는 소스 개발시 특수 문자 보안 적용 안된 경우가 가장 유력하다.
로그인, 회원가입, 아이디 비번찾기, 게시판 등이 개발자가 개발하면서 DB를 공격할만한 특수 문자에 대한 차단 기능을 적용하지 않은 문제로 판단됨. 소스를 모두 개선 해야함.

-subroutine-
2010/06/07 14:44 2010/06/07 14:44
head.sub.php 의

$gmnow = gmdate("D, d M Y H:i:s") . " GMT";
header("Expires: 0"); // rfc2616 - Section 14.21
header("Last-Modified: " . $gmnow);
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: pre-check=0, post-check=0, max-age=0"); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0



header("Cache-Control: no-cache"); // HTTP/1.1
header("Expires: 0"); // rfc2616 - Section 14.21
header("Pragma: no-cache"); // HTTP/1.0

와 같이 수정해 보시기 바랍니다.
2010/06/07 14:42 2010/06/07 14:42
아파치 인증 만들기 .

vi httpd.conf 파일을 편집한다.

대충 330 줄 쯤에 있다
---------------------------------------------------------------------------
# This controls which options the .htaccess files in directories can
# override. Can also be "All", or any combination of "Options", "FileInfo",
# "AuthConfig", and "Limit"
#
    AllowOverride all

#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all  <------------------  all 로 바꿔준다.
</Directory>

#
# UserDir: The name of the directory which is appended onto a user's home
----------------------------------------------------------------------------




해당디록토리에  .htaccess 파일 생성해준다.

vi .htaccess
-------------------------------------------------------------
# 인증창의 이름을 지정하는 곳입니다. 즉, 웹 인증창에 보일 이름을 적으시면 됩니다.
AuthName "테스트"

# 인증타입을 설정하는 곳입니다. 기본적으로 Basic 입니다.
AuthType Basic

# .htpasswd 유틸을 사용하여 .htpasswd 파일이 저장될 위치를 지정하는 곳입니다.
AuthUserFile /usr/local/apache/htdocs/.htpasswd

# 그룹 인증을 위한 설정 부분입니다. 만일, 그룹 인증을 하시려면 그룹명을 입력하시면 됩니다.
AuthGroupFile /dev/null


# GET POST 방식의 접근만을 허용하는 부분입니다.
<Limit GET POST>

# 인증된 사람만이 접속을 허용하는 부분입니다.
require valid-user

</Limit>
---------------------------------------------------------------------


.htpasswd 파일 만들기

/usr/local/apache/bin/htpasswd -c .htpasswd 아이디 [엔터]
passwd :          [엔터]


-c 옵션은 처음 할때만 사용한다.
-c 옵션이 있는 상태에서 사용하면 덮어 씌운다. 초기화 비슷

아이디가 같은 경우 패스워드 업데이트한다.


아파치 재 가동한다..

이제 적용된 홈페이지 들어가본다 ..

암호하고 페스워드를 물어볼것이다.
2010/06/07 14:40 2010/06/07 14:40
웹서버의 로그파일이 커지면 속도가 떨어지게 됩니다.
접속자가 많은 경우는 1시간 간격으로 돌리는 것도 나름 괜챦아요.

/etc/cron.hourly 디렉토리에 logrotate-hourly 라고 파일을 만들어서
가장 사이즈가 큰 넘만 rotate 시켜줍니다.

#!/bin/bash
/usr/sbin/logrotate -f /etc/logrotate.d.BACKUP/apache-hourly

물론 logrotate script를 돌리기전에 prerotate에서 통계처리를 해주는 쎈쓰도^^

/etc/logrotate.d.BACKUP/apache-hourly

/usr/local/apache/logs/website.com-access_log {
        daily
        rotate 10
        prerotate
                /usr/local/apache/htdocs/webalizer/webalizer -c /usr/local/apach
e/htdocs/website-log.conf
        endscript
        postrotate
                /usr/local/apache/bin/apachectl restart
        endscript
}
2010/06/07 14:38 2010/06/07 14:38
 
vista x64용 아파치 (비공식 사이트)
 
 
Here you will find 64-bit unofficial binaries that I've compiled using Visual Studio 2005.
I read the ApacheLounge Forums every day, you can post problems you have there and I'll try to answer them.
For Apache x64 specific questions post here.

 File  Description
httpd-2.2.4_x64.exe Apache Server Binary Including mod_deflate & mod_ssl.
mod_macro1.1.8_x64.zip Provides macro support in your configuration files. More Info
mod_security2.0.4_x64.zip Intrusion detection and prevention engine. More Info
mod_jk1.2.21_x64.zip Apache Tomcat Connector. Use the 64-bit JDK!More Info
mod_auth_xml_x64.zip Provides authentication with an XML backend.
2010/06/07 14:37 2010/06/07 14:37
/etc/ssh/sshd_config 파일에서 Port를 22에서 2200 이나 다른 것으로 변경

/etc/init.d/sshd restart 명령으로 sshd 데몬을 재 실행

이후에는 sshd client에서 22번 포트(기본 포트)로는 접속할 수 없고
2200으로 포트를 지정해야지만 접속이 가능 함.
2010/06/07 14:36 2010/06/07 14:36
보통 http://www.도메인.com
http://도메인.com

www 를 붙이지 않고 접속시 www붙일곳과 링크가 있을떄 로그인이 풀어지는 일도 발생하고 다른 여러가지 문제도 있습니다.
그럴 때는 세션공유같은 번거로운거보다 소스한줄로 www.도메인 으로 통합관리해보세요..!
php로 정규식을 이용해 하는 방법도 있지만 이것은 모든페이지에 전부 파일을 인클루드시켜줘야 하는 문제가 있네요..

.htaccess 를 이용하는건데요,

RewriteCond %{HTTP_HOST} !^www\.자신의도메인\.com$ [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*)$ http://www\.자신의도메인\.com/$1 [L,R]

이걸 응용하셔서 써먹으시면됩니다.
2010/06/07 14:35 2010/06/07 14:35
서버안에
.htpasswd 파일을 만들어주고

디렉토리 안에
.htaccess 파일을 만들면 끝...



1. 먼저 인증할 user와 password를 설정합니다.

/usr/local/apache/bin/htpasswd -c /지정할경로/.htpasswd 등록할ID

-> 패스워드를 입력합니다.

그럼 해당 경로에 .htpasswd 파일이 생성됩니다.

일반적으로 사용하는 경로입니다.
/usr/local/apache/htdocs/.htpasswd

2번째 패스워드부터는 -c 를 빼고 합니다. (주의)
/usr/local/apache/bin/htpasswd /지정할경로/.htpasswd 등록할ID

이렇게 하면 패스워드가 계속 추가됩니다.

하지만, 조금 귀찮더라도
.htpasswd
.htaccess
이 2개의 파일을 각 계정 안에 있는 임의의 하나의 디렉토리 안에 만들고
개별 경로를 따로 지정해 주는 쪽이 보안에 유리합니다... ;;
참... 디렉토리 권한은 701로 파일 권한은 644로 해 주세요... ^^*




2. 그리고 vi나 기타 에디터를 이용하여 .htaccess 파일을 생성합니다.

--------------------------------------------------------------------
AuthUserFile /지정한 경로/.htpasswd
AuthName "인증시 나타날 제목"
AuthType Basic

<Limit GET POST>
require valid-user
</Limit>
--------------------------------------------------------------------



여기서 부터 아래쪽은 트래픽 확인을 위한 관리를 위한 응용입니다.

아파치 설정파일 httpd.conf 파일
마지막 부분에 다음과 같이 입력합니다.

--------------------------------------------------------------------
# 사용자 트래픽 제한
<IfModule mod_throttle.c>
ThrottlePolicy None

<Location /throttle-status>
SetHandler throttle-status

# 여기서 부터 --

AuthName "인증시 나타날 제목"
AuthType Basic
AuthUserFile /지정한경로/.htpasswd
require valid-user

# 여기까지 ---

</Location>


<Location /throttle-me>
SetHandler throttle-me
</Location>

</IfModule>
--------------------------------------------------------------------
2010/06/07 14:34 2010/06/07 14:34
새로운 계정으로 db와 코드를 모두 이전한 후

기존 계정의 public_html 디렉토리를 public_html_old로 변경한 후 (접속금지)

새로운 public_html 디렉토리를 만들어서 밑에 다음과 같이 index.php를 만든다


<?
header("Location: http://새로운서버의ip임시접속정보/~opencode/");
?>

2010/06/07 14:33 2010/06/07 14:33
vi /etc/vsftpd/vsftpd.conf 에

pasv_enable=YES 추가

/etc/rc.d/init.d/vsftpd restart 실행


vi /etc/rc.d/rc.local 에

modprobe ip_conntrack_ftp 추가


reboot 실행
2010/06/07 14:32 2010/06/07 14:32
 

ftp를 이용한 해킹을 막기 위해서 해외 접속 ftp에 대한 ip를 모두 차단할 수도 있지만

(GeoIP라는 거를 쓰면 됨) 간단하게 ftp port만 바꿔버릴 수도 있습니다.


vsftp의 경우 /etc/vsftpd/vsftpd.conf 에서 아래 라인을 추가 합니다.

그리고 가끔씩 ftp port를 바꿔서 해킹을 헷갈리게 하는거죠.

이거는 공용서버에서는 할 수 없겠죠? ㅎㅎ


# vsftp access port
listen=YES
listen_port=15231

2010/06/07 14:32 2010/06/07 14:32
 

mod_rewrite 설치시 도움 될만한 글입니다...
이것은 처음 설치용이 아닌 사용중 추가하는 방법입니다.

cd 아파치설치디렉토리/src/modules/standard

/usr/local/apache/bin/apxs -c -I/usr/include/gdbm mod_rewrite.c

gcc -shared -o mod_rewrite.so mod_rewrite.o -lgdbm

/usr/local/apache/bin/apxs -i mod_rewrite.so

vi /usr/local/apache/conf/httpd.conf
#------- 아래 부분 추가 -------
LoadModule rewrite_module     libexec/mod_rewrite.so
Addmodule mod_rewrite.c
#------- 여기까지 ---------
/usr/local/apache/bin/apachectl configtest
/usr/local/apache/bin/apachectl restart

이렇게 하시면 에러 안나고 설치 잘 됩니다.

2010/06/07 14:31 2010/06/07 14:31
.vimrc 파일에 다음과 같이 추가해준다.

map <F12> :%s/\(\/\*[^\*\r\n]*\*\/\\|\/\/.*[^\r\n]\)//g<CR>1GVGJ:noh<CR>

자세한 내용은 링크에 있습니다.
2010/06/07 14:30 2010/06/07 14:30
 

사용자 계정 생성

* OS : CentOS5.1
 
1) 사용자 계정 생성
    # adduser -d [홈디렉토리] [사용자명]

2) 홈디렉토리 권한 확인
    # chmod 755 -R [홈디렉토리]

3) 패스워드 설정
    # passwd popson

4) 사용자 삭제
    # userdel -r [사용자명]  : -r 은 디렉토리까지 삭제

2010/06/07 14:29 2010/06/07 14:29
.bash_history에는 ncftp를 이용하여 data를 접속하는 명령이 수행된 로그가 그대로
들어 있습니다. ncftp가 편한 명령어지만 아이디와 패스워드가 모두 명령에 들어있어
그것이 history에 노출되는 것 입니다.

ncftp의 .bash_history 로그에는 아이디와 패스워드가 모두 노출 되어 있기 때문에,
해당 아이디와 패스워드를 이용해서 FTP에 접속 홈페이지의 data DB 정보를 모두
빼내어 갈수 있으므로, 시급히 대응해야 하는 취약점 입니다.

해당 파일들을 모두 삭제하여 주시기 바랍니다.

find / -name .bash_history

2010/06/07 14:29 2010/06/07 14:29
 

ncftp 를 이용한 백업 스크립트

ncftp를 이용한 백업 스크립트입니다.
스크립트에 원격삭제도 추가하면 더좋겠죠?

# vi /root/backup.sh

#!/bin/bash

#### 공통설정
export Today="`date '+%y-%m-%d'`"
backup_dir="/home/file/backup"
backup_day="1" # 보관일(1일)

#### 디비설정
DB_user="root";
DB_pass="비밀번호";

#### 원격설정
FTP_addr="접속아이피";
FTP_user="아이디";
FTP_pass="비밀번호";

########### 오래된 백업데이터 삭제
dirlists=`/bin/ls -t $backup_dir 2>/dev/null`
i=1
for dir in $dirlists ; do
  if [ "$i" -ge $backup_day ] ; then
    /bin/rm -rf "$backup_dir/$dir"
  fi
  i=$(($i+1))
done

####### 새로운 디렉토리 생성
if [ ! -d "${backup_dir}/${Today}" ]
then
/bin/mkdir -p ${backup_dir}/$Today
/bin/mkdir -p ${backup_dir}/$Today/homedir
/bin/mkdir -p ${backup_dir}/$Today/databass
/bin/mkdir -p ${backup_dir}/$Today/system
fi

####### databass를 사용자별로 백업을 한다.
for database in `mysqlshow -u ${DB_user} -p${DB_pass} | awk -F" " '{ print $2 }' | grep -v "^$" |grep -v "Databases"` ; do
  mysqldump -u ${DB_user} -p${DB_pass}  "${database}" ${table} > ${backup_dir}/${Today}/databass/${database}.sql
done

####### 시스템 디렉토리를 백업한다
tar cvfpz ${backup_dir}/$Today/system/usr.local.tar.gz /usr/local
tar cvfpz ${backup_dir}/$Today/system/etc.tar.gz /etc
tar cvfpz ${backup_dir}/$Today/system/var.named.tar.gz /var/named

####### home 디렉토리에 사용자별로 백업을 한다.
dirlists=`/bin/ls -t /home 2>/dev/null`
for dir in $dirlists ; do
  tar cvfpz ${backup_dir}/$Today/homedir/$dir.tar.gz /home/$dir
done

####### 링크를 만들어 준다.
rm -rf ${backup_dir}/today
ln -s ${backup_dir}/$Today /${backup_dir}/today

####### 원격 데이타백업을 시작한다.
ncftp -u${FTP_user} -p${FTP_pass} ${FTP_addr} << ./backup
put -R ${backup_dir}/$Today
bye


* 파일 경로 주의하시고 이메일주소 변경해서 사용하세요.


# crontab -e

05 00 * * * '/usr/bin/rdate -s time.bora.net && /sbin/clock -w'
00 04 * * * su - root -c '/root/backup.sh | mail -s "시스템 백업 결과보고" test@abc.com';

2010/06/07 14:28 2010/06/07 14:28
 

ftp 업로드 자동

보통 crontab 에 스케줄을정리하여 자동으로 백업을 받던지 어떠한 작업등을 설정할 수 있는데..
이중 어떤 자료를 매월 혹은 매주 특정 서버로 보내야 할 필요가 있다면 어떻게 해야 할까?
ftp 명령을 사용하여 자동으로 다른 서버로 자료를 보내는방법을설명드리고자 합니다.

1. ftp 자동로그인 환경파일 작성
    # vi .netrc
    # mahine [hostname]  login [loginid]   password [login password] 
    machine   ftpserver  login  ftpuser  password  pw1234
    
    위와 같이 파일을 .netrc 파일을 작성합니다. machine 뒤에 오는 ftpserver 값은
    /etc/hosts 파일에 아이피주소가 미리 등록되어 있어야 합니다.
    
    # chmod 600 .netrc
    
    .netrc 파일을 600 모드로 바꾸지 않으면 파일 모드가 맞지 않다고 에러가 납니다.
 
2. ftp 실행 테스트
    # ftp ftpserver
   
    Connected to ftpserver.
    220 NMS FTP server (SunOS 5.8) ready.
    331 Password required for root.
    230 User root logged in.
   
    ftp>
   
    아이디와 암호를 묻는 과정없이 자동으로 로그인 됩니다.
 
 
3. 로그인뒤 실행되어야 될 명령어 설정
    # vi .ftpcmd
    bin # binary file일 경우
    cd /export/home  # 서버에 업로드 디렉토리 이동 할 경우
    prompt  # 다수의 파일을 업로드 해야될경우 interactive 모드 해제
    mput   *.tar # 특정파일 업로드
 
4. 실행 테스트
    # ftp ftpserver < .ftpcmd
    자동으로 실행되는지 확인합니다.
 
5. 크론탭등록할 스크립트 만들기
    # vi ftpupload.script
    cd /ftpuploaddir  # 업로드할 파일이 있는 디렉토리 가기
    ftp ftpserver < /.ftpcmd
    
    # chmod 700 ftpupload.script
 
 
6. 크론탭 등록하기
    crontab -e
    0 6 1,16 * *    /ftpupload.script   # 크론탭 맨끝에 추가
   
    # 매월 1일 16일 6시에 ftp 업로드 실행

2010/06/07 14:27 2010/06/07 14:27
 

리눅스 mysql auto backup방법

우선 리룩스 root롤 로긴후
 
[root@host root]# cd /etc/cron.daily 폴더로 이동하세요...
   ##################### crontab   파일설정 #######################
   ###       cron.daily폴더는 crontab파일 에서 설정을 해야함
   ###
   ###       HELL=/bin/bash
   ###       ATH=/sbin:/bin:/usr/sbin:/usr/bin
   ###       AILTO=root
   ###       HOME=/
   ###      # run-parts
   ###      01 * * * * root run-parts /etc/cron.hourly       //매시간 마다 1분에 실행
   ###      02 4 * * * root run-parts /etc/cron.daily         //매일 새볔 4시 2분에 실행
   ###      22 4 * * 0 root run-parts /etc/cron.weekly      //지정 요일 4시 22분에 실행
   ###      42 4 1 * * root run-parts /etc/cron.monthly     //매달 1일 4시 42분에 실행
   ##########################################################

vi편집기로 파일을 하나 생성합니다.

[root@host cron.daily]# vi mysql_auto_backup

#이건 쉘 스크립트 입니다.
 
#!/bin/bash 
#위는 bin/bash밑에 있는 스크립트를 사용한다는 선언
 
mysql_autodb(){               #클래스 생성
        mysql_path='/usr/local/mysql/bin/'     #mysql 실행파일이 있는 경로 지정
        month=$(date +%Y%m%d)                  #제목에 사용할 서버현제날짜를 구함
        fileName="host_db1_${month}.sql"       #저장할 파일이름 설정1

        #파일 저장 경로 지정 대부분 홈디랙토리에 생성   
       savePath="/home/backup/backupfile" 

if ${mysql_path}mysqldump -h 211.39.149.53 -unobody -pcareer www > /home/backup/${fileName}   #dump받아 임시폴더에 저장
        then
                echo "careerdb1 mysql database=www dump complete..."  #dump 성공메시지
                        /bin/rm -f ${savePath}/careerdb1_www_*     #전날 dump file 삭제
                        mv /home/backup/${fileName} ${savePath} #설정폴더로 이동
        else
                echo "www database backup error!!!!!!"  #에러시 에러메시지
                exit 1      #else end
        fi   #if end
       
} #class end

mysql_autodb()  #class 호출

저장 종료후 (esc -> :wq)

실행파일 만들기
 
[root@host cron.daily]# chmod 755 mysql_auto_backup
[root@host cron.daily]# ./mysql_auto_backup

이렇게 실행한 다음 제대로 저장이 됬나 확인
[root@host cron.daily]# cd  /home/backup/backupfile
[root@host backupfile]# ls
      host_db1_20040525.sql

2010/06/07 14:26 2010/06/07 14:26
 

리눅스 시간 맞추기

- 명령라인에서 설정
# rdate -s time.bora.net && hwclock -w

- 부팅시 설정
. /etc/rc.d/rc.local 에 아랫부분 추가.

rdate -s time.bora.net && hwclock -w

- cron에 등록해서 주기적으로 서버의 시간 설정
. /etc/crontab 에 아랫부분 추가.

0 0 * * 1 root rdate -s time.bora.net  && hwclock -w

- 타임서버
time.bora.net
time.nuri.net
time-a.nist.gov

2010/06/07 14:25 2010/06/07 14:25
/etc/vsftpd/vsftp.conf를 수정했는데도 불구하고 500 애러가 나오면서 접속이 안될때는
SELinux 때문이라고 합니다.

# setsebool -P ftp_home_dir=1

이렇게 하면, ftp directory에 대한 접근을 허가 하게된다.
"-P"는 Rebooting 될더라도 값을 저장하여,
정상적으로 동작 하도록 한다. 
2010/06/07 14:25 2010/06/07 14:25
 

1. 파일 계층[리눅스/Linux]

각 드라이브 당 파일 트리를 하나씩 갖고 있는 여타 OS와는 달리 리눅스 파일 시스템은 하나의 거대한 트리 구조이다. 맨 꼭대기에 / (루트)가 있고 모든 폴더, 파일, 드라이브는 이 루트에서 가지가 뻗어나간다.[리눅스]예를 들어, 여러분이 하드 드라이브 2개(a와 b), 플로피 드라이브 1개, CD롬 1개가 있다고 하자. 첫 번째 하드 드라이브는 파티션이 둘로 나누어져 있다고 하자(a1과 a2). 윈도우에서는 다음과 같이 표시된다.:[리눅스]+ hard drive a, partition one (hda1): C Drive+ hda2: D Drive+ hdb1: E Drive+ floppy: A drive+ CD-ROM: F Drive리눅스에서는 하나의 파일 시스템으로 나타날 뿐 윈도우의 예처럼 5개가 아니다. 각 드라이브는 트리에 마운트(mount)되고 마치 폴더처럼 동작한다. 드라이브는 다음과 같이 위치시킬 수 있다.:[리눅스]+ hda1: / (our Root)+ hda2: /home+ hdb1: /home/user/music+ floppy: /mnt/floppy+ CD-ROM: /mnt/cdromD 드라이브와 E 드라이브는 C 드라이브 안에 붙어있으며 드라이브를 옮겨가기 위해 최상위까지 갈 필요는 없다. 그저 한 폴더에서 다른 폴더로 이동하는 걸로 간단하게 이동이 끝난다. 플로피와 시디롬도 마찬가지여서 하나의 파일 시스템의 일부분으로 /mnt 하에 붙어있다. 설치 프로그램이나 사용자가 컴퓨터에게 뭐가 어디에 붙어있고 어떻게 조작해야 하는지 알려주는 /etc/fstab 파일을 어떻게 설정하느냐에 따라 실제로 이 드라이브들은 리눅스 시스템 어디에든 붙일 수 있다. 그림 A를 보라.[리눅스]


2. 모듈식 시스템[리눅스/Linux]

윈도우 XP, 윈2k, 윈98, 윈95, 애플 OS X의 속이 어떤지 생각해 보라. 각기 내부에 서로 다른 컴포넌트를 지니고 있고 서로 다른 그래픽 환경을 갖고 있을 것이다. XP에서 동작하는 미디어 플레이어에, 98의 파일 관리자에, 윈2k의 안정성에, OS X의 외관을 한데 합치고 싶다면 어떻게 할 수 있을까? [리눅스]리눅스에서 시스템의 각 부분은 서로 독립적이어서 이것저것 섞어서 여러분의 OS를 흡사 프랑켄슈타인 OS로 만들 수도 있다. 방화벽으로 돌릴 프로그램은 이것, 미디어를 재생할 프로그램은 저것, 파일 관리자로 돌릴 건 또다른 어떤 것 등 다양한 프로그램 중에서 선택해서 쓸 수 있다.[리눅스]MS의 운영체제는 모든 것이 상호 연결돼 시스템의 각 부분이 서로 의존하고 있기 때문에 ‘탑’에 비유할 수 있는 것과는 달리, 리눅스 OS는 마치 시장처럼 여기저기 펼쳐져 있다. 시장에서는 모두들 공익을 위해 함께 움직이지만 시장 상인(리눅스의 독립적 부분)들은 시장에서 빠질 수 있고, 그래도 시장(운영체제)은 돌아갈 것이다. 미디어 플레이어나 파일 관리자를 원치 않는다고? 빼버려라! 여러분 OS는 금이 간 탑처럼 쓰러져 버리지 않을 것이다.[리눅스]이런 모듈화가 돼 있기 때문에 리눅스 배포판(distributions. 영어로 보통 distros라고 불린다)은 종류가 꽤 많다. 어떤 개인이든 회사든 자신들이 가장 유용하다고 생각되는 걸 찾아내서 모은 후에 거기다가 이름을 갖다 붙인다. 레드햇(RedHat), 잔드로스(Xandros), 심플리멤피스(SimplyMEPIS), 수세(Suse)가 그런 배포판의 예이다.일부 배포판은 대형 배포판을 흉내내서 만들어내곤 하지만 포함된 프로그램은 바뀐다. 이는 리눅스의 방식인 믹스앤매치(mix-and-match) 접근 방식으로서 결국에는 사용자들에게 더 많은 선택권을 부여해준다. 디스트로워치닷컴(DistroWatch.com)에서는 현재 리눅스에 350개가 넘는 배포판이 있는 것으로 집계하고 있다. 목록에 나와있는 많은 배포판들은 특정 사용자 집단을 위해 특화돼 있긴 있지만, 모든 배포판은 똑같은 프로그램을 돌리도록 수정될 수 있다.[리눅스]프로그램이 상호 교환될 수 있기 때문에 GUI(Graphical User Interface)도 예외는 아니다. GUI를 바꿀 수 있어 마우스, 프로그램 아이콘, 메뉴 등에서 현대적인 OS의 룩앤필(look and feel)을 가질 수 있다. 어떤 리눅스 시스템이라도(휴대폰에서 돌아가는 리눅스 말고 실제 컴퓨터에 돌아가는 리눅스) 여러 가지 서로 다른 GUI 중 하나를 택해 이용할 수 있고, 여러 웹 서버나 서로 다른 이메일 클라이언트 프로그램을 돌릴 수도 있다.[리눅스]시스템을 윈도우처럼 보이게 하고 싶은가? FVWM에서 XP 테마를 사용하면 된다. 속도가 좀 빨랐으면 좋겠나? IceWM을 써보라. 좀더 "기능이 풍부한" 걸 원하는가? GNOME이나 KDE를 써보기 바란다.[리눅스] 이런 GUI들 모두 장단점이 있지만, 모두다 마우스를 이용이 가능한 인터페이스를 제공한다. 이런 다양한 GUI들을 쓸 수 있기에 사람들이 사용하는 리눅스 화면이 서로 제각기 달라보일지 모르겠지만 모든 GUI의 이면에서는 똑같은 작업이 이뤄지고 있다. 직접 눈으로 확인해 보라. 어려운 일은 아니다.[리눅스]


3. 하드웨어, 소프트웨어, 그리고 그 중간에 위치한 것[리눅스/Linux]

리눅스는 짧은 기간동안 큰 발전을 했다. 리눅스는 MS 윈도우 나이의 절반도 안 되지만 레드몬드의 OS(MS 윈도우)가 비싸고 버그도 많은 반면 리눅스는 더 강력하고, 더 안정적이며, 리소스도 덜 잡아먹고, 그래픽 측면에서는 (리눅스가 더 우월하지 않다해도) 동등한 수준을 보인다.[리눅스]리눅스가 아직 MS 윈도우를 쫓아가지 못하는 건 벤더들의 지원이다. 예를 들어, 만약에 여러분이 인튜잇(Intuit)의 퀵북(QuickBooks)없인 못산다해도 리눅스에서 그대로 구동시킬 순 없다. 리눅스에서 윈도우 프로그램을 동작시키려는 프로젝트들이 있다. 크로스오버 오피스(CrossOver Office)와 와인(Wine)같은 것들이 있는데, 윈도우 프로그램이 뭐냐에 따라 돌릴 수 있을 수도 있고 없을 수도 있다. 소프트웨어 업체들이 리눅스로 프로그램을 이식하겠다고 결정할 때까지는 윈도우 프로그램을 리눅스 자체에서 있는 그대로 돌릴 수는 없을 것이다.[리눅스]그렇다 해도 몽땅 다 못하는 건 아니다. 오픈소스 소프트웨어 형태로 된 리눅스용 프로그램은 1만 5000개가 넘는다. 이런 프로그램들은 보통 무료로 쓸 수 있어서 품질도 천차만별이지만, 프로그램 대다수는 잘 만들어졌고 지속적으로 개선되고 있다. 이런 프로그램들은 전용 파일 형식이 아닌 것들을 가져오기(import!)하거나 내보내기(export)할 수 있다. GNUCash는 퀵북 파일을 제대로 읽어 들일 수 있고, 오픈오피스는 MS워드의 *.doc 파일을 읽어 들일 수 있다.[리눅스] GNUCash를 안 좋아한다면 낙심하지 말기 바란다. 무료로 제공되는 유사한 프로그램들이 더 있으며, 점점더 많은 소프트웨어 업체들이 자사의 소프트웨어를 리눅스 버전으로 출시하고 있다.[리눅스]동일한 현상이 하드웨어에도 적용된다. 컴퓨터 상점에서 구매한 보통 하드웨어가 애플 컴퓨터와 동작하는 걸 기대할 수 없는 것처럼, 동일한 문제가 리눅스 머신에서도 있다고 할 수 있다. 대부분의 표준 하드웨어는 완벽하게 동작한다. 하드 드라이브, 램, 플래시 드라이브, 마더보드, 네트워크 카드(NIC), 디지털 카메라는 보통 리눅스에서 거의 문제를 일으키지 않는다.[리눅스] 하지만 새로 나온 최신 하드웨어는 이야기가 좀 다르다. 하드웨어 벤더가 리눅스를 지원하기로 할 때까지는 리눅스 공동체에 참여하는 사람들이 여가 시간을 할애해서 무료 배포용으로 이런 하드웨어를 이용하기 위해 필요한 드라이버를 만들어줘야 한다.[리눅스]하드웨어 회사들은 호환성을 해결하고자 직접 MS와 함께 작업하는 일이 많지만, 리눅스 측에 대해서는 자발적 참여자들이 알아서 리눅스 하드웨어 지원을 해결하도록 내버려두는 경향이 있어 윈도우가 지원하는 것보다는 뒤처질 수밖에 없다. 랩톱은 비표준 하드웨어로 악명이 높다. 랩톱에서 사용하는 특수키를 매핑하는 것 때문에 리눅스에서 고역이 될 수 있다. 그래도 좋은 소식이 있다면, 더 많은 회사들이 리눅스에서 미래를 보고 있기 때문에 소프트웨어처럼 리눅스 하드웨어에 대한 벤더 지원도 더 나은 쪽으로 변화하고 있다는 것이다.[리눅스]리눅스 머신에서 하드웨어와 소프트웨어 사이에 있는 건 커널이다. 커널은 하드웨어와 소프트웨어를 연결해주는 역할을 하며, 업데이트된 커널은 매 몇 주마다 인터넷을 통해 얻을 수 있도록 만들어진다. 현재 가장 최신 버전은 2.6.14이다. 현재 지원되지 않는 하드웨어를 보유하고 있다면 좀더 새로운 커널에서는 구원을 받을 수도 있다. 하지만 커널을 직접 설치한다는 게 항상 쉬운 일은 아니다. 대신 그런 일을 해주는 패키지 관리자가 존재한다.[리눅스]


4. 패키지 관리자 - 프로그램 설치를 쉽게 해주는 소프트웨어[리눅스/Linux]

리눅스에서 프로그램을 설치하는 데에는 여러 가지 방법이 있지만 가장 쉬운 방법은 배포판의 패키지 관리자(PM; Package manager)를 이용하는 것이다. PM을 이용하면 어떤 빠진 파일이라도 의존성을 이용해 설치해주기 때문에 프로그램이 문제없이 동작하게 된다. 배포판 선택은 여러분이 어떤 PM을 좋아하느냐로 귀착되곤 하지만, 무엇이든 간에 대응되는 패키지만 찾아낼 수 있다면 다른 배포판에서도 어떤 리눅스 소프트웨어든 설치될 수 있다.[리눅스]보통 이런 PM들은 프로그램을 담아두는 온라인 저장소를 갖고 있다. 프로그램 저장소를 검색해서 설치를 클릭하는 것만 하면 될 정도로 애플리케이션 설치는 쉽다. 여러분의 패키지 관리자에서 IceWM이나 Mplayer를 찾을 수 없는가? 찾고 있는 패키지를 담고 있는 온라인 저장소를 새롭게 추가하는 방법을 쓸 수도 있다.[리눅스] 몇 가지 패키지 관리자의 예를 들어보면, 데비안(Debian)과 그 변종들에서 사용되는 dpkg 및 Apt에 기반한 시냅틱(Synaptic), 레드햇과 변종들에서 이용되는 윰(Yum), 수세와 변종들에서 사용되는 YaST2, 젠투(Gentoo)에서 이용하는 이머즈(Emerge)가 있다.[리눅스]


5. 권한[리눅스/Linux]

리눅스는 다중 사용자를 지원하도록 설계됐고, 사용자는 그룹으로 나눠진다. 모든 사용자들은 자신이 소유한 파일에 대해 읽기, 쓰기, 실행(R/W/X) 권한을 가지며 해당 권한을 변경할 권한도 갖는다. 리눅스는 다중 사용자용으로 설계됐기 때문에 사용자들은 각자 암호를 가지며 자기 소유 파일에 대한 접근을 제한할 수도 있다. 이를 사용자 권한(User Permission)이라 부른다.[리눅스]각 사용자는 하나 이상의 그룹에 소속되고, 사용자는 자신의 파일/폴더 권한을 설정할 수 있어 그룹 내 다른 사용자들이 파일을 읽을 수는 있지만 쓸 수는 없게 하거나 R/W/X를 서로 서로 조합해서 설정할 수도 있다. 이런 걸 그룹 권한이라고 한다. 예를 들어 조와 수잔은 회계 부서에 근무한다고 하자. 이들은 회계 부서(Accounting) 사람들이 서로 파일에 접근할 수 있도록 허가할 수 있지만, 영업 쪽 사람들의 접근은 제한할 수도 있다.[리눅스]이외의 사용자에 대한 권한으로서, 그룹에 속하지 않은 사람들에게 해당 파일에 대한 접근을 허용하거나 거부할 수 있다. 이 권한은 시스템 전반의 안전을 위한 것일뿐 아니라 각 사용자의 데이터의 안전을 위해서도 존재한다. 집에서 리눅스를 쓰는 대부분의 사용자들은 파일에 기본 권한을 써도 무방하다. (그림 B 참조)[리눅스]루트(root. 파일 시스템의 루트(/)와 혼동하지 말라) 사용자는 윈도우의 관리자 계정(Administrator)과 비교할 수 있고, 모든 파일에 대해 권한을 가지며 시스템 전체에 미치는 설정을 수정할 수 있는 유일한 사용자이다. 루트 사용자는 시스템 관리를 위해 사용되는 자체 암호를 갖는다. 이러한 차이점으로 일반 사용자들이 시스템에 유해한 스파이웨어를 설치하거나 중요 파일을 삭제할 수 없도록 한다.[리눅스]


6. 홈 디렉토리[리눅스/Linux]

윈도우에는 '내 문서(My documents)'라는 데가 있지만, 문서가 아닌 파일은 어디에 두겠는가? 보통은 윈도우 바탕 화면에 둔다! 리눅스에서도 데스크톱을 난잡하게 만들 수 있는 건 마찬가지지만, 사용자들은 각자 홈 디렉토리를 갖게 되며 보통 /home/user에 위치한다(user는 사용자 계정 이름). 이런 홈 디렉토리 내에서 문서를 놔둘 수도 있고(/home/user/documents), 프로그램 링크를 둘 수도 있으며, 음악(/home/user/Music) 등 원하는 건 뭐든지 놔둘 수 있다.[리눅스] 홈 디렉토리에는 파일과 폴더를 생성할 수 있고, 원하는 만큼 정리하고 다시 또 어질러놓을 수도 있다. 마치 우리가 집안에서 하는 것처럼 말이다. 권한이 어떻게 설정되었는지에 따라 홈 디렉토리에 있는 파일에 대해 다른 사용자가 접근할 수 있게 허락할 수도 혹은 금지할 수도 있다. (루트 사용자만은 예외다).[리눅스]


7. 기본 설치 차이점[리눅스/Linux]

리눅스 배포판 간에는 차이점이 약간씩 있어서, 파일들이 위치하는 곳이라든가 기본 프로그램들의 이름이 다른 경우가 있다. 레드햇과 수세는 파일 시스템이 약간 다르다는 걸 알아두고 시작하는 게 좋겠다. 대부분 사용자들은 그런 차이점이 뭔지 알 필요는 없지만, 내부 파일 시스템이 약간 다를 수 있다는 것 정도는 알아둬야 한다. 누군가에게 도움을 요청할 때 여러분이 사용하는 배포판이 뭔지 확실히 알려줄 수 있도록 해라. 시스템에 문제가 없거나 눈에 보이지 않는 복잡한 작업을 설정하는 것에 관심이 없다면 이에 대해 지나치게 신경쓰지 않아도 된다.[리눅스]


8. CLI[리눅스/Linux]

윈도우의 ‘시작(Start)/ 버튼과 유사한 리눅스 GUI 상의 버튼을 누르면 메뉴가 나타나는데, 이 메뉴에서 xterm 프로그램(보통 콘솔(Console)이라 부른다)을 실행시키면 터미널(Terminal)이라는 게 나타난다. 도스창과 약간 닮았지만 사실 도스보다 오래되었고 도스의 기능을 능가한다. 이는 명령줄 인터페이스(CLI; Command Line Interface)이며, 우리가 좋아하는 OS의 기원으로서 모든 리눅스 배포판에 존재한다. 책 한 권 쓸 정도의 분량이어서 자세히 들어가진 않겠지만, CLI는 컴퓨터의 문제점을 해결하곤 할 때 필요한 강력한 도구이다. 인터넷에서 누군가에게 도움을 요청했을 때 lspci를 실행시켜 보라고 했다면 xterm을 시작해서 lspci라고 입력하고 엔터키를 눌러야 한다. 그러면 화면에 뭔가 나타날 것이다.[리눅스]xterm을 시작하면 제한된 권한을 갖고 있는 일반 사용자 상태이다. xterm에서 루트 사용자 모드(앞서 이야기한 권한을 보라)로 가려면 su [엔터]를 입력하고, 그리고 나서 루트 암호 [엔터]를 입력한다. 그러면 막강한 권한을 가진 루트가 된다. 루트 사용자는 리눅스가 돌아가는 데 필요한 시스템 파일을 포함해서 어떤 사용자의 데이터도 파괴할 수 있다. xterm을 끝내거나 su 모드에서 떠나려면 exit [엔터]를 입력한다.[리눅스]


9. 컨트롤(ctrl)-알트(alt)-이스케이프(escape)[리눅스/Linux]

컨트롤-알트-이스케이프키를 함께 누르면 마우스가 해골과 두 개의 뼈를 교차시킨 불길한 형상을 한 X 모양으로 바뀐다. 이 모드에서 오동작하거나 먹통인 애플리케이션 위에 놓고 클릭하면 해당 프로그램을 종료시킬 수 있다. 윈도우 작업 관리자(Task Manager)에서 프로세스 종료(End Process)와 유사하지만 조심해서 쓰기 바란다. 만약 키를 누르긴 했는데 아무 것도 종료시키고 싶지 않다면, 되돌아가기 위해 Esc 키를 사용하기 바란다. 엉뚱한 프로그램에다가 클릭하면(데스크톱 GUI 포함) 꽤나 골치 아픈 일이 벌어질 수 있다.[리눅스]

2010/06/07 14:24 2010/06/07 14:24
 

기본개념은 Alt-tab을 지원하는 Vnc client인 x2vnc와
다른 vnc클라이언트들을 shared 옵션을 이용하여 동시에 사용하는 것입니다.

vncviewer와 krdc 모두 동작하는 것을 확인했습니다.

zirize@zirize ~ $ vncviewer -fullcolor remotehost:1 -shared -ViewOnly &
zirize@zirize ~ $ x2vnc -north remotehost:1 -shared &

여기서 remotehost는 원격으로 접속할 호스트명입니다.
중요한 것은 양쪽다 -shared 옵션 붙여 주는 것입니다.
vncviewer를 ViewOnly로 동작시키는 이유는 헷갈리는 것을 피하기 위함입니다.

vncviewer와 x2vnc를 모두 접속했으면,
vncviewer창 위가 아니라 화면 위로 커서가 넘어가면,
vncviewer 내부의 커서가 움직이는 것을 볼 수 있습니다.

alt-tab을 지긋이 눌러 보면,
vncviewer 내부에서 alt-tab이 동작하는 것을 확인할 수 있습니다.

man x2vnc 를 참조하면,
-hotkey 옵션이 있습니다.

화면 밖으로 마우스를 이동하지 않고, 조작하는 원격/로컬 호스트를 단축키로 전환할 수 있습니다.
기본 키는 ctrl+F12 입니다. ctrl+F12를 누르면 원격과 로컬을 자유로이 전환할 수 있습니다.

리눅스용 x2vnc는 데스크탑환경에서 지원하는 거의 대부분의 단축키들이 무시되기 때문에
alt-tab이 아닌 다른 키(ex alt+ctrl+화살표)등도 모두 사용이 가능합니다.
하지만, ctrl+alt+backspace 같은 것은 안됩니다. -_-;;

아래와 같이 쉘스크립트로 묶어서 사용해도 좋을 듯 합니다.

zirize@zirize ~ $ cat bin/xvnc.sh
#/bin/sh
#ex) xvnc.sh remotehost [Vncviewer Options]
/usr/bin/vncviewer -shared -ViewOnly "$@" &
/usr/bin/x2vnc -north remotehost:1 -shared "$1" &
2010/06/07 14:24 2010/06/07 14:24