그런데, 불편한 메시지가 나온다. Pseudo-terminal will not be allocated because stdin is not a terminal
항상 나오는 것은 아니고, 단일명령을 주면 나오지 않는다. command.sh 에 실행명령을 작성하고, ssh {host} < command.sh 형식으로 할때 메시지가 나온다.
그런경우 ssh -t -t (두번) 옵션을 주어 실행하면 된다.
근데, 실행명령이 다 보인다.
이때는 ssh -T 옵션을 준다.
그런데, 또 불편한 메시지가 보인다. TERM environment variable not set.
ssh 실행시 해당 TERM 환경변수가 설정되지 않아서 그렇다. 타겟서버의 .ssh/environment 파일에(보통 파일이 없다. 그래서 새로 만들고) BASH_ENV=.profile 을 추가해준다. (경우에 따라서 .profile 을 .bash_profile 로 변경)
진한 부분의 옵션이 중요하다. 저 옵션이 있어야, master 로그 포지션이 기록된다.
1 은 명령으로 dump , 2 는 기록은 되는데, 코멘트로 덤프됨( -- CHANGE ... 처럼)
둘중 어느것으로 해도 상관없음.
slave 에서 직접 CHANGE MASTER ... 명령을 내리느냐 restore 시 같이 하느냐 그 차이.
# slave 쪽 : 위치에 맞게 restore.
slave 에서 데이터를 업데이트한후(stop slave; 를 먼저 한 상태) 다음명령으로 위치를 잡아준다
아래 위치는 덤프파일을 앞 부분을 보면 나온다. ( head slave.dump.sql -n 30 정도면 나온다)
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000200', MASTER_LOG_POS=200500;
fsockopen 을 쓰는 API 의 라이브러리를 사용하다가 이런 메세지를 만나게 되었다.
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of fsockopen(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in ....
php.ini 의 allow_call_time_pass_reference 부분을 고치느냐.
API 라이브러리를 고치느냐.
10초 고민하다가, fsockopen 에서 value 를 받는 방식으로 바꿨다.
(fsockopen 에서 reference 로 받아야 하는 이유가 있나?)
요즘 jquery 가 대세인듯 하다. js 프레임웍의 편리함을 한번 맛보면 벗어날 수 없다.
우선 결론을 말하면 "IE 야! 제발 쫌" 버그라고 말해야 겠다.
다양하게 확인을 하지는 않았지만, IE9 는 제대로 동작을 하는 듯 하다.
IE8 포함 이전버전에서는 오동작을 한다.
jquery 새버전에서는 될지도 모르겠다. jquery 테스트 버전은 1.4.2 이다.
그런데, 저렇게 처리하면 IE 에서 이상하게 동작한다는 것을 느낄 것이다.
text 입력창에 값을 입력하고 out focus 되면 onchange 이벤트가 발생해야 하는데, 발생하지 않는다.
input 태그에 직접 onchange 를 쓴경우 정상적으로 발생하는데, jquery 의 ready 를 사용하면 안된다.
한번 focus 되고 나서, 다시 해볼때는 정상적으로 된다.
set $fastcgi_script_realname $fastcgi_script_name;
if ( $fastcgi_script_name ~ ^(.*\.php)(/.*)$ ) {
set $fastcgi_script_realname $1;
set $path_info $2;
}
if (!-f $document_root$fastcgi_script_realname) {
return 404;
}
또는 /etc/php.ini 설정을 바꿔준다.
cgi.fix_pathinfo=0
nginx 에서 php-fpm 으로 넘기기전에 막아주는 것이 좋을 듯 하니 첫번째 방법이 좋을 듯 하다.
참조 : CI 에서는 다음처럼 rewrite 룰을 적용했다.
if (!-f $request_filename) {
rewrite ^/CI_forum/(.+)$ /CI_forum/index.php/$1 last;
}
> server ns.domain.com
> zone domain.com
> update add some.domain.com. 86400 A 192.168.10.10
> show
> send
위 명령들을 파일로 만들어서 일괄처리할 수 있다.
DDNS 는 IP 가 동적으로 변경하는 환경 또는 서버의 Failover 처리등을 위해 사용하면 편리하다.
nsupdate 로 변경된 zone 파일은 직접 수정하지 않는것이 좋다.
named 에서 {zone file}.jnl 에 해당하는 임시파일을 만들고 추후 실제 zone 파일을 업데이트하기 때문에
zone 파일을 직접수정하면 수정한 부분이 사라질 수 있다.
직접 수정하려면 다음 방법중 하나를 사용한다.
# 방법1 - 9.3 이전버전
rndc stop
remove the journal file (.jnl)
edit the zone
start named
# 방법2 - 새버전 9.3
rndc freeze zone
edit the zone
rndc unfreeze zone
# 기본 mysql replication 설정.(마스터-슬레이브) 1. mysql config 설정
master , slave 각각 config 파일에 replication 설정을 해준다.
우분투의 경우 /etc/mysql/conf.d 에 replication_slave.cnf (파일명은 임의로 )
/etc/mysql/my.cnf 의 마지막줄에 이렇게 되어 있어서 불러오게 된다
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 이 네이버오픈소스로 공개하고나서 업데이트를 별로 안한다.
네이버 내부에서는 많이 개선이 되었을 듯 한데...(아닌가?)
웹카메라를 가지고 놀다 보니. 어떤 캠에서는 LED 가 계속 켜져 있는 상태가 되기도 한다. 볼륨조절하듯 조절가능한 것도 있기는 한데, 안되는 황당한 놈들이 있다.
생각으로는 usb port 별로 전원컨트롤 할 수 있는 방법이 있지 않을까 찾아보았다.
비슷한 것들이 있기는 한데, 완전히 차단시키지는 못하는 듯 하다.
root@ubuntu:/sys/bus/usb# lsusb
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 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 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 002: ID 0ac8:3332 Z-Star Microelectronics Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@ubuntu:/sys/bus/usb# echo suspend > devices/2-2/power/level
root@ubuntu:/sys/bus/usb# lsusb
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 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 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 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 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@ubuntu:/sys/bus/usb# echo on > devices/2-2/power/level
root@ubuntu:/sys/bus/usb# lsusb
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 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 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 002: ID 0ac8:3332 Z-Star Microelectronics Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@ubuntu:/sys/bus/usb#
위와 같이
echo suspend > /sys/bus/usb/devices/{device usb port}/power/level
처럼 값을 주면 usb 장치가 사라졌다 on 하면 다시 보인다.
그런데, 그것이 완전히 전원을 차단하는 것은 아니다. 작동상태정도만 조절하는 듯 하다.(메인 보드 마다 다를 수 있을지는 모르겠다)
또 다른 방법도 있다고 하는데.
echo "0" > /sys/bus/usb/devices/{device usb port}/power/state
다음과 같은 에러가 난다.
bash: devices/2-2/power/state: No such file or directory
가상장치같은 개념이라 없는 파일(state)을 만들 수는 없나 보다.
카메라가 인식되면 /dev/video0 , video1 으로 장치드라이버가 생기게 된다.
각 thread1,2 에 각각 장치드라이버를 적어주다.
input 8 은 기본 usb 카메라일때를 말하는 듯(주석설명에 그렇게.)
target_dir 은 움직임이 포착되면 이미지로 저장이 되는데 그 저장위치를 지정한다.
webcam_port 는 웹브라우저로 카메라 영상을 볼 수 있는 포트를 지정한다.
카메라별로 다르게 포트를 지정해준다.
on_picture_save , on_movie_end 부분은 추후 카메라영상 원격 저장하기에서 다룰 예정이다.
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번에서 안된다면 포트지정이 잘못된 것이다.
구글톡이 윈도우,맥,리눅스 를 모두 지원한다.
우분투에서 구글톡 플러그인을 설치할 수 있다.
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 등을 확인해보면
roundcube 를 쓰면서 좀 불편한 점이 한글메일이 간혹 깨지는 경우였다.
깨지는 경우는 roundcube 가 이상있는 것이 아니라, 보내는 쪽에서 메일의 헤더에 charset 을 지정하지 않은 경우이다. 대부분 메일 규칙을 지키지 않는 아주 불량한 메일이라고 봐도 된다.
그래도 간혹 봐야 하는 경우가 생기니. 정부(관공서)메일에서도 심심찮게 발견된다.
간단하게나마 몇 부분(파일2개)을 수정해서 한글을 볼 수 있게 해보자.