어제 네이버에서 NHN Deview 행사를 했다. 개방,개발자,오픈소스 등에 대한 내용을 다루었다. 참석은 하지 못했지만, 생중계로 나마 살짝 엿볼 수 있었다.
네이버는 다른 곳과 비교해서 앞서나가는 모양이다. 특히나 먼저 시작(?)했다고 볼 수 있는 다음의 느린 혹은 잠행 과는 전혀 반대상황이다. 다음도 개발자행사를 여러가지 하고 있다. 네이버는 좀더 범위를 넓혔다고 해야하나? 개발자와 오픈소스를 사용하는 사용자들.
사실 이런 개발자 행사자체가 일반인을 대상으로하는 행사와 비교하면 미미하기 때문에 도토리 키재기 처럼 보일 수 있다. 네이버가 앞으로 어떤 복안을 가지고 진행시키는지 모르겠지만. 최근의 미투데이,오픈소스 등을 살펴보면 조만간 SNS 에 대한 자리를 잡기위한 조치를 취할 듯 하다. 그 부분에 대해서는 네이트,싸이월드를 의식하고 있을듯 하다.
네이트,싸이월드 오픈정책에서 최후의 보루라고 할 수 있는 인증API 는 공개하지 않았다. 그에 대해 네이버가 한발 앞서 가려면 그 부분일 듯 한데, 쉽지않은 결정일 것이다. 어쩌면 서로 눈치를 보고 있을지 모르겠다. 다음,네이버,네이트...
다음은 개인적으로 참 아쉽다. 왠지 그동안의 노력이 별 성과를 내고 있지 못하고 있는 것처럼 보여진다. 좀더 눈에 띄는 결과를 내고, 공개를 하면 좋겠는데, 그 부분이 아쉽다. 좀 늦긴했지만, http://dna.daum.net/archives/585 이런식의 움직임이 많아졌으면 좋겠다. 다음도 내부의 노하우가 많을텐데, 그런 부분을 공개하면 참 좋을 것 같다. 다음 한메일익스프레스의 UI 도 마음에 들고, 공개하면 다음 짱! 다음 DevDay 행사도 계속이어지는 것이 좋긴 하지만, 대박서비스가 DevDay 를 통해서 나올 수 있도록 지원하면 좋을 듯 싶다.
그리고, 야후. 국내에서의 야후란, 사실 듣보잡의 불명예를 가지는 처지가 되버렸다. 그동안 신경도 쓰지 않았다는 것이 사실이다. 그런데, 야후개발자네트워크 를 보고, 국내 행사도 참석도 해보니. 생각보다 방대한 개발자 지원이 있었다. 다만 국내가 아니라 해외에서 활발하게 진행되고 있다. 국내 지원은 조금이나마 http://ydnkrblog.com 등을 통해 진행되고 있다. 아직은 야후코리아 차원의 지원이라기보다 직원개인의 열정에 의해서 움직이는 것 같다.
포털의 이런 움직임은 개발자 입장에서는 환영일 것이다. 최소한 나는 대 환영. 각 포털의 움직임은 서로 다르지만, 결과적으로 좋은 결과로 이어질 것이라고 본다. 대박서비스 사례같은 것이 나오면 그야말로 금상첨화. 개발자들을 위해 물적,심적 지원을 해줄 자원이 있는 곳은 사실 포털밖에 없다고 본다.
우분투(리눅스) 시스템을 운영중에 있다. 얼마전 하드디스크 에러가 생겨 시스템을 이전하려 한다. 이런 하드에러도 있고, 하드디스크를 큰 용량으로 바꾸려고 할 경우도 있다.
rsync, tar 등을 이용하는 방법도 있지만, 간단하게 cp -a 를 이용하려고 한다. /var , /usr 등이 별도의 파티션으로 나뉘어져 있는 경우 해당 디렉토리를 뺀 / (루트) 를 복사해야 한다. 별도파티션으로 나뉘어 있던 디렉토리는 나중에 옮겨도 된다.
일단 새 하드디스크를 연결한다. 기존 시스템 하드는 /dev/sda 이고, 연결한 새 하드디스크는 /dev/sdb 라고 가정한다. / 는 sda1 , /usr 는 sda2 , /var 는 sda3 이라고 한다면, 우선 sda1 을 먼저 옮겨도 되고 다 같이 옮겨도 된다.
sda1 은 sdb1 으로 옮길것이다. 데이터를 이동한다. 현재 시스템이 가동한 상태에서 옮겨도 되긴 하지만, 고려할 사항이 많다. dev , proc 등 시스템 관련 디렉토리를 주의해야 한다.
별도로 마운트 하고 옮긴다.
mount /dev/sda1 /mnt/sda1 mount /dev/sdb1 /mnt/sdb1
이런식으로 마운트 시키고 데이터를 옮긴다.
cp -a /mnt/sda1/* /mnt/sdb1/
이렇게 하면 따로 dev , proc , var/run , var/lock 등을 신경쓰지 않아도 된다.
새하드디스크로 부팅하려면 어떤값을 바꿔야 하나? fstab 을 새하드디스크의 설정값으로 변경한다.
이때 복사한 fstab 의 값을 변경한다. 즉 /mnt/sdb1/etc/fstab 을 바꿔준다. fstab 은 UUID 로 설정해 놓는 것이 편하다.
재부팅후에 BIOS 설정에서 새 하드디스크로 부팅순서를 바꿔서 부팅해 본다. 정상적으로 부팅되는지 확인해본다. 이상이 있으면 기존의 하드로 다시 바꾸면 된다. 하드디스크 위치나 바이오스 설정 등의 차이로 인해 부팅에 이상이 있는 경우가 있으니 설정을 다르게 바꿔가면서 테스트 해본다.
내 경우는 보드의 SATA (sda) , SCSI 컨트롤러, SATA 컨트롤러(sdb) 이렇게 되어 있었다. 바이오스에서 각각의 부팅순서를 바꾸지 못하고, PCI 인터페이스인 SCSI , SATA 가 묶여서 바뀌게 되었다. 그래서 PCI 인터페이스의 맨 처음으로 바꿔야 했다. SATA 에서는 primary 로 변경하고, SCSI 는 보드에서 SATA 를 보드의 안쪽으로 바꿔서 SATA -> SCSI 컨트롤러 순으로 변경하고 서야 제대로 부팅할 수 있었다.
YDN 키 발급을 위해 참 여러가지 테스트를 하게되었다. 발단은 http://blog.1day1.org/333 여기서부터 시작인데, 최소한 상황을 재현(?)할 수 있게 되었다. 정확한 원인이 내쪽에서 찾을 수는 없을 것 같고, 최종적으로 YDN 쪽에서 답을 줘야 할 듯 하다. 아무튼 상황재현과 그 간의 시도를 리포트 한다.
일단 이전 상황은 http://t.1day1.org/post/177433640 여기까지 진행했었다. 즉, 도메인을 체크할 때, 제대로 데이터를 가져가는 것을 확인할 수 있었다. 그런데, 왜 안될까? 뭔가 파일 체크 이외에 더 확인하는 작업이 있다는 것인데... 여기서 부터 상상의 나래(?)를 펼치며 테스트하게 된다.
몇가지 가능성을 따져봤다. 1. 웹서버의 문제. 2. 서버 자체의 문제 혹은 OS(배포판) 문제. 3. 그외의 알 수 없는 문제.
1,2 는 여러서버를 바꿔가면서 테스트 해보기로 했다. apache2 , lighttpd , nginx 를 바꿔가면서 테스트 했다. 서버는 웹호스팅, 서버호스팅 등 계정을 바꿔가며 테스트 해보았다.
제일먼저 웹서버를 변경하면서 테스트 해봤다.
웹서버 테스트. 각각의 헤더를 살펴보면서 체크를 했다. (동일서버에서 웹서버를 변경하여 테스트 했다.)
HTTP request sent, awaiting response... HTTP/1.1 200 OK Date: Mon, 07 Sep 2009 15:49:38 GMT Server: Apache P3P: CP='NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE' X-Powered-By: PHP/5.2.5 Connection: close Content-Type: text/html Length: unspecified [text/html] Saving to: `JwiHkHpJfCXx1KeHgs7FfA--.html'
Centos 계정이외에 다른 계정은 모조리 실패하는 것이었다. 아! OS 의 문제로 결론을 내려야 하나? 뭔가 간과하는것이 있지 않을까? 뭔가 놓치고 있는 것이 있을거야! 곰곰히 생각한다.
어! 혹시!
안되는 계정은 모두 1day1.org 의 서브도메인 이었다. 되는 계정인 Centos 는 OOO.com 과 YYY.kr 의 도메인을 사용했었다. 설마 org 도메인이 안되는 것일까? 그래서 교차실험을 했다.
안되는 계정에 OOO.com 의 서브도메인으로 되는 계정에는 ooo.1day1.org 의 서브도메인으로 테스트 했다. 결과는 안되던 계정에 OOO.com 이 제대로 발급이 되었다. 또 되던 계정은 ooo.1day1.org 는 안되는 것이었다.
OTL
정말 그 문제란 말인가? 키 발급시에 도메인 자체도 테스트를 하는 것인가? nslookup 또는 whois , dig 등을 체크해서 유효한 값을 체크하는 것인가?
그런데, 직접 쿼리를 날려봐도 별다른 차이점을 발견할 수 없었다. org 도메인의 네임서버 설정이 잘못된 것일까? apache 로그를 보면 파일을 찾아서 가져가는(GET) 것을 볼 수 있다. 설정이 잘못되었다면 파일을 찾지 못할 것인데 말이다.
미궁에 빠지게 된다. 왜! 인지 알 수 없게 되었다. 상황을 재연까지는 하게 되었지만, 왜! 인지는 모르겠다.
여기서 끝내려 했다. 그런데 뭔가 이상했다. 이유가 뭐란 말인가? 안되는 1day1.org 와 되는 OOO.com 은 똑같이 dnsever.com 에 설정되어있다. 둘의 설정상의 차이가 뭐일까? 살펴봤다.
YDN 측에서 org 자체를 막거나 하지는 않았을 것이고, dnsever 쪽에서 네임서버 쿼리를 막도록 설정되어 있는 것일까? nslookup , dig 로 테스트 해보면 이상이 없는데 이상하다. 특정 IP 대역에 대해서 막아놨을까? (그럴지도 모르겠다.) dnsever 가 기존 ns1,ns2 에서 ns16~ns259 등으로 분리를 시켜놓은게 예전 DDOS 공격을 당했을때 공격을 분산,회피 하기 위한 조치였던 것으로 알고 있다. 그렇다 보니 새로운 네임서버에 대해서 쿼리 권한을 제한했을 가능성이 많을 듯 하다.(org 가 막혔다는 것 보다 좀더 설득력이 있어 보인다)
최종 테스트는 되는 다른 도메인을 ns16,ns34 등으로 바꿔보고, 1day1.org 를 독립네임서버로 바꿔보거나 ns1,ns2 의 예전 네임서버로 바꿔서 교차 테스트를 해보면 명확한 답이 나올 듯 싶다. 최종 테스트가 예상대로 나오게 된다면 ns16~ns259 의 어떤 설정 문제일 듯 하다.
dnsever 쪽 문제라고 해도 좀 이상한 부분이 있다. YDN 쪽에서 검증파일(?) 만 체크하는 것이 아닌 듯 한데, 그에 대한 언급이 있어야 할 듯 하다. 분면 검증파일을 확인했으면서 체크오류를 내는 것은 문제가 있어 보인다. 그 확인사항이 정확히 무엇인지 모르겠지만, API KEY 발급상에서는 그에 대한 언급이 없다.
ps. 현재 최종테스트를 위해 네임서버를 변경해 두었다. 적용되려면 최소한 반나절,하루 정도가 걸리기 때문에 아직 테스트 할 수 없다.
기존에 qmail + vpopmail(with cdb) 를 사용했었다. pop3 는 vpopmail 을 이용했다. 그리고, imap 은 bincimap 을 사용했다. 그런데, squirrelmail 을 사용하려고 테스트 하는 중 bincimap 1.2.x 버전에 없는 기능때문에 사용할 수 없다. 1.3.x 버전은 사용이 가능한 듯 하지만, 컴파일 에러가 생겨서 dovecot 을 쓰기로 했다. 요즘 추세(?)가 dovecot 인것 같다. (bincimap 도 가벼워서 괜찮긴한데)
SPEC 에서 qmaild 계정을 만들때 useradd -m 옵션으로 /var/qmail 을 홈으로 지정해서 같이 생성하는데, alias 계정을 먼저 생성하기에 /var/qmail/alias 디렉토리를 생성할 수 없다는 에러가 발생한다. 그래서 qmaild 계정을 먼저 생성해준다.
또는 계정생성 앞부분에 /var/qmail 을 생성해준다.
if [ ! -d %{qmaildir} ]; then mkdir %{qmaildir} fi
2. useradd 옵션 변경 우분투에서는 옵션이 -M 이 아니라, -m 이다. useradd 의 버전차이인지 배포판 차이인지는 모르겠다
3. /sbin/nologin 을 /usr/sbin/nologin 으로 바꾼다 (배포판 차이)
4. {_initrddir} 위치 /etc/init.d 가 생성되지 않는다. 우분투는 /etc/init.d 에 위치한다.
rpm --eval %{_initrddir}
으로 확인한다.
5. pushd , popd 명령이 안 먹나? ubuntu 에서 /bin/sh 가 dash 라는 놈에 링크되어 있다. pushd,popd 는 bash 에서 동작한다. 기존것을 지우고,
ln -s /bin/bash /bin/sh
으로 링크해준다.
chkconfig 대신에 update-rc.d 를 이용한다. 우분투는 update-rc.d 를 이용한다. (chkconfig 부분을 찾아서 다음처럼 바꾼다)
그동안 여러시스템을 운영하면서, 하드디스크 장애를 수차례 겪어봤다. 물론 전문 운영업체도 아닌 개인입장에서의 경험이니 일반화 하는 것은 위험하다.
짧은 경험이지만, 하드디스크 장애중에 유독 파일시스템이 깨지거나 쓰기지연 등이 발생하는 경우는 var 디렉토리가 대부분이었다. var 디렉토리의 특성상 쓰기 작업이 많이 일어나기 때문일 것이다.
var 는 일을 많이 해! 시스템을 설치할때 / , /boot , /usr , /var 등은 거의 필수로 별도의 파티션으로 나누어 놓는다. 이중에서 디스크 자체의 인식오류등을 제외하면 거의다 var 디렉토리에 이상이 생겨서 문제가 발생한다. 파티션을 나누어 놓아서, 별도의 파티션으로 var 의 데이터를 옮기고, 바꿔서 마운트 해주면 해결되기도 한다. 그러나, 디스크에 배드섹터 같은 것이 발생했을 가능성이 많기 때문에 하드디스크를 바꿔주는 것이 좋다.
그렇다면 var 자체를 별도의 하드디스크로 지정해 놓는 것이 좋지 않을까? 용량도 그리 크지 않아도 된다. /var/log 정도만 따로 떼어 놓으면 수기가 정도면 충분하다. 그러나, log 도 대부분 쓰기 작업이니 따로 떼면 마찬가지 일듯 하다.(log 도 같이 있어야 겠다) 가능하다면 아예 메모리에 올려버리면 장애 발생률이 현저히 줄어들지 않을까?
깔끔한 해결책이 없을까?
SSD 가 답일까? SSD 를 도입하기에는 비용도 문제지만, SSD 가 쓰기작업에 별로라는 이야기가 있어 좋은 해결책은 아닐듯 싶다. (MLC 니 SLC 니 그런 차이가 있다고 하던데...) 그렇지만, 서버용으로는 속도 빠른것으로 5G (최대 10G) 정도만 되어도 충분히 도입할 수 있으니, 그리 큰 비용이 들지 않겠지. 심각하게 고려해봐야 겠다.
메인보드의 시간설정을 했는데, 얼마후에 시간이 바뀌어 버린다. GMT-9 (GMT+9) 로 9시간이 차이가 나버린다.
난 분명 16 시로 맞췄는데, 시간은 9시가 되버린다. CMOS 배터리가 없어서 그러면 공장초기화가 되어 버릴텐데, 그런게 아니다. 보드에서 시간이 고정되어 버리나? time 서버와 자동동기화되지는 않을텐데. OS 에서 bios 까지 직접 건드리지는 않을 것이고. Phoenix 바이오스 인데, 이놈의 특색인가? (제조시 국가별 설정이 그렇게 되어 있을까?)
암튼 이상한 현상을 목격하게 되는군.
우분투의 하드드라이브 커널에러가 나온다. http://ubuntuforums.org/archive/index.php/t-1034762.html 여기에 나오는 에러인데
하드디스크에러다, 케이블 에러다, 커널옵션 ACPI 를 꺼라.
여러가지 이야기가 있다.
fsck 로 돌리긴 했는데, inode 가 깨져서 삭제했다. 일단 부팅이 되고, 관련 에러가 보이진 않지만, 좀 불안하네.
조만간 하드디스크를 교체해야 겠다.
시스템도 '계란을 한바구니에 담지 마라' 라는 것이 적용되는 것 같다. 위 에러난 시스템은 내부 개발용 이다. 내부 SCM , 이슈트래커, 공유공간, 개발서버(VM) 등이 구축되어 있다. 하드 에러가 나서 시스템을 교체할 생각을 하니, 고생이 훤하다. 가장 간단하게 하드카피로 하거나, 새로운 시스템으로 클린 설치를 해야할텐데 말이다. 클린설치하면 설정을 다시 해야 한단 말이지.
그나마 다행인것은 개발서버를 VM 으로 구축해놔서 카피만 하면 된다. 나중을 생각해서, SCM,이슈트래커 도 VM 내에 구축해 놓을까? 마스터서버 는 단순히 OS 와 VM서버 만 올리도록 말이지. 그렇게 분산시켜놓으면 최악의 상황에 대비하기 좋을테니 말이다.
http://developer.yahoo.com/yql/ YQL 은 지난 7월경에 나온듯 하다. 그동안 모르고 있었다.(다른곳에 한눈팔아 미처 못 봤겠지) 사실은 트위터 오픈API 를 이용해서 뭔가 만들려고 했었는데. 마침 YQL 이 눈에 띄었다. (결과적으로 이런 행운이...)
YQL console 이라는 것이 있어, 직접 쿼리(?)를 날려 테스트 해볼 수 있다. http://developer.yahoo.com/yql/console/
그 부분은 동영상에서도 소개가 되어 있으니 일단 넘어가고. 바로 트위터에 포스팅 하기를 실험해 봤다.(약간의 삽질기도 있다)
YQL 콘솔상에서는 다음과 같은 쿼리를 날린다.
이런 쿼리이다.
use 'http://yql.1day1.org/yql-twitter-status.xml' as table;
insert into table (username,password,status)
values('username','password','YQL-twitter test. 22');
자신의 트위터 아이디/암호/내용을 넣으면 트위터에 포스팅이 된다.
1. YOS , php SDK 를 이용하려다 실패.( & 보류 ) 자세한 사항은 자세히 보기로...
YOS lib 는 curl 을 기본으로 사용한다.(몇몇 호스팅인경우 curl 을 사용하지 못할 수도 있다.)
apt-get install curl
여기까지 잘 될 줄 알았다. 그런데, 실행하려는 코드가, 이런식의 코드이다.(YOS 라이브러리를 불러와서)
// Include the YOS library. require dirname(__FILE__).'/lib/yos-social-php/lib/Yahoo.inc';
// debug settings error_reporting(E_ALL | E_NOTICE); # do not show notices as library is php4 compatable ini_set('display_errors', true); YahooLogger::setDebug(true); YahooLogger::setDebugDestination('LOG');
// use memcache to store oauth credentials via php native sessions ini_set('session.save_handler', 'files'); session_save_path('/tmp/'); session_start();
// Make sure you obtain application keys before continuing by visiting: // https://developer.yahoo.com/dashboard/createKey.html
2. YOS 가 curl 쓴다면, 난 직접 쓰지뭐. YOS 가 curl 을 쓴다기에 직접 써보기로 했다.
file_get_contents , simplexml_load_file 같은 php 의 함수를 이용할 수도 있지만, INSERT/UPDATE/DELETE 등의 쿼리는 POST 로 데이터를 넘겨야 하는 것 같다. 그래서 해당 함수들은 사용할수가 없다. 물론 socket 열어서 직접 post 로 넘기면 되지만. 우린 복잡한거 싫어하잖아요. 간단하게 해야 Cool 하죠. ^^
make , gcc 등의 개발에 필요한 패키지도 설치되어 있어야한다.(대부분 이미 설치되어 있을듯)
apt-get install build-essential
최종적으로 rpm 을 만들었는데, 이런에러가.
rpm -Uvh CUBRID-8.2.0.1150-el5.x86_64.rpm
아! 나를 반기는 의존성 오류.
오류: Failed dependencies: /bin/bash is needed by CUBRID-8.2.0.1150-el5.x86_64 /bin/csh is needed by CUBRID-8.2.0.1150-el5.x86_64 /bin/sh is needed by CUBRID-8.2.0.1150-el5.x86_64
이미 bash , sh 등이 설치되어 있지만, rpm 에서 체크하는 방식이 달라서 그런듯 하다. 즉, 우분투에서는 설치된 패키지 정보가 rpm 에서 알 수 없어서 그런듯 하다.
메일서버에는 다양한 어플들이 있다. 흔히(?) 쓰는 sendmail 부터, 요즘 우분투쪽에서 밀고 있는 듯한 postfix. 지금은 어떤지 모르겠지만, 예전에는 sendmail 의 보안문제에 대해서 말이 많았다.
그렇다 보니 다른 대안을 찾아다니게 된다. 그 중에 유명한 메일서버가 qmail 이 아닐까 한다. 큐메일. 그런데, 문제가 컴파일 해서 사용해야 하기때문에 비경험자에게는 쉽지않은 난이도를 가지고 있었다. 그리고 환경에 따라 다양한 방법이 존재한다.(각종 패치는 더욱 많다) 다양한 요구를 만족시킬 수 있다는 장점은 다른 면에서 복잡성을 나타내기 때문에 어려워진다.
서버의 실제 계정을 활용하는 가장 기본적인 방법과 (qmail 기본) 파일로 관리하는 가상계정을 사용하는 방법(qmail + vpopmail) DB 로 관리하는 가상계정을 사용하는 방법(qmail + vpopmail + mysql)
지금 설명하려는 부분은 qmail + vpopmail 의 가상계정을 이용하는 방법이다. 지금까지 qmail 기본 설정을 사용했었다. 원래 sendmail 으로 운영했었는데(몇년전) 관리의 어려움이 있어 qmail 로 변경을 했다. 그당시 설정이 어려운부분이 많아서, 제일 간단한 방법이면서, 기존의 설정을 그대로 가져갈 수 있기 때문에 qmail 기본을 사용했었다.
그리고 몇년이 지난후 서버의 운영체제를 업그레이드 하다보니, 메일서버가 문제였다. 예전의 컴파일 하던 방식이 새운영체제에 맞지 않는 것이었다. 여러 방법을 찾아보다가 qmail + vpopmail 로 이전하는 것으로 결론을 내렸다. 그 사이에 쉽게 처리할 수 있는 방법이 나왔기 때문이다.
CodeIgniter 일명 CI 는 php 프레임웍이다. 한국에서는 zend , cakephp 등의 프레임웍보다 덜 알려져 있다. 사실 php 프레임웍 자체가 널리 쓰이지 않고 있다. 그 상황에서 각 프레임웍의 인지도를 따지는 것은 무의미 하다고 본다.
그러던중 CI 한국 사용자 포럼이 만들어졌다. http://codeigniter-kr.org/ php 프레임웍의 한국사용자 포럼은 cakephp 가 먼저 만들어졌지만, 지금의 거의 개점휴업상태이다. (cakephp 포럼도 활성화 되길 바랍니다. cakephp.co.kr )
얼마전에 CI 기반의 포럼이 오픈하면서 지금의 꽤 활성화되고 있다. 운영자들이 CI 를 사용하다보니 그런것 같다. 하나둘씩 사용자가 늘어나고 있다.
자! 여러분들도 CI 의 가벼움에 반하시기 바랍니다. (가볍지만 강합니다.)
다른 프레임웍도 좋지만, php 의 강점인 간결함과 속도를 희생하는 문제가 있었습니다.
CI 는 php 의 강점을 살릴 수 있는 프레임웍이라고 생각합니다.
/var/named/chroot/etc/named.caching-nameserver.conf ( /etc/named.conf ) 의 마지막 줄에. named.conf.local 설정을 불러오도록 다음 줄을 추가한다.
include "/etc/named.conf.local";
그리고 기존의 zone 파일들은 /var/named/chroot/var/named 에 복사해 주면 된다.
그리고 재시작하고, nslookup , dig 등으로 확인한다.
외부에서 도메인 질의가 안된다면 로컬에서는 되는데, 외부에서는 안된다면 다음의 사항을 체크한다.
1. 방화벽 iptable 로 53 번 포트를 열러줘야 한다.
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
2. 설정 설정파일의 기본이 localhost 를 기준으로 되어 있다.( named.caching-nameserver.conf )
cmake 하던중 이런 에러를 만나면...(kdevplatform 이 먼저 설치되어 있어야 한다)
CMake Error at CMakeLists.txt:11 (find_package):
find_package could not find module FindKDevPlatform.cmake or a
configuration file for package KDevPlatform.
kdevplatform 이 필요하다. 그리고 kdelib 가 4.2 이상이 필요하다.
ps. 그런데, kdevelop 은 프로젝트 import 가 생각대로 되지 않는다.ㅜㅜ 다시 eclipse 로 가야겠다. 이런.
오래된 윈도우용 웹캠이 있다. 윈도우XP 까지만 지원된다.(3개정도 있던가.) 더군다나 제조회사는 이미 망해버린 상태이다.(웹캠 회사는 온전한 곳이 별로 없다) 대기업표 웹캠도 오래된 것들은 윈XP 이상의 드라이버는 제공하지 않는다. 윈도우 비스타, 윈도우7 을 사용하고 있는 상황에서 쓸모없는 물건이 되버렸다. 아직 윈XP 가 많이 쓰이지만, 왠지 시한부 인생을 사는 것 같이 씁쓸하다.
혹시나 하는 마음에 리눅스(우분투)에 연결했다. 3개중 2개는 그냥 인식되네, 나머지 하나도 테스트해봐야 겠다. 치즈(cheese)를 실행시켜보니 잘 되는구나.
웹캠 감시 시스템을 적용해 볼까? 몇가지 찾아보니, motion 과 zoneminder 라는 것이 있다.
카메라 영상을 웹에서 보기위해 apache2 가 필요하다. mysql-server 는 zoneminder 의 설정등을 저장하기 위해 mysql 을 사용하기 때문에 필요하다. 웹기반으로 카메라 영상 감시를 하기위한 어플이 php 로 제작되어 있다.(php5, mod-php5 필요) ffmpeg 는 카메라 영상을 동영상으로 저장하기 위해 필요한 패키지 이다.
옵셥설정하기 http://localhost/zm 으로 접속해서 기본 옵션을 설정한다.(오른쪽 윗 부분에 있다.)
옵션중에 다른 부분은 바꿀 것은 없고. image 부분에서
두번째 항목 ZM_STREAM_METHOD 를 mpeg 에서 jpeg 로 바꾼다.(save 를 꼭 해준다)
그리고 zoneminder 를 재시작해준다.
/etc/init.d/zoneminder restart
여기까지 한후, 감시설정을 해준다.(웹캠이 여러개가 있다면, 여러개의 감시설정을 할 수 있다.)
감시설정하기 "Add New Monitor" 를 눌러 설정을 한다.
아무 이름이나 쓰고, Local 로 해준다. Function 은 원하는 것으로 선택한다. 잘못 이해했는지 모르겠지만, Modect 로 설정하면 Event 가 발생할 듯 싶은데, 잘 안된다. 그래서 Mocord 를 하니 제대로 Event 를 잡아내는 듯 하다.(Record 를 해야 하나?)
그리고 저장한다.
소스(Source) 부분에서 웹캠 디바이스를 지정한다.(보통 /dev/video0) 여러개 있다면, video1 , video2 등의 디바이스가 생겼을 것이다.
capture width , height 는 320x240 이 적당할 듯 하다. 640x480 등은 커널 공유메모리를 늘려줘야 하나보다.(shmall , shmmax 관련)
감시화면보기 모니터 설정후에 설정한 이름을 클릭하면
다음처럼 웹캠 화면이 나온다.(지금은 어두워서, 밝은 것은 프라이버시 문제로...)
이벤트도 기록되는 것을 볼 수 있다.(어떤 상황에 이벤트가 생성되는지 정확한 기준은 아직 모르겠다)
주의사항 : /var/cache/zoneminder 에 영상이 저장된다. 충분한 공간을 확보해야 한다.
영상이 잘 안보인다면 감시화면을 띄웠을때 카메라 영상이 제대로 나오지 않는다면, /var/log/messages 를 확인해본다. 퍼미션 에러가 나온다면. 아래처럼 권한을 조정해 본다.(zoneminder 재시작)
chmod 4755 /usr/bin/zmfix
그래도 안된다면, 아래처럼 video0 의 other 권한을 rwx 로 바꿔준다. (또는 666 ,777 )
chmod o+rwx /dev/video0
ps. 테스트에 사용된 웹캠이 Z-Star Microelectronics Corp. ZC0301 WebCam 이다.(lsusb) 저게 LED 조명이 있는데 꺼져있다. 켜는 방법을 아직 못찾겠다.(없나?) 그러고보니 윈도우에서도 조절을 못했던 것 같다.
처음에 하려던 방식은 eclipse + 로컬저장소 + vm 개발서버 이런식으로 하려고 했는데, vm 개발서버에서 원격으로 로컬저장소로 virtualhost 설정이 안되네. 원래 그런가? 네트웍드라이브로 지정해서 하는 것이 문제인가?
그 다음에 조금 바꿔서 eclipse + 서브네트웍 저장소 + vm 개발서버 이렇게 처리할려고 했는데, 서버네트웍저장소 의 프로젝트를 eclipse 에서 가져오는데 너무 시간이 걸린다. 왜 그렇게 느린지 모르겠다. 1G 네트웍은 되어야 쓸만한가? 아니면 내 PC 성능이 딸려서 그런가?
최소로 eclipse 만 설치하려고 했는데, 어쩔 수 없이 로컬에 개발환경을 만들어야 바로 확인이 가능하겠다. 제일 마지막으로 하려던 것을 어쩔 수 없이 해야 되나? 그냥 svn 을 한김에 vm개발서버에서 svn checkout 해서 확인하도록 할까?
아니면 vm 개발서버를 윈도우기반이 아닌 리눅스 기반으로 바꿔보는 것도 좋겠다. (아무튼 지금의 상황은 svn 이 해결방법은 아니다.ㅜㅜ)
Tmax Window는 MS Windows는 물론 UNIX, Linux를 모두 지원합니다. - 복합 API 구성을 통해 특정 플랫폼에 종속되지 않는 플랫폼 독립성(Platform Independent)을 지니고 있습니다. - Tmax Window 환경에서 Linux/Windows 기반 모든 어플리케이션 구동이 가능합니다.
그런데, 좀더 찾아보니, 웹호스팅과 위 가상서버호스팅의 중간형태도 있다. http://www.just4fun.co.kr/drupal/?q=node/3125 이것도 가상서버호스팅이라고 봐야 하지만, 실제 IP 를 할당받는 형태가 아닌 사설 IP (192.168.x.x 형태)를 할당받기 때문에 위의 가상서버와는 운용방식이 다를 수 밖에 없다. 구분하려면 실IP가상서버호스팅 과 사설IP가상서버호스팅 이라고 불러야 할 듯 하다.
사설IP가상서버호스팅은 실제IP가 할당되는 것이 아니기 때문에, 웹사이트도 가상서버에 직접세팅하는 것이 아니라, 물리적서버에 웹호스팅(Virtualhost)형태로 제공된다.
기존 웹호스팅은 보통 한서버에 수백개의 사이트가 운영되는것이 기본이기 때문에 보안을 철저히 하지 않으면 보안에 노출될 위험이 많은것이 사실이다. 호스팅업체에서도 신경이 꽤 많이 쓰이는 상품이다.
그래서, 기존 웹호스팅에 좀 불안함을 느끼거나, 가상서버호스팅이 비싸게 느껴지는 중간점(?)을 잘 파고 들면 괜찮을 듯 싶다. 가격이 거의 웹호스팅 수준만큼 싼데, 서버/회선 유지비가 제대로 나올지 걱정된다. 제대로 계산해서 정했겠지.
그러고 보니 궁금한것이 물리적서버에 가상서버가 몇개까지 운용가능한거지? 시스템 자원을 잘 할당 해야 할 듯 싶다. (오히려 그쪽이 궁금하네)
상품이 다양해지면 복잡해지긴 하지만, 사용자는 선택의 폭이 넓어져서 좋다. 자신의 사이트에 맞는 적절한 상품을 선택해서 사용할 수 있다.(그 말은 비용절감을 의미한다)
ps. 지금 좀 비싼(?) 가상서버호스팅을 하나 받고 있는데, 저곳으로 옮겨볼까? 테스트 기간도 있으니 한번 해봐야 겠다.(우분투를 기본 지원하는게 마음에 든다)