Thursday, November 24, 2005

How to play restricted formats with Ubuntu

How to play restricted formats with Ubuntu (multimedia codecs)

Submitted by Friedrich on Mon, 2005-09-05 11:04.

Prerequisites: add universe and multiverse repositories.

What are restricted formats?

These are non-Free formats and tools, well-known from the Win32 world. The most important ones are Java, MP3, Windows Media, Real Media, RealPlayer, DVD-video, Macromedia Flash, AAC and iTunes Music Store and some other Video and Audio Codecs.
All of them are not included within the Ubuntu standard installation. You have to install them manually.

How to install the restricted formats?

You can install the codecs with the following commands:
sudo apt-get install gstreamer0.8-plugins
sudo apt-get install gstreamer0.8-lame
sudo apt-get install gstreamer0.8-ffmpeg
sudo apt-get install w32codecs
sudo apt-get install libdivx4linux
sudo apt-get install lame
sudo apt-get install sox
sudo apt-get install ffmpeg
sudo apt-get install mjpegtools
sudo apt-get install vorbis-tools
gst-register-0.8

For more detailled instructions visit the Ubuntu Wiki.

There is also an automated setup, which installs most restricted formats automatically. This is highly recommended. To run it, open a terminal session and enter:

wget http://download.ubuntuforums.org/ubuntusetup/ubuntusetup.sh
sudo sh ubuntusetup.sh

You will be asked several times to select "Yes" or "No". To continue, you must select Yes.

Is there an alternative?

Yes, you can install the VideoLanClient (VLC) by typing:
sudo apt-get install vlc

VLC has many integrated codecs, such as MP3, DivX, Xvid, Ogg Vorbis and MPEG. For a full list please have a look at the VLC homepage.

Ubuntu korean 입력(nabi)

우선 apt-get install nabi

입력기를 붙여주는 방법은 두가지가 있다.

1. 모든 사용자에게 적용
/etc/X11/Xsession.d/75custom-inputmethods를 만들어서 아래 내용을 넣는다.

 if [ "$LANG" = "ko_KR.EUC-KR" -o "$LANG" = "ko_KR.UTF-8" ]; then
if [ -e /usr/bin/nabi ]; then
XMODIFIERS='@im=nabi'
/usr/bin/nabi &
fi
fi

2. 사용자 별로 개별 설치

~/.gnomerc가 있다면 다음 내용을 추가, 없다면 만들어 준다. export XMODIFIERS="@im=nabi"
export GTK_IM_MODULE=xim #imhangul을 같이 설치할 경우, 이 줄을 넣지 않는 것이 좋습니다.
시스템 - 기본 설정 - 세션을 실행 하여 시작 프로그램 탭에서 /usr/bin/nabi를 등록합니다.gdm을 재시작 합니다. (로그아웃 후 다시 로그인)


다음 한영키를 사용하려면 다음과 같이 한다.

  • 터미널에서 다음을 실행합니다.

    $ sudo setkeycodes 71 122
    $ sudo setkeycodes 72 123
    $ xmodmap -e "keycode 122 = Hangul"
    $ xmodmap -e "keycode 121 = Hangul_Hanja"
  • ~/.Xmodmap에 다음 내용을 추가합니다. (122, 121이 210, 209가 될 수도 있습니다. xev로 확인해보세요. :) "를 '로 입력하면 에러가 나옵니다. 주의하세요.

    keycode 122 = Hangul
    keycode 121 = Hangul_Hanja

/! 122, 121 혹은 210, 209의 조합은 커널 버전의 차이일 것이라는 설이 있습니다.
커널 2.6에서는 210,209였습니다


See also UbuntuWiki:MultimediaKeys

부팅할 때 자동으로 적용하기 #

  • /etc/init.d/bootmisc.sh에 다음 내용을 추가합니다.

    setkeycodes 71 122
    setkeycodes 72 123
  • /etc/rc.boot 디렉토리에 부팅 스크립트를 만드는 방법도 있습니다. (디렉토리가 없으면 만드세요)


/etc/init.d/setkeycodes를 만들어

setkeycodes 71 122
setkeycodes 72 123
"update-rc.d setkeycodes start 99 5 ." (맨 마지막의 "."을 주의)

Saturday, November 19, 2005

ubuntu multimedia howto

Mozilla and Totem Streaming Solution HOWTO
MPlayer도 Mozilla mplayer-plugin으로 스트리밍을 할수 있지만, 그것 없이도 우분투에서Windows Media Player stream의 재생이 가능하다. 단지mozplugger 와 w32codecs 만 설치하고, 표준 totem-xine 팩키지를 사용하게 하면 된다.

0 단계 : w32codecs 설치.

Windows Media Player, Apple's Quicktime, Real Player등이 사용하는 상용 포맷을 재생하려면 압축된 파일을 재생할 수 있도록 풀어주는 코덱을 설치해야 한다. 법률적인 문제들 때문에 이 코덱들은 Marillat repository에서 주 Ubuntu repositories와는 별도로 제공된다. 다음의 방법은 설치법이지만 이에 따른 법률적인 문제는 스스로 책임져야 한다 ㅋㅋㅋ 너무 겁주나?.

/etc/apt/sources.list에 Marillat repository를 추가하고 apt-get update!
그 다음 apt-get install w32codecs로 설치.

1 단계: totem-xine 설치.

totem-gstreamer는 totem-desktop package의 일부이지만, totem-xine package를 다운받으려면 UNIVERSE PACKAGE를 활성화 해야 한다. /etc/apt/sources.list 파일에서 universe repository를 활성화한다.
apt-get update
apt-get install totem-xine : 기존 totem-gstreamer package를 교체한다.

2 단계: mozplugger 설치.

Mozilla Firefox 와 Totem을 링크해 주기위해, 특정 mime types과 applications을 연결해 주는 플러그인이 필요하다. Mozplugger는 Mozilla (Firefox)를 대부분의 application들과 연결해 주는 접착제와 같다.
apt-get install mozplugger.

3 단계 : mozplugger 설정.

mozplugger가 원래 mplayer와 함께 배포되지만, totem-xine으로 대신하게 재설정하는 것은 간단하다.
/etc/mozpluggerrc 파일을 열어서 바꿔준다.
아래 부분을 찾으면:

application/x-mplayer2: wmv,asf,mov: Windows Media
video/x-ms-asf: asf,asx,wma,wax,wmv,wvx: Windows Media
video/x-ms-wmv: wmv: Windows Media

다음 줄을 추가한다:
stream noisy ignore_errors: totem "$file"

Working Ubuntu w32codecs

Ubuntu w32codecs

아래 항목을 /etc/apt/sources.list에 추가한다:

deb ftp://cipherfunk.org/pub/packages/ubuntu breezy main

그 다음 아래 명령을 실행한다:

sudo apt-get update; sudo apt-get install w32codecs

이제 윈도우용 코덱들인 divx, wmv 등을 사용할 수 있다

Wednesday, November 16, 2005

Grub 옮기기

술 한잔 한 김에 꼬드겨서 Ubuntu linux 사용자를 한명 포섭했다.

펜3 700 시스템이니 윈도우 XP보다는 리눅스가 훨씬 빠르다고 얘기하니 망설임없이 그걸로 깔아보잔다. 즉각 설치에 돌입해서 깔끔한 X 화면을 보여주었다.

좀 사용해보더니 곧바로 묻는다.
"인터넷에서 동영상이 왜 안나와요?"
"인터넷 화면이 제대로 안 나오네요...."

역시 헛고생 한건가 싶은데 이렇게 말한다.
"그래도 리눅스 한번 써보고 싶었는데 그냥 놔두고요, 다른 하드를 하나 깔아서 XP를 듀얼로 쓸수있죠?"
"네....."

그 바람에 새 하드를 달고(slave로) 거기다 XP 깔려고 하니 MS 운영체계는 master에 최소한이라도 자기 파티션을 요구한다.
어쩔수 없이 새 하드를 master로 잡고 설치를 하고 나니 리눅스로 부팅하기가 난감이다.

ubuntu live CD로 부팅하기를 십여차례 한 끝에 살려서 듀얼 부팅을 할 수 있게 만들었다.

다음에 까먹지 않게 여기 남겨둬야 겠다.


1. 상황
Primary slave(/dev/hdb)에 이미 리눅스가 설치되어 있고 boot loader인 grub도 이 하드에 설치.
Primary master(/dev/hda)에 새로 ntfs 파티션을 만들어 윈도우 XP설치.

부팅하면 당연히 XP로만 부팅 됨.

파티션 정보는
/dev/hda1 ntfs

/dev/hdb1 ext3
/dev/hdb2 swap

2. 리눅스 복구 부팅
live CD로 부팅한 다음, 터미널을 뛰우고
리눅스가 설치된 파티션을 마운트
foo@bar:~$ sudo mkdir /temp
foo@bar:~$ sudo mount /dev/hdb1 /temp
root를 기존 리눅스 파티션으로 변경
foo@bar:~$ sudo chroot /temp

foo@bar:~# vi /etc/mtab
/dev/hda1 / ext3 rw,errors=remount-ro 0 0 에서 /dev/hda1 을 /dev/hdb1으로 수정

foo@bar:~# vi /etc/fstab
/dev/hda1 / ext3 defaults,errors=remount-ro 0 1
/dev/hda2 none swap sw 0 0
에서 각각 /dev/hda1 ==> /dev/hdb1 , /dev/hda2 ==> /dev/hdb2로 수정

foo@bar:~# cd /boot/grub
foo@bar:~# vi menu.lst
# menu.lst - See: grub(8), info grub, update-grub(8)
# grub-install(8), grub-floppy(8),
# grub-md5-crypt, /usr/share/doc/grub
# and /usr/share/doc/grub-doc/.

## default num
# Set the default entry to the entry number NUM. Numbering starts from 0, and
# the entry number 0 is the default if the command is not used.
#
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
default 0

## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
timeout 10

## hiddenmenu
# Hides the menu by default (press ESC to see the menu)
#hiddenmenu

# Pretty colours
#color cyan/blue white/blue

## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line) and entries protected by the
# command 'lock'
# e.g. password topsecret
# password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret

#
# examples
#
# title Windows 95/98/NT/2000
# root (hd0,0)
# makeactive
# chainloader +1
#
# title Linux
# root (hd0,1)
# kernel /vmlinuz root=/dev/hda2 ro
#

#
# Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST

### BEGIN AUTOMAGIC KERNELS LIST
## lines between the AUTOMAGIC KERNELS LIST markers will be modified
## by the debian update-grub script except for the default optons below

## DO NOT UNCOMMENT THEM, Just edit them to your needs

## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specifiv kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
# kopt=root=/dev/hda1 ro

## default grub root device
## e.g. groot=(hd0,0)
# groot=(hd0,0)

## should update-grub create alternative automagic boot options
## e.g. alternative=true
## alternative=false
# alternative=true

## should update-grub lock alternative automagic boot options
## e.g. lockalternative=true
## lockalternative=false
# lockalternative=false

## altoption boot targets option
## multiple altoptions lines are allowed
## e.g. altoptions=(extra menu suffix) extra boot options
## altoptions=(recovery mode) single
# altoptions=(recovery mode) single

## nonaltoption boot targets option
## This option controls options to pass to only the
## primary kernel menu item.
## You can have ONLY one nonaltoptions line
# nonaltoptions=quiet splash

## controls how many kernels should be put into the menu.lst
## only counts the first occurence of a kernel, not the
## alternative kernel options
## e.g. howmany=all
## howmany=7
# howmany=all

## should update-grub create memtest86 boot option
## e.g. memtest86=true
## memtest86=false
# memtest86=true

## ## End Default Options ##

title Ubuntu, kernel 2.6.10-5-386
root (hd0,0)
kernel /boot/vmlinuz-2.6.10-5-386 root=/dev/hda1 ro quiet splash
initrd /boot/initrd.img-2.6.10-5-386
savedefault
boot

title Ubuntu, kernel 2.6.10-5-386 (recovery mode)
root (hd0,0)
kernel /boot/vmlinuz-2.6.10-5-386 root=/dev/hda1 ro single
initrd /boot/initrd.img-2.6.10-5-386
savedefault
boot

title Ubuntu, kernel memtest86+
root (hd0,0)
kernel /boot/memtest86+.bin
savedefault
boot

### END DEBIAN AUTOMAGIC KERNELS LIST

무척 길기는 하지만 설치할 때 자동으로 생성된 파일이니 겁 먹을 거 없다.
빨간색으로 표시된 부분만 수정해 주면 된다.

title Windows XP //comment 표시인 #을 지워주고 제목 수정
root (hd0,0) //comment 표시인 #을 삭제
makeactive //comment 표시인 #을 삭제
chainloader +1 //comment 표시인 #을 삭제


title Ubuntu, kernel 2.6.10-5-386
root (hd0,0) ==> (hd1,0)로 변경
kernel /boot/vmlinuz-2.6.10-5-386 root=/dev/hda1 ro quiet splash
// /dev/hda1 을 /dev/hdb1으로 수정

initrd /boot/initrd.img-2.6.10-5-386
savedefault
boot

title Ubuntu, kernel 2.6.10-5-386 (recovery mode)
root (hd0,0) ==> (hd1,0)로 변경
kernel /boot/vmlinuz-2.6.10-5-386 root=/dev/hda1 ro single
// /dev/hda1 을 /dev/hdb1으로 수정
initrd /boot/initrd.img-2.6.10-5-386
savedefault
boot

title Ubuntu, kernel memtest86+
root (hd0,0) ==> (hd1,0)로 변경
kernel /boot/memtest86+.bin
savedefault
boot
수정사항을 저장한 다음
foo@bar:~# grub-install /dev/hda 해주면 된다.

만약 이때 /boot/grub/stage2 를 읽지 못한다는 에러메시지가 나온다면
이것은 grub-install 명령의 문제이다.

grub-install은 결국 grub의 옵션을 수행하는 wrapper 이므로 이때는
직접 grub을 실행해서 작업한다.

foo@bar:~# grub

grub> root (hd1,0)
Filesystem type is ext2fs, partition type 0x83

--> grub의 이미지가 있는 리눅스 루트가 /dev/hdb1이므로 hd1,0으로 정해준다.

어느 파티션에 이미지가 있는지를 모른다면 찾기 명령을 주면 된다.
grub> find /boot/grub/stage1
그 다음 설치를 한다.
grub> setup (hd0)

Checking if "/boot/grub/stage1" exists....... no
Checking if "/grub/stage1" exists....... yes
Checking if "/grub/stage2" exists....... yes
Checking if "/grub/e2fs_stage1_5" exists....... yes
Running "embed /grub/e2fs_stage1_5 (hd0)"....... 15 sectors are embedded
succeded
Running "install /grub/stage1 (hd0) (hd0) 1+15 p (hd0,2)/grub/stage2 /grub/grub.conf....... succeded
Done

-->이로써 grub을 hda의 MBR에 설치하는 것이 완료되었다.
grub> quit

아래는 grub설정에 관한 참고 내용이다.
알아도 그만 몰라도 그만일 수도 있다.

root (hd0,2)
Linux kernel image를 담고있는 /boot 파티션이 있는 곳. 그러므로 위의 설정은 GRUB에게 '커널은 첫번째 하드디스크의 세번째 파티션에 있다'고 알려주는 것이다.

apm=off acpi=on
power-off 명령이 정상적으로 작동되려면 커널에 알려주는것이 좋다.

initrd /initrd-2.4.22-1.2174.nptl.img
init ramdisk image가 있는 곳을 알려준다.

rootnoverify (hd0,0)
GRUB에게 Windows 파티션으로 부팅하지만 마운트하려고는 하지마라고 알려주는 것이다.
(hd0,0)는 Windows XP의 boot.ini가 있는 곳이다.

chainloader +1
chain-load는 다른 부트 로더를 띄워서 지원되지 않는 운영 체계를 올리기 위한 장치이다. 보통 DOS나 Windows를 띄우는데 쓴다.
GRUB에게 "chain to Windows' boot loader"라고 알려주는 것이다.


map
DOS (또는 Windows)가 첫번째 하드디스크에 설치되어 있지 않다면 disk swapping 기술이라는 것을 써야한다.
앞에서 처음 언급한 경우인데 윈도우 계열은 자신이 첫번째 하드에 있지않으면 부팅을 거부하기 때문이다. grub의 이 기능을 진작 알았더라면 일을 1/4로 줄일수 있었을 뻔 했다.

Map, 즉 어떤 드라이브를 다른 드라이브로 지정해주라는 말이다.

grub> map (hd0) (hd1)
grub> map (hd1) (hd0)

이렇게 준 명령은 첫번째와 두번째 하드디스크를 가상적으로 바꾸는 역할을 한다.

Caution: 이 명령은 오직 DOS (또는 Windows)가 바뀐 디스크에 접근하기 위해 BIOS 정보만을 이용할 경우에만 유효하다. 따로 드라이버가 필요한 경우에는 작동하지 않는다.

makeactive
root 디스크의 active 파티션을 GRUB의 root device로 지정한다. 하드디스크 상의 primary PC partition에만 해당된다. logical에는 해당되지 않음.

Code:
title Windows 98 SE
map (hd0) (hd1)
map (hd1) (hd0)
makeactive
rootnoverify (hd1,0)
chainloader +1


GRUB과 Linux 파티션의 관계

먼저, GRUB에서는 장치 이름이 괄호'( )'로 묶어져야 한다. 파티션 번호도 1이 아닌 0으로부터 시작됨을 명심해라.

GRUB의 장치 Linux의 장치명
(hd0) = hda
(hd1) = hdb
(hd0,1) = hda2
(hd0,4) = hda5
(hd1,0) = hdb1




GRUB images files

GRUB은 몇개의 이미지들로 구성된다: 두 개의 기본 stage들과 Stage 1.5로 불리는 추가 가능 이미지,두 개의 boot image 들이다.

'stage1' GRUB으로 부팅하게 하는 기본 이미지이. 보통 MBR 이나 파티션의 boot sector 에 설치(embeded)된다. PC boot sector가 512 bytes이므로, 이 image의 크기도 정확히 512 bytes이다. 'stage1'이 하는 역할은 로컬 디스크로부터 Stages 1.5의 Stage 2 를 띄우는 일이다. 크기 제한 때문에, 'stage1'은 BLOCK LIST FORMAT에서 Stage 2 (or Stage 1.5)의 위치를 인코딩하므로,어떠한 filesystem 구조도 이해하지 못한다.

'stage2' 가 GRUB의 core image이다. 자신으로 부팅하는 것 빼고는 모든걸 한다. 보통 filesystem에 쓰여지지만, 안 그래도 된다.

'e2fs_stage1_5'
'fat_stage1_5'
'ffs_stage1_5'
'jfs_stage1_5'
'minix_stage1.5'
'reiserfs_stage1.5'
'vstafs_stage1.5'
'xfs_stage1_5'
이것들이 Stage 1.5 라고 불리는 것 들인데 'stage1''stage2'사이를 이어주기 때문이다. 다시말해, Stage 1.5는 Stage 1에 의해 띄워지며 Stage 2를 띄운다. 'stage1''*_stage1_5'의 차이는 전자가 파일시스템은 알수없지만 후자는 하나의 파일시스템을 이해한다는 것이다 (예. 'e2fs_stage1_5'는 ext2fs를 인식). 그러므로 Stage 2 image를 다른 곳으로 옮길 수 있는 것이다.
Stage 2의 크기가 커서 통상적으로 고정적 구역에 설치(embedded)되지 못하지만, Stage 1.5 는 MBR 바로 뒤나 ReiserFS 또는 FFS의 부트 로더 영역에 설치될 수 있다.

'nbgrub' 이것은 network boot image이며 Etherboot 등과 같은 네트웍 부트 로더가 사용하는 Network Image Proposal을 위한 것이다. Stage2와 거의 같으나 네트웍을 설정하고 네트웍으로부터 설정 파일을 띠운다.

'pxegrub' 일부 Netboot ROM들을 위한 Preboot Execution Environment와 같은 데서 사용하는 또다른 네트웍 부트 이미지이다. 포맷을 제외하면 'nbgrub'과 똑같다.

GRUB boot floppy 만들기

GRUB boot floppy를 만들려면 이미지 디렉토리의 'stage1''stage2' 이 있어야 한다. 이 파일들을 플로피의 첫번째와 두번째 블럭에 각각 기록한다:


Code:
cd /usr/share/grub/i386-redhat
dd if=stage1 of=/dev/fd0 bs=512 count=1
dd if=stage2 of=/dev/fd0 bs=512 seek=1


GRUB을 플로피에 설치
Code:
# /sbin/grub-install /dev/fd0

Quote:
# /sbin/grub-install /dev/fd0
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

# this device map was generated by anaconda
(fd0) /dev/fd0
(hd0) /dev/hda
새로운 커널을 설치할 때마다 플로피 이미지도 업데이트 해주어야 한다.
"/sbin/grub-install /dev/fd0" 을 다시 실행하라.

Sunday, November 06, 2005

server config for Ubuntu linux

그 동안 소규모 게시판과 ftp 서버로 사용하던 fedora core2가 file system 오류로 문제가 생겼다.
겸사겸사 새로나온 fedora core4로 upgrade 하려고 했는데, 막상 설치 단계에서 fedora core4가 첫번째 시디가
읽기 오류가 생기면서 설치가 되지않았다.

주변을 살펴보니 유일한 대안은 몇달전 신청해서 받은 ubuntu hoary hedgehog 시디 뿐이었다.

설치는 무척 쉽게 끝났지만, 다 설치하고 보니 OTL...

ubuntu가 데스크탑용으로 제작된거라 아파치같은 서버 프로그램은 하나도 설치되지 않는 것이 아닌가....
google을 찾아 헤매가며 겨우 관련 프로그램들 설치하고 정상적으로 서비스를 복구했다.

다음에 또 설치할 기회가 있다면 당연히 redhat 계열로 가야겠다고 생각 되지만, 혹시나 하는 마음에 우분투 설치 과정을 정리해 놓기로 했다.

서버의 명칭은 109 이므로
prompt는 109~%, 109~# 와 같이 표시된다.


1. 먼저 루트 계정이 기본적으로 사용되지 않는 우분투에 루트 계정을 활성화
109~%sudo passwd root

2. 루트로 로그인
109~%su -
앞의로의 작업은 모두 루트 계정으로 수행
3. aptget 소스 추가
109# vi /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu/ warty main restricted universe
deb-src http://archive.ubuntu.com/ubuntu/ warty main restricted universe
추가

109# apt-get update
109# apt-get install php
109# apt-get install mysql
109# apt-get install apache2
109# apt-get install vsftpd
109# apt-get install telnetd
109# apt-get install ssh
109# apt-get install squid

참고로 게시판은 GNUboard 4를 사용했다.
그누보드 설치에 관련된 사항은 위의 홈페이지에서 찾을 수 있다.

4. 설치된 apache2와 php가 연동되어 사용될 수 있도록 설정

109# vi /etc/php4/apache/php.ini

register_globals = On


5. 기존 페도라에서 수행되던 서비스 파일 복구

기존에 있던 /var/lib/mysql 내의 모든 db 파일들을 복사하여 DB 복구
또 기존의 /var/www/html/ 밑에 있던 모든 파일들을 /var/www 아래로 복사

우분투의 apache2는 기본 http root 위치가 /var/www로 설정.

이런 복구 작업에서 제일 신경쓰이는 것이 기존 사용자 id와 새 사용자 id가 변경되는 점이다.
uid, gid가 변경되므로 copy를 한 다음에는 일일히 확인한 다음에 chown 명령으로 잡아준다.

6. 인터넷 공유를 위한 dhcp3과 iptables 설정

109# vi /etc/dhcp3/dhcpd.conf

default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
option domain-name-servers 168.126.63.1;
subnet 192.168.0.0 netmask 255.255.255.224 {
range 192.168.0.2 192.168.0.20;
}


109# vi /etc/init.d/iptables

#!/bin/sh
echo "1" > /proc/sys/net/ipv4/conf/all/forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -A POSTROUTING -o eth0 -t nat -j MASQUERADE
/sbin/iptables -A INPUT -s 192.168.0.0/255.255.255.0 -p tcp -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -j ACCEPT
/sbin/iptables -A FORWARD -o eth1 -j ACCEPT


109# chmod 755 iptables
109# update-rc.d /etc/init.d/iptables defaults

7. ftp 설치

109# apt-get install vsftp

8. 회사 방화벽을 우회해서 접속 가능하도록 telent 접속 포트 변경

109# vi /etc/services

telnet 21/tcp ===> telnet 26/tcp


9. 서비스 시작

109# /etc/init.d/squid start
109# /etc/init.d/apache2 start
109# /etc/init.d/mysqld start

10. 텔텟 접속시 영문을 사용하도록 설정 변경
우분투 설치할 때 한글로 설정을 했더니, putty로 텔넷 접속하니 한글이 정상적으로 나타나지 않는다. 그래서 아예 기본 문자셋을 en_US로 변경.

109~# vi /etc/environment

#LANGUAGE="ko_KR:ko:en_GB:en"
LANGUAGE="en_US:en:ko_KR"ko
#LANG=ko_KR.UTF-8
LANG=en_US


11. 기타 apache2, php4 관련 프로그램의 추가 설치
109~# apt-get install php-devel php-domxml php-gd php-imap php-ldap php-mysql php-pear php-xmlrpc php-rrdtool curl curl-devel perl-libwww-perl ImageMagick

109~#/etc/init.d/apache2 restart

12. user 별 개인 홈 서비스를 위한 설정 변경

109# vi /etc/apache2/apache2.conf

다음 항목을 활성화
# UserDir is now a module
UserDir public_html
UserDir disabled root



AllowOverride FileInfo AuthConfig Limit
Options Indexes SymLinksIfOwnerMatch IncludesNoExec


13. HTTP server에서 한글을 기본 언어로

109# vi /etc/apache2/apache2.conf

LanguagePriority ko en da nl et fr de el it ja no pl pt pt-br ltz ca es sv tw

AddDefaultCharset EUC-KR



14. 개인 홈페이지를 사진 갤러리로 설정하기 위한 php script 설치

먼저 gd library를 활성화 (설치는 좀 전의 apt-get install php-gd로 되어있어야 함)

http://www.jakeo.com/software/fotopholder/index.php 다운 설치

109# cd ./fotopholder25
109# cp ./index.php /home/user/public_html/index.php
109# mkdir /home/user/public_html/_cache
109# chmod 777 /home/user/public_html/_cache

그런 다음 user 홈페이지에 처음으로 접속하면 web browser에서 환경 설정이 시작된다.

환경 설정이 완료되면 /home/user/public_html/_cache 밑에 config.php가 생성된다.

15. 개인 홈페이지 제목 변경

109# vi /home/user/public_html/_cache/config.php

Album_name 설정을 다음과 같이 바꿔주면 각 사용자 id 기준으로 제목이 표시됨
$album_name = substr($_SERVER["PHP_SELF"],2,strlen($_SERVER["PHP_SELF"])-12)."'s Photo gallery"; //The name of your album

16. 기본 설정된 user directory를 새로 생성되는 사용자마다 적용되도록 함

109# cp –r /home/user/* /etc/skel


17. 만일의 file system 오류에 대비해 mysql db의 백업

하루 단위로 db를 백업하므로 .etc/cron.daily 에 해당 스크립트를 넣어두면 매일 새벽 실행됨.
db 사이즈가 크지 않으므로 mysqldump 명령으로 데이터베이스 단위로 백업하는것보다
모든 mysql db를 한꺼번에 그대로 백업하는 것이 효과적일 듯해서...

백업 수행 전에 어제 날짜 파일은 yesterday.db.tar.bz2로 이름을 변경한다.
이렇게 하면 언제나 어제와 오늘자 파일만 백업으로 저장할 수 있다.
어제 날짜의 인식은 시간 설정이 한국시간대인 GMT+9 이고, cron의 실행이 매일 새벽 4시 경에 이루어 지는 점을 이용하여 date -u +%y%m%d 명령을 수행할 경우 universal 시간, 즉 GMT 날짜가 나오는 것을 이용하였다.

109# vi /etc/cron.daily/109dbbackup

#! /bin/bash

if [ -f /data/util/109backup/`date -u +%y%m%d`.db.tar.bz2 ] ; then
mv -f /data/util/109backup/`date -u +%y%m%d`.db.tar.bz2 /data/util/109backup/yesterdata.db.tar.bz2
fi

tar -cvvf /data/util/109backup/`date +%y%m%d`.db.tar /var/lib/mysql/
bzip2 -z /data/util/109backup/`date +%y%m%d`.db.tar
exit 0

18. 만일의 file system 오류에 대비해 웹서버 파일 백업

db 이외의 게시판 파일이나 게시판의 첨부 파일 등은 모두 /var/www 폴더에 저장된다.
사이즈가 무척 크므로 이 파일들은 한 달에 한 번씩 백업하기로 하고 etc/cron.monthly 에 스크립트를 넣어 실행되도록 하였다.
백업 수행 전에 이전에 한 달 전에 백업된 파일의 지우도록 한다.

109# vi /etc/cron.monthly/109wwwbackup

#! /bin/bash

if [ -f /data/util/109backup/*.www.tar ] ; then
rm -f /data/util/109backup/*.www.tar
fi

tar -cvvf /data/util/109backup/`date +%y%m%d`.www.tar /var/www/
exit 0


19. Ddns 서비스를 위한 no-ip 설치

http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz

gzip -d noip-duc-linux.tar.gz
tar xvf noip-duc-linux.tar
cd ./noip-2.1.1
cp ./noip2-linux /usr/local/bin/noip2
cp debian.noip2.sh /etc/init.d/noip2

/usr/sbin/update-rc.d noip2 defaults
/etc/init.d/noip2 start

Thursday, August 11, 2005

구글 블로그라...

인터넷의 모든 것은 결국 구글로 다 통하게 되는것인가?