'알아둘일'에 해당하는 글 223건

sysmon 이 공식지원하는 버전은 python 2.4 인 것 같다.
그런데, 2.5 까지도 무난하게 동작하는 듯 하다.

ubuntu 10.04 LTS 버전을 사용하는데, 깔려 있는 버전이 python 2.6 이다.
처음에 동작을 안하기에 python 2.5 로 다운그레이드해서 시도했는데, 문제가 더 커졌다.
그래서 그냥 2.6 에서 동작하도록 sysmon 소스를 수정하기로 했다.

설치후에 CheckDaemon , SysmonDaemon , SysmonAgent 를 마스터와 각 호스트에서 동작시키는 부분에서 각 소스를 조금수정하면 된다.(처음에는 많을 줄 알았는데, 그리 많지 않다.)
세개의 파일만 고치면 된다.

./SysmonDaemon 을 실해시켰을때,
DeprecationWarning: the sets module is deprecated
이런 메세지가 나온다.
22번줄정도에
from sets import Set
이 부분을
try:
    set
except NameError:
    from sets import Set as set
으로 바꿔준다.  그리고, "Set(" 으로 검색해서 소문자 "set(" 으로 바꿔준다. (2군데 정도 나온다.)

그리고 세 파일에 공통적용되는 부분. centos 에서는 정상작동할 것이니 패스.
pgrep 으로 검색해보면  pgrep -l -f 'python.*SysmonDaemon'  같은 부분이 나온다.
(몇군데 있으니 모두 바꿔준다. 각 파일마다 1,2개정도)
저 항목이 해당프로세스의 PID 만 나와야 하는데, 우분투에서는
12178 python SysmonDaemon
이런식으로 프로세스명도 같이 나온다. -x 옵션을 넣어준다.



이걸로 끝이다. 그 부분만 고치면 python 2.6 에서도 무리없이 동작한다.


ps. sysmon 이 네이버오픈소스로 공개하고나서 업데이트를 별로 안한다.
  네이버 내부에서는 많이 개선이 되었을 듯 한데...(아닌가?)

sysmon 을 보다보니, 같이 공개한 dist 도 같이 사용하는게 편하다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
추가: python 2.5 로 다운그레이드해서 쓰니 다른문제들이 더 많다.
  python 2.6 에서 작동하도록 수정하는 것이 더 쉽다.
  python 2.6 에서 sysmon 사용하는 것은 따로 포스팅 예정.


sysmon 으로 서버모니터링을 해볼까 테스트하는데.
ubuntu 10.04 에서 python 2.6 이 깔려있는데, sysmon 이 오류를 뿜어낸다.
2.5 로 다운그레이드를 해야 겠다.

이미 시도한 분들이 있다.
http://yoophi.sshel.com/wp/?p=164
http://kovshenin.com/archives/installing-python-2-5-on-ubuntu-linux-10-10/

$ sudo add-apt-repository ppa:fkrull/deadsnakes
$ sudo apt-get update
$ sudo apt-get install python2.5
add-apt-repository 명령이 없다면, 아래 명령으로 패키지를 설치해주면된다.
sudo apt-get install python-software-properties


launchpad 의 패키지를 사용하는 방법.
첫줄을 수동으로 할려면 /etc/apt/sources.list 에 다음줄을 넣어준다.
deb http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu lucid main
deb-src http://ppa.launchpad.net/fkrull/deadsnakes/ubuntu lucid main

sysmon 이 잘 작동해야 할텐데. 근데, sysmon 설명이 참 부실하다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
웹캠이 노는게 있어서 2개를 연결해서 테스트 해봤다.

모델은
Samsung Electro-Mechanics Co. MPC-C30 AnyCam Premium for Notebooks [pwc]
OmniVision Technologies, Inc. OV511+ Webcam
Z-Star Microelectronics Corp. ZC0301 Webcam

현재 쓰고 있는 모델은 마지막 ZC0301
모듈은 gspca_zc3xx 를 올려서 사용한다.(자동으로 모듈이 올라온다)
OV511 은 gspca_ov519 를 사용한다.
MPC-C30 은 pwc 라는 것을 사용하는데, 드라이버가 잘 안 맞는지 작동하지 않는다.

OV511 은 Cheese 로 연결해서 보면 잘 나온다.
그런데, motion 쪽에 연결하면 motion 이 segfault 를 내뱉으며 죽는다.


그래서 최근에 구매한 놈을 연결하기로 했다.
연결하니  Sirius USB2.0 Camera 라는 놈인것 같다.
이것은 UVC 연결을 지원한다.  드라이버도 uvcvideo 모듈이 올라온다.
치즈도 잘되고 motion 에서도 잘 연결되어 작동한다.

카메라 두개를 motion 에서 사용하려면
/etc/motion/motion.conf 에서 마지막 부분의 주석처리를 빼주고 적당한 경로로 바꿔준다
thread /etc/motion/thread1.conf
thread /etc/motion/thread2.conf
이런 부분이 있다. thread1 이 첫번째 카메라, thread2 는 두번째 카메라 의 설정이 된다.
threadN.conf 파일을 주석빼고 보면
cat thread1.conf | grep -v '#'
이런 내용이다.
videodevice /dev/video0
input 8
text_left CAMERA 1
target_dir /tmp/motion1
webcam_port 8081

;on_picture_save /usr/local/motion-extras/camparse1.pl
;on_movie_end /usr/local/motion-extras/mpegparse1.pl
카메라가 인식되면  /dev/video0 , video1 으로 장치드라이버가 생기게 된다.
각 thread1,2 에 각각 장치드라이버를 적어주다.
input 8 은 기본 usb 카메라일때를 말하는 듯(주석설명에 그렇게.)
target_dir 은 움직임이 포착되면 이미지로 저장이 되는데 그 저장위치를 지정한다.
webcam_port 는 웹브라우저로 카메라 영상을 볼 수 있는 포트를 지정한다.
카메라별로 다르게 포트를 지정해준다.

on_picture_save , on_movie_end  부분은 추후 카메라영상 원격 저장하기에서 다룰 예정이다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
윈도우PC를 FTP 서버로 만들어 주는 filezilla server 를 이용해서
공유기내에서 정상작동하도록 설정해본다.

1. filezilla server 다운로드
http://filezilla-project.org/download.php?type=server

2. 설치후에 server 설정
 User 설정 에서 사용자를 등록하고, Shared Folder 를 설정한다.(자세한 설명은 생략)
  Setting 에서 General settings 에서 기본 포트 21 대신에 다른 포트를 지정해준다.
  보통 ISP 에서 기본 FTP 포트를 막아놓는다.
  예를 들어 2221 포트등을 지정한다. 이 포트는 나중에 공유기 세팅에서 포트포워딩 해줄 것이다.

Passive mode settings 부분에서 Retrieve external IP address from  부분을 체크해준다.(Default 로 해도 되긴하는데 특정 client 에서 접속이 되지만, ftp data port 접속이 안되는 경우가 있다.)
포트범위도 지정해준다. (이 포트 범위를 공유기에서 설정해 줄 것이다.)

여기까지하면 FTP 서버 설정은 끝났다. 로컬에서 접속해보면 이상없이 접속이 되어야 한다. 접속이 안되면 접속port 확인, User 설정, 공유폴더 설정 등을 다시 확인한다.

3. 방화벽 설정 해제.
 윈도우XP SP2 이상에서는 방화벽이 작동한다. 방화벽에서 FTP 접속을 할 수 있도록 FileZilla Server 를 등록해준다.
  제어판 -> Windows 방화벽 -> 예외  항목에서
프로그램 추가 로 FileZilla Server 폴더로 찾아들어가서 FileZilla Server.exe 를 직접등록해준다.
기본으로 나와 있는 FileZilla Server Interface 라는 것을 선택하면 안된다.

여기까지 하면 공유기 내부의 다른PC 에서 접속할 수 있다. 접속이 안된다면 방화벽 설정을 다시 확인한다.

4. 외부 접속 가능하도록 공유기의 포트포워딩 설정.
 공유기관리 접속을 한다. (보통 192.168.0.1 이지만, 공유기 마다 다를수 있으니 매뉴얼참조)

FTP 서버를 설치한 IP 주소와 설정에서 포트범위를 적고 포트포워드 설정을 추가한다. (프로토콜 부분을 tcp ,udp 모두 지정해주는 것이 좋을 듯 하다)
(공유기에 따라 범위지정이 안되고, 하나씩 추가해줘야 하는 경우도 있다.그런경우 범위를 좀 줄여서 설정한다. 20~25 정도)


여기까지 하면 외부접속이 가능해진다. 1,2,3 까지 다 접속이 되는데, 4번에서 안된다면 포트지정이 잘못된 것이다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
구글톡이 윈도우,맥,리눅스 를 모두 지원한다.
우분투에서 구글톡 플러그인을 설치할 수 있다.

1. gmail -> settings -> Chat 에서 두번째 항목
  Voice and video chat 항목을 보면 구글톡 플러그인을 다운받는다.
  직접링크 : http://www.google.com/chat/video?hl=ko 에서 다운받아 설치한다.
  리눅스(우분투)에서는 deb 파일을 다운받아 설치하면 된다.
  dpkg -i google-talkplugin_current_i386.deb
  설치하면 /opt/google/talkplugin 에 설치된다.

2. firefox 를 실행해서 도구 -> 부가기능 -> 플러그인 항목을 보면
  정상적으로 구글 플러그인 에 나와야 한다.

우분투 버전에 따라 다르겠지만, 쓰고 있는 ubuntu 10.04 에서는 정상적으로 나오지 않았다.

이유는 apparmor 때문이다.
/var/log/kern.log 나 message.log 등을 확인해보면
kernel: [77536.598461] type=1503 audit(1295939125.913:24):  operation="open" pid=4565 parent=4561 profile="/usr/lib/firefox-3.6.13/firefox-*bin" requested_mask="::r" denied_mask="::r" fsuid=1000 ouid=0 name="/opt/google/talkplugin/libnpgoogletalk.so"
이런 메세지를 볼 수 있다. 우분투의 보안강화를 위해 적용된 기술인데, 불편하지만 가급적 따라 주는것이 좋다고 본다.

3. /etc/apparmor.d/usr.bin.firefox  파일에 다음을 추가한다.
  # for google talk
  /opt/google/talkplugin/* mr,
  /opt/google/talkplugin/GoogleTalkPlugin Uxr,
  /opt/google/talkplugin/lib/* mr,
  /dev/ati/card0 rw,
  /proc/ati/major r,
   위 3줄은 플러그인을 사용할 수 있는 권한을 추가한 것이다. 그 밑의 ati 나오는 부분은 사운드카드를 사용하기 위한 것인데, 사용자의 보드에 따라 다른 값이 나올 수 있을 듯 하니 kern.log 에 나오는 메세지를 확인해서 추가해준다.

gmail -> settings -> chat 항목에서 비디오,사운드 등을 확인해본다.
실제 영상채팅을 테스트해보진 않았지만, 테스트시 화면과 사운드가 정상적으로 나오는 것 까지 확인했다.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

경고 : 이 방법은 정확한 해결책이 아닐 수 있다. 꼭 필요한 경우에만 적용하자.

roundcube 를 쓰면서 좀 불편한 점이 한글메일이 간혹 깨지는 경우였다.
깨지는 경우는 roundcube 가 이상있는 것이 아니라, 보내는 쪽에서 메일의 헤더에 charset 을 지정하지 않은 경우이다. 대부분 메일 규칙을 지키지 않는 아주 불량한 메일이라고 봐도 된다.

그래도 간혹 봐야 하는 경우가 생기니. 정부(관공서)메일에서도 심심찮게 발견된다.
간단하게나마 몇 부분(파일2개)을 수정해서 한글을 볼 수 있게 해보자.

1) config/main.inc.php ( 라인 수는 다를 수 있다. )
497    //$rcmail_config['default_charset'] = 'ISO-8859-1';
498    $rcmail_config['default_charset'] = 'EUC-KR';
기본 ISO-8859-1 으로 지정된 것을 EUC-KR 로 지정했다.(위처럼 주석처리하거나 바꿔준다)

2) program/include/rcube_imap.php
2369 라인 정도 ( _set_part_filename 함수 내 )
if( $part->charset == 'us-ascii' ) $part->charset = 'euc-kr';

 // decode filename
if (!empty($filename_mime)) {
    $part->filename = rcube_imap::decode_mime_string($filename_mime,
    $part->charset ? $part->charset : ($this->struct_charset ? $this->struct_charset :
    rc_detect_encoding($filename_mime, $this->default_charset)));
}
else if (!empty($filename_encoded)) {
    // decode filename according to RFC 2231, Section 4
    if (preg_match("/^([^']*)'[^']*'(.*)$/", $filename_encoded, $fmatches)) {
    $filename_charset = $fmatches[1];
    $filename_encoded = $fmatches[2];
    }
    $part->filename = rcube_charset_convert(urldecode($filename_encoded), $filename_charset);
}


2449 라인 정도.( &get_message_part 함수내 )
if ($body && $o_part->charset
    && preg_match('/^(text|message)$/', $o_part->ctype_primary)
) {
    if( $o_part->charset == 'us-ascii' ) $o_part->charset = 'euc-kr';
    $body = rcube_charset_convert($body, $o_part->charset);
}

imap 으로부터 charset이 지정되지 않으면 us-ascii 로 지정되는데, 이런 것들을 euc-kr 메일로 가정하는 것이다. roundcube 는 내부적으로 UTF-8 로 변환한다.
더 하부적으로 내려가서 바꿔줄수도 있을 듯 한데. 일단 여기까지.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
테이블 구조를 볼때.
보통
mysql> desc {table_name}
이런식이다.

이것도 좋은데.
이게 더 보기 편하다.
mysql> show create table {table_name}\G

http://dev.mysql.com/doc/refman/5.0/en/show-create-table.html
반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
지난번 roundcube 0.3 버전 을 설치했었는데, 그동안 버전업그레이드 되었다.

업그레이드 방법을 간단히 정리한다.

1. http://roundcube.net/download
여기서 새버전을 다운로드 한다.

2. 압축을 풀고. 다음 파일,디렉토리들을 복사한다
index.php
bin/
SQL/
installer/
plugins/
program/
skins/

3. 웹메일주소/installer/ 로 접속해서 3단계의 test config 메뉴를 클릭해 설정을 확인한다.
DB 스키마 가 변경되고, 변경된 설정값을 수정한다.
config/ 의 main.inc.php , db.inc.php

DB 스키마는 SQL/mysql.upgrade.sql 을 참조해서 변경한다.
자신의 버전을 확인하고, 그 버전 윗부분은 제거하고
mysql roundcube < mysql.upgrade.sql
등의 명령으로 변경된 DB 스키마를 적용한다.

다시 test config 를 해보면 모두 ok 인 것을 확인한다.


ps. 아직 버전이 0.5 이긴 해도 꽤 완성도가 높다.
 다만 한글관련해서 몇가지 오류가 발생하는 부분도 있다.
 그런 부분을 수정해서 정리해야 겠다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

팩스서버에서 모뎀을 설정하고.

팩스 수신,송신을 담당할 프로그램이 필요하다. 주로 쓰이는 것이 hylafax 이다.

# apt-get install hylafax-client hylafax-server

로 설치하면 된다. (아마도 수신만 한다면, hylafax-server 만 있어도 될 듯 하다)

이번에 새롭게 우분투 10.04 로 바꾸면서 팩스서버를 옮기는데.
hylafax 를 설치하고, 실행했는데, faxgetty 가 실행되지 않았다.

config.modem 또는 config.ttyS1 등 (모뎀 디바이스명)

이 설정되어 있어야 faxgetty 가 실행된다.

이런식으로

 1656 ?        Ss     0:00 /usr/sbin/faxq
 1660 ?        S      0:00 /usr/sbin/hfaxd -d -i 4559
 1704 ?        Ss     0:00 /usr/sbin/faxgetty -D modem

띄워져야 한다. (faxgetty 부분이 없으면 송,수신이 되지 않는다.)

나의 팩스서버는 /dev/modem 을 사용하기에  config.modem 파일로 설정하였다.

CountryCode:        82
AreaCode:       31
FAXNumber:      2225555
LongDistancePrefix: 1
InternationalPrefix:    011
DialStringRules:    etc/dialrules
ServerTracing:      1
SessionTracing:     11
RecvFileMode:       0600
LogFileMode:        0600
DeviceMode:     0600
RingsBeforeAnswer:  1
#SpeakerVolume:     off
# medium
SpeakerVolume:      Medium
GettyArgs:      "-h %l dx_%s"
LocalIdentifier:    "My Office"
TagLineFont:        etc/lutRS18.pcf
#TagLineFormat:     "From %%l|%c|Page %%P of %%T"
TagLineFormat:      "From %%l|Page %%P of %%T"
MaxRecvPages:       25
#

각 설정이 크게 영향을 주지는 않는 듯 하다.
직접 적어줘도 되고, faxsetup 으로 설정해도 되는듯하다(처음 설치후)

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
메일서버가 아닌 곳에서 메일을 보내는 경우.
메일을 거부당하는 경우가 있다.
 host mx3.naver.com[202.131.27.102] refused to talk to me: 421 Your ip is filtered by RBL (http://realip.naver.com/rbl/rblinfo.html)(IP:{메일보내는서버IP})(Caues:http://www.spamhaus.org/query/bl?ip={메일보내는서버IP})
이런식으로 거부당하기도 한다.

그래서 postfix 로 메일을 보낼때 메일서버를 relay 서버로 이용하는 것이다.
smtp auth 도 사용한다.(아웃룩등에 세팅과 비슷하다고 보면 된다)

/etc/postfix/main.cf
relayhost = {메일서버주소,도메인}:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
위와 같이 추가해준다.

/etc/postfix/sasl_passwd
의 내용은
{메일서버주소,도메인}:587    {계정이름}:{암호}
587 포트번호는 메일서버의 smtp 포트를 써주면 된다. (보통 25 , 587 은 submission)
계정이름은 경우에 따라 Full 메일주소를 써야한다.(qmail+vpopmail 의 경우등)

다음명령으로 sasl_passwd.db 파일을 만들어 준다.
# postmap /etc/postfix/sasl_passwd
위 명령을 하지 않으면  db 파일이 생성되지 않아. 다음과 같은 에러가 난다.
fatal: open database /etc/postfix/sasl_passwd.db: No such file or directory


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

먼저 Xming 을 설치한다.
http://sourceforge.net/projects/xming
윈도우7 까지 잘 지원한다.

설치시 putty 도 같이 설치하는게 편하다.


다 설치한 후 XLaunch 를 실행한다.
입맛에 맞게 선택한다.(타이틀바가 있는 창이 괜찮아 보임)

putty 를 사용해 원격지서버의 프로그램을 실행하는 개념이다.

바로 gnome-session 을 실행시킬 것이다.(로컬의 데스크탑 화면 처럼 보인다)
원격지 서버의 IP 주소 / 아이디 / 암호 를 입력한다.
(With compression 은 압축전송 관련 옵션같은데, 큰 차이를 모르겠다.)

Xming 옵션 없이 그냥하면 전체화면으로 떠서 사용하기 불편하다.
1024x768 처럼 원하는 해상도를 적어준다. (@1 포함 - 없으면 에러나는 듯함)
putty 옵션은 원격지 ssh 포트를 기본 22 번이 아닌 다른주소를 사용한다면 바꿔준다.

모두 마쳤다. Save configuration 으로 설정을 저장할 수 있다. config.xlaunch 을 클릭해서 바로 실행시키면 된다.


사용해본 느낌. 예전에 Xmanager 같은 것으로 해본 기억이 있는데, 그 때는 좀 복잡하게 했던 것 같은데, 그보다 Xming 이 비교적 쉽게 할 수 있다.
그런데, 일반 인터넷라인이라 그런가 느린 감이 있다. vnc 가 속도 하나는 짱이다.

결론 : 그냥 vnc 써야지. 어쩔수 없는 경우 Xming 으로.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
php 는 보통 APM 으로 웹프로그래밍에 주로 쓰인다.

그런데, 꼭 웹프로그래밍에만 쓴다는 것은 아니다. php 를 CLI (Command Line Interface) 로 써서 서버관리용으로 쓰기에도 편하다.
보통 shell 프로그래밍이라고도 하는데, perl , python 등도 주로 사용된다.

cron 으로 등록해놓고 사용하는데, ubuntu 에서는 주의할 부분이 있다.
centos 등 다른 배포판은 어떤지 모르겠다.(다를것이다)

우분투는 /etc/php5/apache2 , /etc/php5/cli  라는 다른 디렉토리에 php.ini 을 사용한다.
php.ini 을 수정해서 쓰고, CLI 모드로 사용하는 경우 cli/php.ini 도 수정해 준다.
그렇게 사용하지 않는 다면 프로그램내에 ini_set 함수를 써서 옵션을 변경해서 사용해도 된다.
ini_set("memory_limit", "32M");
이런식으로 사용한다.

php 를 cron 으로 등록해서 메일을 보내는 메일링시스템에 적용중이다.
그런데, 메일을 보낼때 첨부파일이 커지는 경우 memory_limit 에러가 난다.
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 17623691 bytes)
위와 같은 에러가 난다. 진한부분의 값에 맞게 memory_limit 값을 조정한다.


postfix 를 쓰는 경우
postfix/sendmail[26637]: fatal: root(0): message file too big
이런식의 에러가 날 수도 있다. postfix 는 기본으로 10M 이하로 제한하고 있는 듯 하다.
이것을 늘려주려면, /etc/postfix/main.cf 에 다음을 추가해준다.
message_size_limit = 20480000
대략 20M 정도를 잡아줬다.
기본값 "default: 10240000 bytes" 라고 한다.(byte 계산을 저렇게 하는게 아니었던 것 같은데?)

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
find 로 원하는 파일을 찾고
grep 으로 해당 파일의 원하는 단어를 찾습니다.

find . -type f -name "*.php" -exec grep -EH -n --color "str_|ereg" {} \;

-H 옵션은 해당 파일 이름을 보여주고
-n 은 찾은 단어의 라인번호를 보여줍니다.

확장자를 여러개 지정해서 사용하고 싶은 경우.

-name "*.php" -o -name "*.jsp" 처럼 -o 로 연결해 줍니다.( -or 를 생각하면 됨. 비슷한 예로 -a/-and 가 있음)



php 5.3.x 버전에서 deprecated 되는 함수들입니다.
http://php.net/manual/en/migration53.deprecated.php

자주쓰는 함수들이 있으면 대체 함수로 바꿔주세요.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
그동안 주로 8.04 LTS 를 써왔다. 얼마전부터 10.04 LTS 로 업그레이드 하고 있다.
그렇다보니, 설정이 바뀐것이 꽤 된다.
8.10,9.04,9.10 등 3단계를 뛰어 넘어서 언제 바뀌었는지는 정확하지 않다.
(https://wiki.ubuntu.com/LucidLynx/ReleaseNotes 여기를 참조)

1. /etc/inittab 이 어디로 갔지?
  inittab 에서 runlevel 설정을 하게 된다. 그런데 없어졌다. 어리둥절.

  부팅설정등이 init 이라는 디렉토리로 바뀌었다.
 /etc/init/rc-sysinit.conf 에서 기본런레벨을 설정한다.
env DEFAULT_RUNLEVE=2
라는 항목이다. (이놈은 9.04, 9.10 부터 바뀐것 같다)

2. 키보드, 모니터 를 빼면 부팅이 안되요.
http://ubuntuforums.org/showthread.php?t=1452600

grub 을 콘솔로 부팅하는 것이 좋다.
/etc/default/grub

GRUB_TERMINAL=console
GRUB_CMDLINE_LINUX="nomodeset"

gdm 은 모니터,키보드 kvm 체크를 하지 않는다.
http://ubuntuforums.org/showthread.php?t=1452600&page=3
echo options nouveau modeset=0 > /etc/modprobe.d/nouveau-kms.conf
xorg.conf 설정 변경( http://ubuntuforums.org/showthread.php?t=1297815)
Section "Device"
  Identifier "VNC Device"
  Driver "vesa"
EndSection

Section "Screen"
  Identifier "VNC Screen"
  Device "VNC Device"
  Monitor "VNC Monitor"
  SubSection "Display"
    Modes "1024x768"
  EndSubSection
EndSection

Section "Monitor"
  Identifier "VNC Monitor"
  HorizSync 30-70
  VertRefresh 50-75
EndSection

BIOS 도 손봐야 하나?
Halt On 이라는 옵션을 No errors 로 해도 별 차이가 없어 보인다.
[All , But keyboard]
[All errors]
[No errors]
키보드/모니터 어댑터를 연결한다.(하드웨어적 해결방법 - 이건 좀.)


3. gdm 은 자동으로 실행이 안되나?
  위 2번의 xorg.conf 설정을 바꿔서 해결한다. /etc/init/gdm 으로 설정이 바뀌었다.

4. fsck 검사가 민감해 졌나?
보통 /etc/fstab 에서 하드디스크를 마운트 시킨다.
마운트 옵션에서 파일시스템을 체크하도록 하는데, 이게 좀 민감해졌나?
계속 하드디스크에 에러가 있다면서 부팅이 멈춘다.

UUID=0685beb5-ac3f-4308-8cb1-bc1a70a05a42 /user  ext3 defaults 0 0
(정확한 원인을 아직 찾지 못했다.)
일단 뒤의 맨 숫자를 0 으로 해서 파일시스템을 체크하지 않도록 했다.(수동으로 해줘야 겠다)

5. php , ereg 함수는 사용하지 않아.
php 새 버전은 ereg 함수등 deprecate 된 함수들이 있다. 소스를 수정하는 것이 좋다.
그렇지만 임시적으로
/etc/php5/apache2/php.ini  에서
mbstring.func_overload = 4
로 임시조치한다.



ps. 사용하면서 이상한 부분을 클린설치한 시스템과 비교해 보면서 추가 작성할 예정이다.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

얼마전부터 우분투 10.04 LTS 버전으로 업그레이드 하고 있다.
데스크탑, 프린터/팩스 서버, 개발서버 등..

데스크탑쪽에서는 별 문제 없었다.

프린터/팩스 서버에서 좀 문제가 되는 부분이 있었다.
서버를 업그레이드하고, 프린트 테스트를 해보니. cups 로는 넘어갔는데, 프린트를 하지 못하는 것이었다.
혹시나 해서 /dev/lp0 를 보니, 디바이스가 만들어져 있지 않았다.
프린터를 구형 레이저를 쓰는데(패러렐 포트를 쓰는) 이 것이 제대로 잡히지 않은 것이다.

정상적으로는 이런식으로 나와야 한다.

# lpinfo -v
network beh
network socket
direct scsi
network lpd
network http
network ipp
direct parallel:/dev/lp0
serial serial:/dev/ttyS0?baud=115200
serial serial:/dev/ttyS1?baud=115200
network smb
direct hp:/par/HP_LaserJet_1100?device=/dev/parport0
direct hpfax

그런데, 문제가 생긴 부분은 위의 진한 부분이 제대로 나오지 않는 것이었다.

문제는 

# lsmod | grep par
parport_pc             25962  1
parport                32635  3 lp,ppdev,parport_pc

parport_pc 모듈이 올라오지 않는 문제였다. 10.04 의 버그인지는 모르겠지만, 기본적으로 로딩이 되지 않았다.
그래서  /etc/modules 에 parport_pc 를 한줄 추가해줬다.

재부팅해보면 정상적으로 로딩되는 것을 볼 수 있다.


팩스쪽도 자동으로 모듈이 올라오지 않았다.
http://blog.1day1.org/306 에서는 기본으로 드라이버가 있었던것 같은데, 이번에는 기본드라이버가 없었다.
http://linmodems.technion.ac.il/packages/ltmodem/kernel-2.6/
에서 ltmodem-20100102.tar.gz 의 최신버전으로 컴파일후 설치했다.
10.04 출시전인 1월경의 파일이라 안될지도 몰랐지만 시도했는데, 정상적으로 로딩이 되었다.

예전과는 모듈이 좀 달라진것 같다.( 예전에는 ltmodem , ltserial 이었다)

# lsmod | grep lt
ltmodem               554956  0
ungrab_serial           1075  1 ltmodem
v8250                   9643  3 ltmodem

일단 모듈이 올라오면 성공이다.
/dev/ttySV0  디바이스가 생겼을것이다.(예전과는 이름이 달라졌다. 예전은 ttySLTM0 )

hylafax , minicom 등에서 사용하기 위해 /dev/modem 을 심볼릭링크 시켜주는것이 좋다.
udev 로 자동 링크시켜주는 방법을 사용한다.

/etc/udev/rules.d 에 92-ltmodem.rules  이런식으로 파일을 만들어주고 내용에는

KERNEL=="ttySV[0-9]", NAME="%k", MODE="0660", GROUP="dialout", SYMLINK="modem"

처럼 넣어준다. KERNEL 다음에 == 을 넣어줘야 한다. ( = 가 두개이다. )
부팅해보면,

# ll /dev/modem
lrwxrwxrwx 1 root root 6 2010-09-28 18:17 /dev/modem -> ttySV0

이런식으로 자동으로 링크가 되어 있을 것이다.

ps. 참고로 팩스를 테스트 하는데, 인터넷팩스 제공업체에 가입해서 테스트를 했다.
 보통 가입시 포인트를 주어서 무료로 테스트 해볼 수 있었다.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
간만에 추석을 맞이하여(?) 업그레이드 했다. 기존은 8.04 LTS (주로 LTS 를 사용한다.)
ubuntu 10.04 LTS 버전이 나온지 꽤 되었는데 그동안 테스트를 미뤄왔다.(안정화 될때까지)

데스크탑으로 쓰고 있는 시스템을 업그레이드했다.

update-manage -d 로 하면 된다.

업그레이드 중에  zoneminder 때문에 에러가 생겨 삽질을 했다.(거의 다 깔린 상태였다)
(zoneminder 를 쓰신다면 삭제하고 업그레이드 하는 것이 좋을 듯 함)

재부팅하니, 예전 grub 화면이 나오고, 커널패닉이 발생하는 상황이었다.
즉, 마지막 단계에서 grub 을 업데이트 하지 못한 것이다.
일단 새 커널로 부팅을 해야 한다. grub 화면에서 c 를 눌러 grub 콘솔로 진입한다.
grub> 이런 화면이 나올 것이다.
grub> root (hd0,0)  
탭을 눌러주면 중간중간 뭘 입력할지 힌트를 준다
grub> kernel /boot/vmlinuz-2.6.32-24-generic root=/dev/sda1
역시 tab 으로 뭘 찾을지 선택한다. - sda 는 자신의 설정에 맞게 바꿔준다.
grub> initrd /boot/initrd.img-2.6.32-24-generic
각종 모듈이 들어 있는 이미지이다. 이 부분을 빼면 거의 커널패닉을 보게되니 추가해 준다.
grub> boot
그리고 부팅해주면, 새로 지정한 커널로 부팅이 된다.

부팅이 완료되면, grub-install , update-grub 등으로 grub 을 재설치 해준다.

대부분 기존설정이 따라오니, 크게 바꿔줄것은 없다.
다만, 내 경우에 vmware player 2.5.4 를 사용했었는데, 10.04 에서는 에러가 난다.(gcc 쪽의 문제인듯?)
vmware player  새버전을 설치하면 된다. 현재 버전은 3.1.1 버전이다.

그리고, compiz 상태에서 기본 vnc 는 성능이 좋지 못하다.(화면 갱신이 안된다)
그렇다고 compiz 를 끄기는 애매한 경우 x11vnc 를 설치해서 사용한다.

apt-get install x11vnc xinetd
로 설치해준다.
그리고, xinetd 는 x11vnc 를 자동실행시켜주기 위해 사용한다(취향에 따라 gdm 로그인시 자동실행시켜도 된다.)

/etc/xinetd.d/x11vnc 로 다음내용을 저장한다.
service x11vnc
{
   port = 5901
   type = UNLISTED
   socket_type = stream
   protocol = tcp
   wait = no
   user = root
   server = /usr/bin/x11vnc
   server_args = -inetd -o /var/log/x11vnc.log -display :0 -auth /var/lib/gdm/:0.Xauth -many -bg -noxdamage -rfbauth /etc/x11vnc.passwd
   disable = no
}
여기서 조심할 항목은 /etc/x11vnc.passwd 의 암호를 지정하는 것이다.
x11vnc -storepasswd /etc/x11vnc.passwd
로 하면 암호를 물어보고, 해당 파일로 저장이 된다.

server_args 부분에서  -noxdamage 가 있는데,  compiz 상에서 화면갱신등의 성능이 좋지 않는데, 저 옵션을 주면 좋아진다.

일단 이 정도만으로 기존 쓰던 부분에서 크게 지장되는 부분은 없다.
좀더 알아볼 부분은 virtualbox , 폰트 등을 알아볼 예정.(나눔폰트로 바꿔볼까?)
그냥 느낌인지 모르겠지만, 좀 빨라진 느낌이다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
원격 파일 전송하는 방법중 scp 와 rsync 를 주로 사용한다.
rsync 도 -e ssh 옵션을 붙여서 쓰니 둘의 차이는 별로 없다.

그런데, scp 의 경우 문제가 있다. 바로 symbolic link 의 처리.

scp -pr {local} {remote}
를 하면  local 의 파일을 원격으로 복사할 수 있다. 서브디렉토리포함, 파일시간 보존등.
그런데, 파일중 symbolic link 가 있다면 링크된 원본파일이 전송된다. symlink 가 유지 되지 않는다.

그런경우 rsync 를 쓴다.

rsync -avzu -e ssh  {local} {remote}
이렇게 하면 된다.
둘중 편한거 쓰면 된다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
현재 모토로이를 우분투와 윈도우7 에 세팅해서 개발중에 있다.
윈도우7 은 모토로이 드라이버가 있어서 설치하면 된다.

우분투는 따로 모토로라에서 드라이버를 제공하지 않는다.
우분투의 usb 장치를 인식시키는 방법을 사용한다. 이때 udev 를 이용한다.
테스트는 우분투 8.04 hardy 버전과 9.10 karmic 버전에서 테스트했다.

먼저 안드로이드 SDK 를 설치한다.

$ adb devices

를 해보면.. (sdk 의 tools 디렉토리에  adb 명령이 있다.)

List of devices attached
???????????? no permissions


처럼 나온다.
디바이스가 인식되지 않아서 그렇다. udev 를 이용해 인식시켜보자.
(정확히 말하면 권한이 없다고 해야 겠다. lsusb 로는 이미 인식은 되어 있다)

모토로이를 연결하고 lsusb 명령을 내려보면.
$ lsusb

Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 005: ID 22b8:41db Motorola PCS
Bus 001 Device 002: ID 148f:2573 Ralink Technology, Corp. RT2501USB Wireless Adapter
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 003: ID 05af:0802 Jing-Mold Enterprise Co., Ltd
Bus 004 Device 002: ID 045e:0040 Microsoft Corp. Wheel Mouse Optical
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub



이런식으로 나온다. 모토로이가 어떤 것인지 딱 감이 올 것이다.

Bus 001 Device 005: ID 22b8:41db Motorola PCS


adb 에서 인식할 수 있도록, 장치를 등록한다.(진한 부분이 핵심이다)

관리자 권한으로 udev rules 를 만들어 준다.

# vi /etc/udev/rules.d/99-android.rules


위와 같이 파일을 만들어서 내용은 다음과 같이 넣어준다.(vi 등의 편집기)

SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", SYMLINK+="android_adb", MODE="0666"


한줄로 위 내용을 적어주고, 저장한다.

$ ls /etc/udev/rules.d/ -al
합계 24
drwxr-xr-x 2 root root 4096 2010-02-14 01:54 .
drwxr-xr-x 3 root root 4096 2009-12-06 02:15 ..
-rw-r--r-- 1 root root 1405 2009-12-21 20:25 70-persistent-cd.rules
-rw-r--r-- 1 root root  787 2009-12-11 00:51 70-persistent-net.rules
-rw-r--r-- 1 root root   91 2010-02-14 01:54 99-android.rules
-rw-r--r-- 1 root root 1157 2009-10-16 15:01 README


위처럼 rules 파일을 만들어 주면 된다.

udev 를 다시 실행시켜주면 정상적으로 사용할 수 있게 된다.(관리자권한 필요)


/etc/init.d/udev restart
또는
restart udev


이때 모토로이의 usb 저장소(외장형 SD)도 같이 인식되는 것을 볼 수 있다.


adb 명령을 다시 해보면.(처음과 다른것을 볼 수 있다)

$ adb devices
List of devices attached
04031826748580332373    device


위 처럼 인식된 장치가 보이게 된다.(보이는 숫자는 다를 것이다.)

이클립스에서 빌드명령을 내려보면, 타겟이 모토로이로 지정되어 뜨게 된다.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
2010년에는 안드로이드폰이 많이 나올것이다. 그러나 국내에서는 과연 나올까?
나온다고 본다. 다만 그 시기가 언제일지는 모르겠다.
빠르면 2월정도, 상반기에는 꼭 출시되었으면 한다.(구글코리아야! 도와줘!!  전파인증)

안드로이드 개발환경을 구축하기로 했다. 플랫폼은 우분투.
조합은 이렇다.
우분투 9.10 + eclipse 3.5 (galileo) + android eclair (2.01)
가능한 쉽고, 빠른 개발환경 구축을 목표로 한다.
핵심은 어플개발이기 때문에 개발환경에서 삽질은 최소로 줄여야 겠지.

일단 eclipe 까지는 한방에(우분투는 먼저 깔려있어야죠.)
apt-get install eclipse eclipse-jdt
를 하면 관련 패키지를 알아서 설치해준다.


그다음은 developer.android.com 에서 관련 정보를 찾는다.

기본 Quick Start 문서 : http://developer.android.com/sdk/index.html

1. Android SDK 설치.
  링크를 찾아 설치 : linux 를 찾아서 설치해야 겠죠.
  실행할 수 있도록 패스를 설정한다.(PATH=andriod-sdk/tools:$PATH)

2. eclipse 플러그인 설치 (ADT)

 http://developer.android.com/sdk/eclipse-adt.html
 이클립스를 잘 안다면  이 주소만 알려주면 알아서 깔겠죠.
https://dl-ssl.google.com/android/eclipse/
install/update 로 설치하면 됨.

이부분은 eclipse / eclipse-pde 패키지를 설치하면 되는 듯.

3. android SDK 컴포넌트 추가
http://developer.android.com/sdk/adding-components.html
SDK 를 설치하고 AVD Manager 를 실행한다.
왼쪽메뉴의 Avaliable Packages 를 선택하고, 필요한 패키지(컴포넌트)를 설치한다.
혹시 에러가 난다면.

난 2.0 버전 이상의 패키지를 설치했다.(목표는 eclair 이기 때문에...)

4. 안녕! 빵꾸똥꾸야!
자! 여기까지는 준비운동은 끝났다. 본격적인 어플개발을 시작.
제대로 되나. 확인할 겸.
http://developer.android.com/resources/tutorials/hello-world.html
안녕! 세상아를 찍어봐야지.

이클립스에서 android 프로젝트를 생성한다.
이때 이런 메세지가 나올 것이다.
The location of the Android SDK has not been setup. Please go to Preferences > Android and set it up
처음 실행시 기본 SDK 의 위치를 찾지 못하는 것이다. 메뉴의 Window > Preference > Android 탭으로 가서
설치한 SDK 위치를 지정해준다.  (andriod-sdk 까지 지정해주면 된다. 풀패스로.)

그리고, 소스를 알맞게 수정을 하고, Run 해주면 나온다.
이렇게! (에뮬실행이 오래걸리는구나! vbox 에서 실행해서 그런가?)

좀더 개발환경에 적응을 하고, 어플을 만들어 봐야 겠다.
뭘 만들지...

아이폰어플에 비해 참 쉽다. 물론 맥북사면 비슷하려나? ^^


[참조]
# avd 디바이스 설정.(Android Virtual Devices)
android list targets
android 타겟지정 avd 생성

 android create avd -n my_avd -t 1

 
반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
우분투 9.10 을 설치하고, 파이어폭스를 띄우면 자동으로 플래시플레이어 플러그인을 설치한다.
그런데, 이상하게 플레이는 되는데, 컨트롤을 할 수 없다.
그래서 혹시나 해서 64bit 버전으로 수동설치해봤다.


지난번. 우분투 9.04 의 방법과 크게 다르지않다. ( http://blog.1day1.org/262 )

다운로드 주소가 바뀐것 같다.
http://labs.adobe.com/technologies/flashplayer10/64bit.html

다운로드주소
http://labs.adobe.com/downloads/flashplayer10_64bit.html

압축풀고. 해당위치에 복사.


flashplugin-installer 라는 패키지로 설치한 듯 하다.
이상하게 동작하는 것 같아. 그냥 예전방식으로 처리했다.
위 방법도 상관없는 듯. (방법은 알아서 )


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
virtualbox 를 사용해서 개발환경을 만든다. 매우 유용하다.
한 시스템에 서로다른 개발환경을 구축한다면 필수라고 볼 수 있다.
vmware 도 자주 쓰는데, 가벼운(?) virtualbox 를 주로 사용한다.

새로 시스템을 설치하고, virtualbox 를 세팅했다.
예전 시스템의 가상이미지를 그대로 가져오면 되니 편하다.

centos 를 부팅했다. 그런데.
memory for crash kernel (0x0 to 0x0) notwithin permissible range
이런메세지가 나오면서 부팅이 되지 않고 멈춰버린다.(우분투vm 은 상관없었다.)

다음설정을 체크해주면 정상부팅된다.
"IP APIC 사용하기"  를 체크해준다.
그리고 다시 부팅해보면, 위의 메세지가 나오긴 하지만, 부팅은 정상적으로 된다.
(그러면 저 메세지는 뭐지? 예전에도 있었나?)


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
윈도우용 ssh 클라이언트로 putty 를 사용한다. 가볍고 편하다.

윈도우7 을 새 시스템에 재설치한 후 기존설정이 사라진 상태이다.
기존 시스템에서 관련 설정이 어디에 저장되어 있나?

regedit 로 찾아봤다.

저장된 위치는 다음과 같다.

[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions]


해당 값을 내보내기로 저장한다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
Centos 의 기본패키지에 proftpd 가 빠져있다.
proftpd + mysql 설정을 위해 rpmforge 를 저장소로 추가한다.

# rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
# yum install proftpd proftpd-mysql
여기까지 설치 끝.


가상계정 설정은 다음을 참조 : http://blog.1day1.org/363


# 추가
Centos 에서 설정후에 이상한 부분이 있었다.
가상계정으로 로그인이 되지 않는 것이다.
AuthPAMConfig                   proftpd
AuthOrder                      mod_auth_pam.c* mod_auth_unix.c
위와 같이 설정되어 있는데, AuthOrder 를 주석처리했다.( # AuthOrder  ... ...)
위 설정은 가상계정을 확인하지 않고 그냥 넘어간다.

AuthPAMConfig 부분은 설정되어 있어야 정상작동한다.
우분투쪽의 설정에는 없는데, 정확한 이유는 확인해야 겠다.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
그냥 이걸로 하면 끝.
# rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

# yum install ffmpeg

=== 이전 내용 =====================================
Centos 의 기본패키지에 ffmpeg 가 포함되어 있지 않다.
써드파티 저장소를 이용해야 한다.

/etc/yum.repos.d 에  임의의 파일을 만든다.
# vi /etc/yum.repos.d/CentOS-DAG.repo
내용은 다음을 넣는다.
[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1
ffmpeg 패키지를 설치한다.
# yum install ffmpeg
SDL , lame 등의 패키지가 같이 설치된다.
  SDL.i386 0:1.2.10-8.el5                  a52dec.i386 0:0.7.4-8.el5.rf      amrnb.i386 0:7.0.0.2-1.el5.rf
  amrwb.i386 0:7.0.0.3-1.el5.rf            cppunit.i386 0:1.12.0-3.el5.rf    dirac.i386 0:1.0.2-1.el5.rf
  faac.i386 0:1.26-1.el5.rf                faad2.i386 0:2.7-1.el5.rf         ffmpeg-libpostproc.i386 0:0.5-3.el5.rf
  giflib.i386 0:4.1.3-7.1.el5_3.1          imlib2.i386 0:1.4.0-1.el5.rf      lame.i386 0:3.98.2-1.el5.rf
  libid3tag.i386 0:0.15.1b-3.el5.rf        libogg.i386 2:1.1.3-3.el5         libtheora.i386 0:1.0alpha7-1
  x264.i386 0:0.0.0-0.4.20090708.el5.rf



ffmpeg 를 사용하는 용도는 동영상사이트까지는 아니고, 사용자가 올리는 flv 파일에서 이미지를 추출하는 간단한 용도이다. 그래서 위 패키지(ffmpeg) 설치만으로 충분하다.

그외에 avi 를 flv 로 변환한다거나 음성을 추출한다거나 하는 경우 추가로 필요한 패키지를 설치해야 할 것이다.( 이곳을 참조한다 : http://www.mysql-apache-php.com/ffmpeg-install.htm )


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

예전 qmail 을 설정할 때 가상계정으로 mysql 을 사용하였다.
vpopmail 에서 계정확인을 mysql 을 이용하는 방법이었다.

proftpd 도 비슷하게 가상계정으로 사용자 인증을 할 수 있다.
가상계정의 이점은 콘솔상에서 유저를 생성하지 않고, 웹에서 처리할 수 있다.
웹프로그램으로 DB 에 계정정보를 넣으면 된다.

어디를 설정해 줘야 하나?

/etc/proftpd/proftpd.conf 를 수정(추가)한다.

Include /etc/proftpd/sql.conf

그리고 sql.conf 를 생성한다.(이미있는 경우 수정)

<IfModule mod_sql.c>
SQLBackend      mysql

SQLAuthenticate users* groups*

SQLAuthTypes Crypt Plaintext

SQLConnectInfo {디비명}@localhost {유저명} {암호}

SQLUserInfo ftpusers userid passwd uid gid homedir shell
SQLGroupInfo ftpgroups groupname gid members

</IfModule>

그리고, 위의 디비명, 유저명, 암호에 맞게 가상계정정보를 넣을 디비를 설정한다.(자세한 사항 생략)

계정정보를 넣는 테이블 구조는 어떻게 되나?

마지막으로 계정정보를 넣을 테이블을 만들어준다.

CREATE TABLE ftpgroups (
        groupname varchar(16) NOT NULL default '',
        gid smallint(6) NOT NULL default '2001',
        members varchar(16) NOT NULL default '',
        KEY groupname (groupname)
) TYPE=MyISAM COMMENT='ProFTP group table';

CREATE TABLE ftpusers (
        id int(10) unsigned NOT NULL auto_increment,
        userid varchar(32) NOT NULL default '',
        passwd varchar(32) NOT NULL default '',
        uid smallint(6) NOT NULL default '2001',
        gid smallint(6) NOT NULL default '2001',
        homedir varchar(255) NOT NULL default '',
        shell varchar(16) NOT NULL default '/bin/false',
        count int(11) NOT NULL default '0',
        accessed datetime NOT NULL default '0000-00-00 00:00:00',
        modified datetime NOT NULL default '0000-00-00 00:00:00',
        PRIMARY KEY (id),
        UNIQUE KEY userid (userid)
) TYPE=MyISAM COMMENT='ProFTP user table';

가상계정용 공통 유저/그룹을 생성한다.

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser

uid/gid 는 적절하게 바꿔서 넣어줘도 된다.
shell 의 경우  /bin/false 로 했는데, Centos 의 경우는 디폴트인 /sbin/nologin 으로 해주면 된다.

테스트로 계정을 만들고 접속을 시도해 본다.

INSERT INTO `ftpgroups` (`groupname`, `gid`, `members`) VALUES ('ftpgroup', 2001, 'ftpuser');

INSERT INTO `ftpusers` (`id`, `userid`, `passwd`, `homedir`, `count`, `accessed`, `modified`) VALUES (1, 'testuser', 'testpass', '/var/FTPuser/testuser', 0, '', '');

파일질라 등으로 테스트 해본다.
접속해서 파일을 업로드 해보면, 설정한 uid/gid 로 파일이 생성된다.
웹상의 파일로 연동을 시키기 위해 아파치계정인  apache 나 www-data 등으로 uid/gid 를 설정해 주어도 될 것이다.

[추가]
기본 ftpuser / ftpgroup 은 고정인 것 같다. 아파치계정과 연동을 시킬려고 시도 해봤는데, 안되네.
proftpd 쪽에서 바꾸지 않고, 아파치쪽에서 바꿔야 겠다.(퍼미션 조정으로..)

[추가2] ubuntu 에서 sql / mysql mod 적용

apt-get install proftpd-mod-mysql

/etc/proftpd/modules.conf 에서 모듈 활성화

LoadModule mod_sql.c
LoadModule mod_sql_mysql.c

 

[추가3] Invalid shell: '/bin/false'

로그인시 위와 비슷한 메시지가 나오는 경우 /etc/shells 에 등록해준다.

# cat /etc/shells 
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/bin/false

 

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
바코드 출력할 일이 있어서 보고 있는데.
바코드가 한두개가 아니구나!
일반적으로 대여점. 상점등에서는 어떤 종류를 쓰지?
아무거나 해도 상관없을까?
일단 Code 93 Standard ( code 39 / standard,extended ) 로 하긴 했는데, 테스트 해봐야 겠다.
바코드 리더기는 저 종류를 다 인식하겠지?


# 종류가 나뉘는 것은 허용되는 문자, 갯수 등의 차이인 것 같다.
http://www.jlabel.kr/board/board.php?board=Customer&page=2&command=body&no=14
http://www.qtec.co.kr/customer/customer_01_020.htm
http://barkorea.co.kr/data_barko_03.php

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
백업할때 rsync 를 많이 쓴다.

보통 이런식이다.
rsync -avzrt -e 'ssh -p 2222 '  {SRC} {DEST}

그런데, 서버측과 백업측의  uid , gid 가 동일 하지 않으면 백업측의 전송된 파일이 바뀌는 경우가 있다.
즉, 서버측의 mysql 의 uid , gid 가 각각 27  이고, 백업측은 55 라고 하면.
rsync 로 백업이 되면서 27 에서 55 로 자동 변환되어 백업된다.

서버측의 uid/gid 를 그대로 가져오고 싶다면 다음과 같은 옵션을 추가해 준다.
rsync -avzrt --numeric-ids -e 'ssh -p 2222 '  {SRC} {DEST}
그러면 uid,gid 가 유지된채 백업이 된다.

uid, gid 에 엄격한  mysql , named 등을 rsync 로 백업할 때 주의한다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
centos 에서 아파치모듈을 컴파일 하는데, 다음과 같은 에러가 난다.
cannot open /httpd/build/config_vars.mk: 그런 파일이나 디렉토리가 없음 at /usr/sbin/apxs line 201.
apxs 는 perl 로 작성되어 있다. 코드를 보다보니.
pkg-config --variable=libdir apr-1
이 부분에서 아무 리턴값이 없는 것이다. (정상은 /usr/lib64 로 나와야 한다)

yum list apr*
으로 확인해보니,  apr-devel  이 i386 버전으로 설치되어 있고, x64 용으로는 설치가 되어 있지 않았다.
그래서
yum install apr-devel
으로 x64 버전도 설치했다.

apxs -ic mod_url.c
apxs -ic mod_bw.c
모두 정상적으로 컴파일 된다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
rsync + ssh 에 대한 팁은 많다.
그런데, ssh 를 root 로 로그인을 허용해야 하는 방법의 설명이 많다. /etc/ssh/sshd_config 에서
PermitRootLogin yes
로 해야 한다.  그러나 왠지 root 로 허용하는 것은 좀 꺼려지게 된다.
(ssh brute force 공격이 일상화 되어 있기 때문에 더 염려된다.)


root 로 접근은 못하게 하면서,  rsync+ssh 를 쓸 수 없을까?

물론 있다.
PermitRootLogin forced-commands-only
라는 옵션이 있다.

.ssh / authorized_keys  의 public key 에 적어준 명령만 허용하는 옵션이다.
from="192.168.0.1",command="/root/bin/validate-rsync" ssh-dss IEUHFKSJHDOG ....
위 밑줄 친 부분이 추가된 것이다. 딱 보면 감이 올것이다.

from 부분
의 IP 는 허용할 IP주소이다. 이 주소가 제대로 들어가지 않으면..     이런 에러로그를 보게 된다. 허용한 IP가 아니라는 메세지이다.
sshd[21670]: Authentication tried for root with correct key but not from a permitted host (host=backup, ip=192.168.0.1).
from 부분에 IP 를 직접 적어주거나,  /etc/hosts  에 등록해서  host 값을 적어줘도 된다.
from="backup",command="...."
/etc/hosts 에는 다음과 같이 적어준다.
192.168.0.1  backup
도메인을 직접적어주는것은 안되는 듯 하다.


command 부분에 적어준 스크립트를 통해 실행하게 된다.
validate-rsync (이름은 아무거나 상관없음) 의 내용은 다음과 같다.
#!/bin/sh
case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Rejected"
;;
*\(*)
echo "Rejected"
;;
*\{*)
echo "Rejected"
;;
*\;*)
echo "Rejected"
;;
*\<*)
echo "Rejected"
;;
*\`*)
echo "Rejected"
;;
rsync\ --server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "Rejected"
;;
esac
파일을 만들고, 실행권한을 준다.




참조문서
http://www.linux.com/archive/feature/113847
http://www.debianhelp.co.uk/rsync.htm
http://troy.jdmz.net/rsync/index.html
https://people.chem.umass.edu/wiki/index.php?title=RSYNC_and_SSH_With_Automated_Login
http://www.iwlearn.net/websitetoolkit/help/how-to/using-rsync-and-ssh

http://zakorea.tistory.com/24
http://bluetech.tistory.com/2

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
Centos 에서 삼바를 설정하는데, 기존에 쓰는 우분투 설정과 같게 했는데도 다음과 같은 에러가 난다.
smbd[9726]: [2009/10/10 08:33:24, 0] smbd/service.c:make_connection_snum(1003)
smbd[9726]:   '/user/data' does not exist or permission denied when connecting to [httpd] Error was 허가 거부됨
삼바(/etc/samba/smb.conf) 설정을 이것저것 바꿔보는데도 별다른 진척이 없었다.

처음에는  접속이 안되길래 확인해 보니 /etc/sysconfig/iptables 의 방화벽이 막혀 있었다.
(해당포트를 열거나 방화벽 설정을 해제하면 되겠다. 개발서버용이라 방화벽을 껐다.)

혹시나 해서 Selinux 를 살펴봤다. Selinux 를 끄고 다시 해보니, 정상적이었다.
/etc/selinux/config 의
SELINUX=enforcing 으로 된것을  SELINUX=disabled  로 바꿔줬다.

SELINUX 를 제대로 활용하는 방법은 없나?
찾아보면 Centos 의 제일 먼저 나오는 팁이 Selinux 를 끄세요 라니...


# 다음 자료를 보고 적용해봐야 겠다.
http://wiki.centos.org/HowTos/SELinux
http://www.linuxtopia.org/online_books/centos_linux_guides/centos_selinux_guide/index.html
http://centos.pe.kr/owiki/index.php?url=centos&no=11


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,