컴퓨터/홈서버2011.02.14 12:58
먼저 FFMPEG 패키지를 받아 설치한다.
$ sudo rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
$ sudo yum install ffmpeg

serviio 홈페이지에서 설치 파일을 다운로드 한다.
홈페이지 주소: http://www.serviio.org/download
$ wget http://download.serviio.org/releases/serviio-0.5-linux.tar.gz

serviio 압축해제
$ tar xvzf serviio-0.5-linux.tar.gz 

serviio 실행스크립트에 원격콘솔 설정
serviio-0.5/bin/serviio.sh 스크립트의 JAVA_OPTS 변수안에 환경변수를 추가한다. (192.168.0.100에 서버주소 입력)
$ vi serviio.sh
   -Dserviio.remoteHost=192.168.0.100

serviio 스크립트 실행
$ bin/serviio.sh

serviio 종료
$ bin/serviio.sh -stop


Posted by 바람일려나
컴퓨터/홈서버2010.09.01 09:17

mollify는 php로 만들어진 웹기반의 파일 관리 프로그램이다. 파일 탐색, mp3 재생, 그림파일 보기 등등 여러가지 기능을 제공하는데, utf-8로 인코딩된 한글 파일명의 재생이 안되는 문제가 있었다.

 

mollify에서는 파일명을 base64_encoding()을 이용해 넘기는데 한글이 들어간 부분은 ‘+/=’ 문자로 변경되는 경우가 발생하는데 이 문자들은 url의 구분자로 사용되기 때문에 문제가 생겼던 것이다.

 

서버 파일 중 FilesystemItem.class.php 파일의 publicID() 함수를 찾아 수정하면 해결된다.

vi backend/include/filesystem/FilesystemItem.class.php

                public function publicId() {
                        //return base64_encode($this->id());    // 주석처리
                        return strtr(base64_encode($this->id()),'+/=','-_,');    // 수정한 부분
                }

 

또한 여러 파일을 압축 다운로드 할때도 파일명이 utf-8로 되어 있어, 윈도우 환경에서는 정상적으로 압축해제하지 못하는 문제가 생기는데, 이것은 MollifyZipStream.class.php 파일에서 add 함수를 찾아 수정하면 해결된다.

vi backend/include/filesystem/MollifyZipStream.class.php 

        public function add($name, $size, $path) {

            // $this->zip->addFile($path, i$name);  // 주석처리

            $this->zip->addFile($path, iconv('utf-8', 'euc-kr', $name));    // 수정한 부분
        }

 

IE6에서는 utf-8로 된 한글 파일을 정상적으로 다운로드 하지 못한다. 파이어폭스나 크롬은 잘만 되는데…

어쨌든 IE에서도 다운이 되도록 OutputHandler.class.php를 수정해서 파일명을 utf-8에서 euc-kr로 변환하여 브라우저에 전달하도록 한다. 수정할 함수명은 downloadBinary() 이다.

vi backend/include/OutputHandler.class.php
     // header("Content-Disposition: attachment; filename=\"".$filename."\";");    // 주석처리
     header("Content-Disposition: attachment; filename=\"".iconv('utf-8','euc-kr',$filename)."\";");    // 수정한 부분
Posted by 바람일려나
컴퓨터/홈서버2010.08.27 14:48

AjaXplorer에서 여러개의 파일을 다운로드하기 위해 압축다운로드 할때, 대상 파일명에 한글이 포함되어 있으면 압축파일이 정상적으로 생성되지 않는 현상이 발생한다. 서버의 캐릭터셋이 utf-8일 때 2바이트 캐릭터를 제대로 처리하지 못해 발생하는 문제인 것 같다.

 

이 문제는 AjaXplorer에서 압축라이브러리로 파일명을 인계할 때 utf-8을 euc-kr로 변경하면 해결할 수 있다.

 

수정할 파일은 다음과 같다.

plugins/access.fs/class.fsAccessDriver.php

 

“function makeZip” 부분을 찾아 코드를 다음과 같이 변경한다.

 

[Before]

$filePaths[] = array(PCLZIP_ATT_FILE_NAME => $realFile,
                                 PCLZIP_ATT_FILE_NEW_SHORT_NAME => basename($item));

 

[After]

$filePaths[] = array(PCLZIP_ATT_FILE_NAME => $realFile, 
                                 PCLZIP_ATT_FILE_NEW_SHORT_NAME => iconv('utf-8', 'euc-kr', basename($item)));
Posted by 바람일려나
컴퓨터/홈서버2010.08.09 18:19

CPU: AMD 애슬론II-X2 250 (레고르)     -- 2010-06-07 GMarket 81,600

 

 

M/B: ASUS M4A78-VM 디지탈그린텍     -- 2010-06-06 옥션 71,700

 

 

MEM: 삼성 DDR2 2G PC2-6400 x 2ea     -- 2010-03-27 스피드메모리 45,000,  2010-08-09 중고구매 43,000

 

 

HDD: WD 640GB Caviar Blue WD6400AAKS (SATA2/7200/16M)     -- 2010-07-02 56,000

 

하드디스크 추가 구매: 웨스턴디지털 1TB 7200RPM 32MB WD10EALS -- 2011-02-14 대리구매 \64,720

 

CASE: Heroichi HEC Live 블랙 (HEC-300W)     -- 2010-06-07 옥션 76,500

Posted by 바람일려나
컴퓨터/홈서버2010.07.12 15:01

CentOS 5.4에서 yum을 이용하여 subversion을 설치하면 1.4.x 버전이 설치된다. 하지만 subversion이 현재 1.6.x 버전까지 나와있으니까 기본 저정소에서 제공하는 버전이 상당히 낮은 것이라 할 수 있다.

 

여기에선 CentOS의 yum 명령으로 subversion 1.5 이상 버전을 설치하는 방법을 다룬다.

 

subversion 1.5.x 이상 버전은 RPMForge 레파지토리에서 설치할 수 있다. 먼저 RPMForge를 이용하기 위해 RPMForge에서 서버 아키텍쳐(31Bit 또는 64Bit)에 맞는 PRM을 받아 설치토록 한다.

 

* Download: http://rpmrepo.org/RPMforge/Using

   

    CentOS 5.4 64Bit 환경에서는 다음의 명령으로 설치한다.

# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm
# rpm -Uhv rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm

 

RPMForge에는 실험적인 버전이 많으므로  /etc/yum.repos.d/rpmforge.repo을 열어 enable=1을 “0”으로 변경하여 기본으로 사용하지 않도록 한다.

 

yum --enablerepo=rpmforge check-update subversion 명령으로 subversion 1.5 이상 버전이 있는지 확인한다. 다음과 비슷한 결과를 볼수 있을텐데 시간이 지남에 따라 더 높은 버전이 나올수도 있다.

# yum --enablerepo=rpmforge check-update subversion

subversion.x86_64                     1.6.12-0.1.el5.rf                          rpmforge

 

설치되어 있는 subversion의 버전을 확인한다. 아마도 2개의 rpm이 나타날 것이다. 이미 설치된 패키지는 rpm –evf 명령으로 삭제하도록 한다. subversion을 설치하지 않았다면 이 과정은 필요치 않다.

# rpm -qa | grep -i subversion
subversion-1.4.2-2.el5
subversion-1.4.2-2.el5
# rpm -evf --allmatches subversion-1.4.2-2.el5

 

이제 subversion이 설치되지 않은 상태일테니 다음의 명령으로 PRMForge에서 subversion을 설치하도록 한다. 1.4.x 버전이 있는 base 레파지토리를 비활성시키고, prmforge를 활성화 하면서 설치하는 것에 유의하도록 한다.

# yum --enablerepo=rpmforge --disablerepo=base install subversion
Posted by 바람일려나
컴퓨터/홈서버2010.06.25 18:07

apache2에서 Indexes 옵션을 사용하면, 디렉토리 내에 index.html이나 index.htm 파일이 없을 때 파일목록이 표시된다. 그런데 최근 웹서버 설정을 했는데 한글 파일명이 모조리 깨셔서 나오는 문제가 생겼다.

 

 

인터넷으로 검색해보니 대부분 “AddDefaultCharset utf-8” 옵션을 지정하라고 하는데 해결이 되지 않았다.

 

구글신에게 계속 도움을 요청한 결과 아파치 2.2.4 버전 이후로는 Indexs 옵션에 더 이상 AddDefaultCharset 설정이 적용되지 않는다는 사실을 알았다. 대신 IndexOptions Charset 옵션을 사용하란다.

 

IndexOptions Charset=UTF-8

 

아파치를 재시작하고 다시 조회해보니 한글이 정상적으로 나온다.

Posted by 바람일려나
분류없음2010.06.17 12:40

  • h1
  • .article h1 {
        margin-top: 15px;
        margin-bottom: 15px;
        padding-left: 10px;
        border-left: solid #CD3700;
        border-width: 5px;
        font-family:돋움, Dotum, tahoma, AppleGothic, sans-serif;
        font-size: 12pt;
        font-weight: bold;
        color: #FF4500;
    }


  • 터미널

    /* css by rollcake */
    .terminal-box {
        margin-top: 10px;
        margin-right: 10px;
        margin-left: 15px;
        margin-bottom: 10px;
        padding-top: 10px;
        padding-right: 10px;
        padding-left: 10px;
        padding-bottom: 10px;
        border-right: rgb(255,255,255) 1px solid;
        border-left: rgb(255,255,255) 1px solid;
        border-bottom: rgb(255,255,255) 1px solid;
        border-top: rgb(255,255,255) 1px solid;
        background-color: rgb(0,0,0)
    }
    .terminal-box pre {
        color: #5fb636;
        font-family: tahoma
    }
    .terminal-box p {
        color: #5fb636;
        font-family: tahoma
    }

Posted by 바람일려나
컴퓨터/홈서버2010.06.17 11:56
nfs로 마운트된 디바이스트를 umount 할 때 "not found / mounted or server not reachable" 오류가 발생하는 경우가 있다.

[root@XenServer ~]# umount /mnt
umount.nfs: XenServer:/nas: not found / mounted or server not reachable
umount.nfs: XenServer:/nas: not found / mounted or server not reachable

이럴 때는 umount.nfs를 삭제하고 umount를 다시 시도하면 된다.

[root@XenServer ~]# rm /sbin/umount.nfs 
rm: remove regular file `/sbin/umount.nfs'? y
[root@XenServer ~]# umount /mnt


Posted by 바람일려나
컴퓨터/홈서버2010.06.15 18:27

XenServer의 Local Storage 중 일부를 NAS로 구성하여 리눅스 가상머신에는 NFS로 붙이고, 윈도우 가상머신에는 CFS로 붙이는 구성을 해보았다. XenServer에 NAS를 구성하면 다음과 같은 장점이 있다.

 

  • ISO 라이브러리를 XenServer내에 구성할 수 있다.
  • XenServer는 항상 가동중이기 때문에 VM의 상태와 관계없이 안정적인 네트워크 스토리지를 제공할 수 있다.
  • VM에서 사용하는 중요 데이터를 XenServer에 저장하고 VM은 마음대로 실습(?)할 수 있다.

 

참고로 본인의 XenServer 하드웨어는 다음과 같다.

 

  • CPU: AMD 애슬론II-X2 250(레고르)
  • MEM: DDR2 2GB
  • M/B: Asus M4A78-VM
  • HDD: 640GB 5400rpm
  • XenServer 5.6
  • IP: 192.168.0.2

 

작업은 다음의 순서로 진행한다.

  1. nas 용 스토리지를 할당하고 XenServer에 마운트 한다.
  2. nfs 서비스를 설정한다.
  3. samba 서비스를 설정한다.

 

 

 

1) nas 용 스토리지를 할당하고 XenServer에 마운트 한다.

 

이하 작업은 XenServer에 접속해서 수행한다.

XenServer에 nas용 마운트 포인트를 생성하고 쓰기 권한을 풀어준다.

$ mkdir /nas
$ chmod 777 /nas

 

 

fdisk 명령으로 확인해보면 우리가 사용할 수 있는 스토리지는 Linux LVM으로 구성되었음을 확인할 수 있다.

$ fdisk -l
Disk /dev/sda: 640.1 GB, 640135028736 bytes
255 heads, 63 sectors/track, 77825 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         523     4194304   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2             523        1045     4194304   83  Linux
/dev/sda3            1045       77825   616740673   8e  Linux LVM

 

 

vgdisplay로 Linux LVM의 VG Name 및 가용량을 확인한다. VG Name은 이후 작업의 입력인자로 사용된다.

$ vgdisplay
  --- Volume group ---
  VG Name               VG_XenStorage-9af52d2d-12da-425b-b7f3-acdf5eb9d4aa
  System ID            
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  23
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                8
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               588.16 GB
  PE Size               4.00 MB
  Total PE              150568
  Alloc PE / Size       123961 / 484.22 GB
  Free  PE / Size       26607 / 103.93 GB
  VG UUID               0yYD2Q-Aq5U-Nvgx-SUyF-2pMN-iOG1-ZkGcem

 

 

원하는 용량만큼 lv를 생성한다. lvcreate –L 용량 lv_name VG_ Name 형태로 명령어를 입력한다.

$ lvcreate -L 50GB -n nas_lv VG_XenStorage-9af52d2d-12da-425b-b7f3-acdf5eb9d4aa

 

 

생성된 lv를 ext3로 포맷한다.

$ mkfs.ext3 /dev/VG_XenStorage-9af52d2d-12da-425b-b7f3-acdf5eb9d4aa/nas_lv

 

 

이제 마운트 해본다.

$ mount /dev/VG_XenStorage-9af52d2d-12da-425b-b7f3-acdf5eb9d4aa/nas_lv  /nas

 

 

부팅 후에도 자동 마운트 되도록 설정한다.

fstab을 이용하면 편할텐데, 디바이스 파일(/dev/VG_XenStorage-9af52d2d-12da-425b-b7f3-acdf5eb9d4aa/nas_lv)이 재부팅하면 인식되지 않는 현상이 발생한다. 편법으로 자동 실행 스크립트를 만들어서 lvchange 명령으로 디바이스 파일 재생성 및 마운트하도록 구성했다.

$ vi /etc/init.d/nas_mount
#!/bin/sh
#
# chkconfig: 345 20 80
# description: This script takes care of starting \
# and stopping nas_mount
#
# See how we were called.
case "$1" in
start)
    # Start set.
    echo -n "/nas mounting... "
    lvchange -ay VG_XenStorage-9af52d2d-12da-425b-b7f3-acdf5eb9d4aa && \
         mount /dev/VG_XenStorage-9af52d2d-12da-425b-b7f3-acdf5eb9d4aa/nas_lv /nas
    echo "done"
    ;;
stop)
    # Stop set.
    echo "/nas umounting... "
    umount /nas
    echo "done"
    ;;
status)
    mount | grep /nas
    ;;
*)
    echo "Usage: nas_mount {start|stop|status}"
    exit 1
    ;;
esac
exit 0

 

이 스크립트를 실행 가능한 파일로 변경하고 자동 실행되도록 설정한다.

$ chmod 755 /etc/init.d/nas_mount
$ chkconfig --level 345 nas_mount on

 

 

이제 XenServer를 재부팅하여 /nas에 정상 마운트되는지 확인한다.

$ shutdown -r now
$ df -h  # 부팅 완료 후에 확인

 

 

 

 

 

2) NFS 서비스를 설정한다.

 

XenServer에 NFS 서비스를 설정하여 다른 서버에서 /nas를 마운트 할 수 있도록 한다.

먼저 호스트명이 정의되있지 않다면 hosts 파일에 정의한다. 아이피 주소 및 서버명은 본인의 것으로 사용한다.

$ vi /etc/hosts
    192.168.0.2 XenServer

 

 

/nas 디렉토리를 192.168번대 시스템에서 접근할 수 있도록 설정한다. 

$ vi /etc/exports
    /nas 192.168.0.0/24(rw,no_root_squash,sync)

  옵션설명

  • rw: 클라이언트에서 쓰기 가능
  • no_root_squash: 클라이언트의 root를 서버의 root로 인정 (root에게 모든 권한 부여)
  • sync: write전에 동기화, 반대는 async
    ※ XenServer 5.6에서 nfs는 극악의 성능을 보이는데 sync를 async로 변경하면 아주 아주 빨라진다. 성능에 불만이 있다면 async를 시도해볼 만 하다. 좀 불안하긴 하겠지만...

 

XenServer의 portmapper 서비스는 –l 옵션이 기본으로 설정되어 있어 서비스가 제대로 작동하지 않는다. 아래 지시대로 PMAP_ARGS을 주석 처리하여 문제가 없도록 한다.

$ vi /etc/sysconfig/portmap
    #PMAP_ARGS=-l # 주석처리

 

 

NFS 설정을 적용하고 확인한다.

$ exportfs -a
$ exportfs
    /nas            192.168.0.0/24

 

 

NFS 관련 서비스를 시작한다.

$ service nfs start
$ service portmap start

 

 

정상 작동 중인지 확인한다. 111 포트를 사용하는 portmapper, 2049 포트를 사용하는 nfs등을 확인할 수 있다.

$ rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp    600  status
    100024    1   tcp    600  status
    100021    1   udp  47834  nlockmgr
    100021    3   udp  47834  nlockmgr
    100021    4   udp  47834  nlockmgr
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100021    1   tcp  38515  nlockmgr
    100021    3   tcp  38515  nlockmgr
    100021    4   tcp  38515  nlockmgr
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100005    1   udp  32767  mountd
    100005    1   tcp  32767  mountd
    100005    2   udp  32767  mountd
    100005    2   tcp  32767  mountd
    100005    3   udp  32767  mountd
    100005    3   tcp  32767  mountd

 

 

$ showmount --export
Export list for XenServer:
/nas 192.168.0.0/24

 

 

마지막으로 iptables의 설정을 변경하여 NFS 서비스의 포트를 개방해야 한다. 하지만 클라이언트의 portmapper 서비스가 비정규 포트를 사용하기 때문에 iptables를 적정하게 수정하는게 매우 힘들다. 여기서는 iptables 서비스를 중단하고 자동 실행되지 않도록 변경한다.

$ service iptables stop
$ chkconfig --level 2345 iptables off

 

 

다른 서버에서 XenServer의 /nas 디렉토리를 NFS로 마운트해본다.

$ mkdir /xenserver-nas
$ mount -t nfs 192.168.0.2:/nas /xenserver-nas

 

 

 

3) samba 서비스를 설정한다.

 

samba 서비스는 XenServer에 설치되어 있지 않다. XenServer가 인터넷에 연결되어 있다면 yum 을 이용해 설치할 수 있다. 인터넷으로 패키지를 받아올 수 있도록 CentOS-Base.repo 파일의 base 섹션 내 enable을 1로 변경한다.

$ vi /etc/yum.repos.d/CentOS-Base.repo
  [base]
  ...
  enable=1

 

 

이제 yum을 이용해 samba를 설치하고 자동 실행되도록 구성한다.

$ yum install samba
$ chkconfig --levels 345 smb on

 

 

삼바 환경파일을 백업해 놓고 적절하게 수정한다. 여기서는 /nas 디렉토리를 서비스 하도록 구성했다.

$ cp /etc/samba/smb.conf /etc/samba/smb.bak
$ vi /etc/samba/smb.conf
        server string = NAS on XenServer
        netbios name = XenServer
        log file = /var/log/samba/%m.log
        security = user
        passdb backend = tdbsam
        load printers = no
        cups options = raw
        [nas]
        comment = nas
        path = /nas
        public = yes
        writable = yes
        printable = no

 

 

삼바 서비스를 재시작 한다.

$ service samba restart

 

 

NFS를 설정하면서 iptables를 비활성화 시켰지만 여전히 iptables를 사용코자 한다면 iptables 테이블에 samba 서비스용 포트를 허용하도록 다음 2개 라인을 추가한다.

$ vi /etc/sysconfig/iptables
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT

 

 

윈도우에서 시작 –> 실행으로 다음 명령을 입력하여 정상 연결되는지 확인한다.

\\192.168.0.2\nas

 

 

리눅스 시스템에서는 mount 명령으로 연결해본다.

$ mount –t cifs –o user=<username>,password=<yourpass> //192.168.0.2/nas /nas
$ ls –la /nas
Posted by 바람일려나
컴퓨터/홈서버2010.06.15 16:27

구글 저장소에 svn으로 commit 할 때 “500 Internal Server Error” 에러가 발생할 때가 있다.

Checkout 후 첫 commit 시에 주로 발생하는 듯 하다.

$ svn commit -m 'blah blah blah'
Authentication realm: <https://yourid.googlecode.com:443> Google Code Subversion Repository
Password for 'username':
svn: Commit failed (details follow):
svn: MKACTIVITY of '/svn/!svn/act/e372a37b-81cc-4001-84e4-17a2f46aa075': 500 Internal Server Error (https://yourid.googlecode.com)
svn: Your commit message was left in a temporary file:
svn:    '/nas/server/perl/svn-commit.tmp'

  

 
이럴 땐 사용자명과 패스워드를 같이 지정해서 commit 하면 해결할 수 있다.

$ svn commit -m 'blah blah blah' --username <username> --password <password>

Posted by 바람일려나