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

예전 부터 가상서버를 써왔다. 국내/해외. 본격적으로 써온지도 5년이 넘었다.
(특히 해외업체들의 서비스가 괜찮아 많이 쓰고 있다. https://blog.1day1.org/564 에 소개를 하기도 했다)

국내업체들은 아직 불편한 부분이 많다.
그 사이 AWS 도 국내 서비스도 하고 있다.

이미 AWS 쪽은 대세가 된 kubernetes , 위 업체중 디지털오션 만 공식(?) 지원하고 있다. 서비스로서 지원.

디지털오션 - 쿠버네티스 서비스

벌쳐 / 리노드는 아직 공식 지원하지는 않는다. 별개로 kubernetes 설치해서 사용할 수는 있다.

디지털오션은 서비스로 지원해서, 쿠버네티스 클러스터를 구성하기 쉽도록 했다.(마스터는 별도 비용을 받지 않는 듯 하다)
노드 비용만 계산이 되는 듯 하다.(10$ 플랜부터 사용가능)

런칭한지는 좀 되었지만, 아직 실 사용은 해보지 않아 언급하진 않았다.
조만간 서비스를 쿠버네티스 기반으로 옮길것을 검토중이라 정리 차원에서 글을 쓴다.

도입하면서 나오는 이슈들을 정리할 생각이다.


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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

사용중인 시스템에 HDD 관련 커널에러가 발생하였다.

보통 여러가지 이유가 많지만, 이런 에러가 생기면 그냥 AS 보낸다.

그런데, 이번에는 디스크 관리를 보니 배드섹터 1 개 라고 나온다. 애매하네...
당장 시스템 교체할 하드가 마땅치 않아, AS 보내기전 잠시라도 계속 사용해야 하는 상황.

배드섹터를 기록(?)해서 에러가 발생하지 않도록 하고자 한다.

커널 에러 메세지는 이런식이다. (에러 종류에 따라 , 메시지가 다르다 )

[348303.307873] ata4: EH complete
[348305.814497] ata4.00: exception Emask 0x0 SAct 0x1000000 SErr 0x0 action 0x0
[348305.814503] ata4.00: irq_stat 0x40000008
[348305.814508] ata4.00: failed command: READ FPDMA QUEUED
[348305.814517] ata4.00: cmd 60/08:c0:78:3b:76/00:00:31:01:00/40 tag 24 ncq 4096 in
                         res 41/40:00:78:3b:76/00:00:31:01:00/40 Emask 0x409 (media error) <F>
[348305.814521] ata4.00: status: { DRDY ERR }
[348305.814524] ata4.00: error: { UNC }
[348305.815611] ata4.00: configured for UDMA/133
[348305.815625] sd 3:0:0:0: [sdc] tag#24 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[348305.815630] sd 3:0:0:0: [sdc] tag#24 Sense Key : Medium Error [current] [descriptor] 
[348305.815635] sd 3:0:0:0: [sdc] tag#24 Add. Sense: Unrecovered read error - auto reallocate failed
[348305.815639] sd 3:0:0:0: [sdc] tag#24 CDB: Read(16) 88 00 00 00 00 01 31 76 3b 78 00 00 00 08 00 00
[348305.815643] blk_update_request: I/O error, dev sdc, sector 5124799352

눈에 띄는 부분은 마지막줄.

blk_update_request: I/O error, dev sdc, sector 5124799352

배드 섹터가 생긴 것으로 보인다(다른 에러로 인해 나오는 경우도 있을 수 있을 듯 하다 - 입출력시 에러이니 다양한 원인이 있을 수 있음)


보통의 절차는 badblocks 로 배드섹터 위치를 찾고, fsck 로 배드섹터 표시를 해서 디스크사용시 해당 섹터를 건드리지 않도록 한다.

badblocks -v /dev/sdc1 > badsectors.txt

위 처럼 배드섹터 위치를 찾는다 ( /dev/sdc1 등은 본인의 HDD 명칭으로 쓰면 된다)
오래걸린다 (디스크 크기가 크면 클수록)
검색 범위를 정할 수 있는지 모르겠다. 2930265542

그 다음은 배드섹터를 파일시스템에 기록(?) 한다.

fsck.ext4 -l badsectors.txt  /dev/sdc1

fsck 명령은 본인의 파일시스템에 맞게 적절하게 바꿔준다. (fsck.ext2 , fsck.ext3 등)

끝.

이게 영구적인 해결방법은 아닐 듯 하다. 배드섹터가 계속 생길 수 있으니, AS 보내기 전까지 버텨보자.


추가

badblocks 가 너무 오래 걸린다. (거의 2시간 넘게 했는데, 반도 못했다. 6시간 넘게 걸릴 듯 하다 - 하드디스크 속도에 따라 차이가 있을 듯 함. 해당 HDD 는 7200 rpm )

badblocks -v /dev/sdc1 > badsectors.txt
Checking blocks 0 to 2930265542
Checking for bad blocks (read-only test): ^C

Interrupted at block 1102688832

block 범위를 정해서 다시 해본다. ( 전체가 5860533168 이다. 대략 배드섹터 위치는 5124799352 )

Disk /dev/sdc: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt

위 처럼 한 블럭이 512 byte ( badblocks 의 기본값은 1024 - 그래서 0 to 2930265542 으로 나옴)
그런데, 512 로 하면 다음과 같은 메시지가 나온다.

badblocks: 정의한 자료형으로 쓰기엔 너무 큰 값 invalid end block (5860531087): must be 32-bit value

기본값 1024 로 해야겠다. 대신 뒤의 블럭을 반으로 나눠서 범위를 정해야 겠다. ( 2562399676 가 된다)
그러고 보니 기본값을 fsck 쪽과도 맞춰야 할까? 파일시스템마다 다를려나? ( 4096 이 기본값인가? 5124799352 x 0.125 = 640599919 이 된다.)

# badblocks -b 4096 -v /dev/sdc1 640600000 640590000 > badsectors.txt
Checking blocks 640590000 to 640600000
Checking for bad blocks (read-only test): done                                                 
Pass completed, 1 bad blocks found. (1/0/0 errors)
# cat badsectors.4096.txt 
640599663

뒤의 숫자는 640599919 의 대략 범위 위치를 {last block} {first block} ( 끝 / 시작 값을 약간 여유 잡고 지정한다 )
실제 블록 위치는 640599663 로 확인된다.

fsck 를 해보니.

# fsck.ext4 -l badsectors.4096.txt /dev/sdc1
e2fsck 1.42.13 (17-May-2015)
/dev/sdc1: Updating bad block inode.
Pass 1: Checking inodes, blocks, and sizes

Running additional passes to resolve blocks claimed by more than one inode...
Pass 1B: Rescanning for multiply-claimed blocks
Multiply-claimed block(s) in inode 110625949: 640599663
Pass 1C: Scanning directories for inodes with multiply-claimed blocks
Pass 1D: Reconciling multiply-claimed blocks
(There are 1 inodes containing multiply-claimed blocks.)

File { ================== 에러난 파일 =================== } (inode #110625949, mod time Wed Jun 26 16:35:07 2019) 
  has 1 multiply-claimed block(s), shared with 1 file(s):
    <The bad blocks inode> (inode #1, mod time Sat Jul 27 21:54:33 2019)
Clone multiply-claimed blocks<y>? yes
Error reading block 640599663 (Attempt to read block from filesystem resulted in short read).  에러 무시<y>? yes
강제로 덮어쓰기<y>? no
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
/lost+found not found.  Create<y>? no
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong for group #0 (23517, counted=23516).
Fix<y>? yes
Free blocks count wrong for group #19549 (65535, counted=0).
Fix<y>? yes

/dev/sdc1: ***** FILE SYSTEM WAS MODIFIED *****

/dev/sdc1: ********** WARNING: Filesystem still has errors **********

/dev/sdc1: 36792/183148544 files (0.0% non-contiguous), 632810807/732566385 blocks

위에서 Clone multiply-claimed blocks? yes => 이 부분을 그냥 n 로 건너뛰는게 좋다. 어차피 에러로 복사(clone) 실패 하는 듯 함.

일단 위와 같이 조치했는데, 잘 된 것인지는 좀더 체크해봐야 겠다. ( 특히 block 의 위치가 맞게 처리된 것인지... )


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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

기존에 vmware 로 세팅되어 사용중이던 windows xp 를 다른 호스트머신 으로 옮기려고 한다.

그런데, vmware player 가 설치가 안된다. (windows 10 의 문제인지?)
계속 알아볼까 하다가, 그냥 virtualbox 로 옮기기로 해본다. (요즘 PC 성능이 좋아져 vm 의 성능차이가 없을 듯 하여)

예전(몇년전)에 virtualbox 를 vmware 로 해봤을때는 잘 안되었는데, 그 반대를 해보려는것.

결론은 잘 이전 된다.

그 설명을 정리해본다.


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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

우분투 업그레이드를 했다. (간만에)

버전은 4.4.0-143-generic

Virtualbox 가  커널이 바뀌어서 모듈을 재 컴파일 해야 한다.

# sudo /sbin/rcvboxdrv setup

Stopping VirtualBox kernel modules ...done.

Uninstalling old VirtualBox DKMS kernel modules ...done.

Trying to register the VirtualBox kernel modules using DKMSERROR: Cannot create report: [Errno 17] File exists: '/var/crash/virtualbox-5.0.0.crash'

Error! Bad return status for module build on kernel: 4.4.0-143-generic (x86_64)

Consult /var/lib/dkms/vboxhost/5.0.40/build/make.log for more information.

 ...failed!

  (Failed, trying without DKMS)

Recompiling VirtualBox kernel modules ...failed!

  (Look at /var/log/vbox-install.log to find out what went wrong)

에러가 난다.  Virtualbox 특정 버전만 그런것인가? ( 5.0.40 )


일단 커널 버전을 내렸다. 4.4.0-143 은 걸러야 겠다.


ps. 다른 서버 4.4.0-142 버전은 괜찮은 것 같다.

필요하면 설치

apt-get install linux-image-4.4.0-142-generic


[추가 - 03/21]

새버전 4.4.0-144 버전이 올라와서 해보니, 동일 이슈.


[추가-04/11]

새버전 4.4.0-146 까지도 나왔는데, 동일

virtualbox-5.2 / virtualbox-6.0 도 해봐도 에러.

https://askubuntu.com/questions/1126721/4-4-0-143-generic-upgrade-16-04-vmware-no-loger-working/1126950

=> 모듈 소스를 수정해서 조치를 해야할 듯 하다. (아직 안 해봄)  => 이건 vmware 기준 소스 수정


[추가-04/16]

virtualbox 의 vboxdrv 쪽의 소스를 수정하는 방법

virtualbox 6.0.4 를 기준으로 설명 ( 커널 버전은 4.4.0-146 으로 설명)

참조 - /usr/src/linux-headers-4.4.0-146-generic/include/linux/mm.h 의 get_user_pages 의 인수가 다른 문제

vboxdrv 의 소스를 수정해준다.

/usr/src/vboxhost-6.0.4/vboxdrv/r0drv/linux/memobj-r0drv-linux.c 에서 get_users_pages 부분을 수정해주면 된다.

1122                                 /*fWrite,*/                 /* Write to memory. */

virtualbox 버전에 따라 소스 라인 위치는 다를 수 있다.


수정 후  /sbin/vboxconfig  로 다시 모듈을 만들어 준다.

정상 동작까지는 확인 했는데, 이 방법은 위험성이 있으니, 사용하면서 이상현상이 있으면 추가로 글을 남기도록 한다.



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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

딱히 돈이 남아돌아서 투자를 알아본 것은 아니었다.

P2P 투자도 그렇고, 암호화폐 투자도 그렇고 요즘 어떻게 돌아가는지 개념을 알아보자는 차원이었다.

(일단 뭐 투자할 돈이 없어서 ㅜㅜ )


[암호화폐 투자]

예전 10여년전이던가 아니 더 되었던가. 주식을 소액투자 해봤던 적이 있다.

요즘 가상화폐(암호화폐) 소액투자를 해보면서 비슷한 감정(?)을 느낀다.

신경이 많이 쓰이는 투자방법이다.  나에겐 좀 안 맞는다.(심장이 쫄깃해진다. 오래 못산다.)

그냥 적금처럼 넣어놓고 신경 안 쓰면 좋겠는데, 물론 그런식으로 할 수 있지만 맘이 그렇게 하기 쉽지 않다.


투자방식도 다양각색 - 업비트, 바이낸스 등 거래소등을 활용한 트레이딩.

POW, POS 등의 채굴을 통한 코인 획득.

블록체인 기반 사업을 위한 초기자본 모집하는 ICO 방식.


나는 암호화폐 트레이딩 보다는 주로 블록체인의 기술적인 관점에서 파악을 해보려고 하고 있다.

그래서 비트코인은 크게 관심이 없다. 블록체인 2세대(?)에 속하는 이더리움 , 네오 , 퀀텀 같은 플랫폼형 코인에 관심이 간다.

그래서 관련 플랫폼을 활용한 ICO 도 몇번 해봤다.(물론 소액)

이익보면 좋고, 안 되도 뭐... (속이 쓰리긴 하겠지만)


[P2P 투자]

가상화폐 투자보다는 좀더 안정(?)적인 방식은 P2P 투자인 듯 하다. 내 성향에도 딱 맞는 것 같다.

세팅 해놓고 신경 안 쓸수 있다.


여러 업체가 있겠지만, 써본 토스 와 렌딧이 마음에 든다.

토스는 원래 간편송금이 핵심인데, 부가(?)서비스로 부동산 소액투자, P2P투자(8퍼센트) 등이 있다. ( 펀드도 있는데, 내 성향이 아니라서 패스)

모바일 서비스 기반으로 투자 접근성이 편하다. 금액도 무리하지 않게 상한선이 있다.(투자 업체당 천만원)


렌딧도 P2P투자 인데, 토스의 8퍼센트 보다는 마음에 든다. ( 다만, 모바일 앱이 없는게 흠)

렛딧 추천코드 링크이다. ( https://goo.gl/tMaQ5F - 기승전 추천코드 )

추천코드 타고 가기 싫으면 그냥 https://lendit.co.kr 으로 가서 가입/투자 하시면 됩니다.


적금 넣는 대신 소액을 꾸준히 투자하기 좋은 것 같다. 수익률도 만족할 정도. (암호화폐 투자는 수익률은 좋지만 고위험)


투자시 고려할 것은 감당할 수 있는 범위내의 자금만 투입하라는 것.( 전부 없어도 지장이 없을정도 금액 )


3월 2일 추가 1)  2월 27일자로 투자금이 2천만원 으로 상향 조정되었다. 이쪽 계통으로 투자금이 몰리고 있다는 증거이려나? )

3월 2일 추가 2) 8퍼센트 쪽 웹버전도 괜찮다. 가입하면 토스쪽 투자내역을 세부적으로 볼 수 있다.  https://8percent.kr/



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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

ubuntu 에서 squid3 설정.

- 설정은 간단하다.

- curl 을 이용해 해당 proxy 서버를 사용할때 주의점.


# 설치

apt-get install squid3

끝. 쉽다.


# 설정

/etc/squid3/squid.conf 을 설정

(원래 파일은 복사하고, 새로 생성한다)

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT


# digest

auth_param digest program /usr/lib/squid3/digest_file_auth /etc/squid3/squid3.digest.passwd

auth_param digest realm proxy

acl sq_digest proxy_auth REQUIRED

http_access allow sq_digest


# basic

auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid3/squid3.basic.passwd

auth_param basic realm proxy

acl sq_basic proxy_auth REQUIRED

http_access allow sq_basic


cache deny all


http_port 4128


#http_port 3128

coredump_dir /var/spool/squid3


refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern (Release|Packages(.gz)*)$      0       20%     2880
refresh_pattern .               0       20%     4320

진한 부분이 추가한 부분이다. 기본파일에는 http_access 관련 설정이 있는데 삭제했다.


# 포트 변경

그리고 추천하는 부분은 기본포트인 3128 을 다른 포트로 바꾸길 권장한다.
언제나 그렇듯이 공격 대상이 될 수 있다. (ssh 도 필수로 바꾸는 것이 좋다. 22 -> 다른 포트)


# 캐시 비활성화

cache deny all 

캐시를 비활성화 했는데, 필요하면 삭제 또는 주석처리한다.


# 인증 모드

인증 모드는 digest 와 basic 이 있는데 설정은 위와 같다. 동시에 써도 되는지는 모르겠다.

암호파일 생성은 htpasswd / htdigest 를 사용한다.

사용법은

htpasswd -c /etc/squid3/squid3.basic.passwd {username}

htdigest -c /etc/squid3/squid3.digest.passwd proxy {username}

암호화는 digest 방식을 추천한다.


모두 설정이 완료되었으면 재시작해서 바뀐 설정을 적용한다.

service squid3 restart




# curl 에서는 다음처럼 사용한다. ( php 기준 설명 )

php curl 은 아쉽게도 digest 모드를 아직 지원안하는 듯 하다.

$proxyserv = '123.123.123.123:4128' ;
$proxyauth = 'username:password';


curl_setopt($ch, CURLOPT_PROXY, $proxyserv );

curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth );

위와 같이 써준다.

curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_DIGEST ); 

위 옵션이 되면 좋겠는데, 아쉽게도 현재는 안된다.( 현재는 CURLAUTH_BASIC , CURLAUTH_NTLM 만 지원)





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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

mysql 에서 mariadb 로 바꾼뒤 신규설치는 모두 mariadb 를 사용하고 있다.

내부 호스팅용으로 서버를 구축하는데, mariadb 를 설치하려 한다.

https://downloads.mariadb.org/mariadb/repositories/#mirror=kaist

를 사용.

기존에 하던 방식대로 하는데, 이번에는 뭔가 이상하다.

# apt-get install mariadb-server
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다      
상태 정보를 읽는 중입니다... 완료
몇몇 패키지를 설치할 수 없습니다. 요청한 상황이 불가능할 수도 있고,
불안정 배포판을 사용해서 일부 필요한 패키지를 아직 만들지 않았거나,
아직 Incoming에서 나오지 않은 경우일 수도 있습니다.
이 상황을 해결하는데 다음 정보가 도움이 될 수도 있습니다:

다음 패키지의 의존성이 맞지 않습니다:
 mariadb-server : 의존: mariadb-server-5.5 (= 5.5.42+maria-1~trusty) 하지만 %s 패키지를 설치하지 않을 것입니다
E: 문제를 바로잡을 수 없습니다. 망가진 고정 패키지가 있습니다.

이런식의 에러가 난다.

# apt-cache policy mariadb-server-5.5
mariadb-server-5.5:
  설치: (없음)
  후보: 5.5.42+maria-1~trusty
  버전 테이블:
     5.5.42+maria-1~trusty 0
        500 http://ftp.kaist.ac.kr/mariadb/repo/5.5/ubuntu/ trusty/main amd64 Packages
     5.5.41-1ubuntu0.14.04.1 0
        500 http://ftp.daumkakao.com/ubuntu/ trusty-updates/universe amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ trusty-security/universe amd64 Packages
     5.5.36-1 0
        500 http://ftp.daumkakao.com/ubuntu/ trusty/universe amd64 Packages

기본 패키지와 충돌이 나는 것일까?

그냥 5.5.36 으로 설치하면 괜찮을까?


기본 패키지로 깔아보니 잘 된다. 버전은 다음과 같다.

mysql  Ver 15.1 Distrib 5.5.41-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2




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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

서버를 변경하게 되었다. 

DNS 도 바꾸었는데, 해당 서버에 접속하는 외부의 특정서버에서 계속 구서버로 접속하는 문제가 있었다.

처음에는 /etc/hosts 등에 고정이 되었나 했는데, 아니다.

그리고 apache 가 그런 설정이 있나 체크해봤다. 아니다.

접속 부분이 php 의 curl 을 사용하고 있다.

curl 에서 혹시 DNS 캐시를 사용하나? 관련 부분을 찾아봤다.

아마도 관련된 옵션은 다음인 듯 하다. 

    curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE, false);

    curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 2);


해당 옵션을 넣어주니 해결이 되었다.(아마도 첫번째 옵션일 듯 하다)


특정서버의 설정에서 문제가 있는지, 다른 외부 서버들은 이상이 없었다.




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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

그동안 Digital Ocean 과 Linode 를 사용하고 있다.
내부 서비스에 작은 클라우드가 많이 필요해서 현재 수십대를 사용하고 있다.

둘다 별다른 불만은 없다.

좀더 다양한 지역분산 위해 VPS호스팅이 눈에 띄면 테스트 해보고 있다.


2016-07 월 특별 프로모션 중 

http://www.vultr.com/?ref=6923034-3B



몇개중에 vultr 이 눈에 띈다. http://www.vultr.com/?ref=6822762

vulture 의 줄임말인가? 뭐라 읽어야 하지? 벌쳐?

5$ 부터 시작한다. DO 보다 램이 조금 높다. 가격 우위에서 앞선다.


배포도 편하다. 일본지역이 있어서 좋다.
느낌은 DO 와 비슷하다. ssh key 등록도 되어 편하다.

성능은 배포해서 써보고 있는데, 무난한 것 같다.(뭐 기술적으로 비슷할테니...)

paypal 도 있고, 신용카드 결제도 가능핟.

bitcoin 으로도 결제 가능한 것이 특이하다.


프로모션 코드로 'SSDVPS' 를 입력하면 $20 credit 을 준다.(단, 1개월내에 소진해야 한다.)
언제까지 적용가능한지는 모르겠다.
신청하기 : http://www.vultr.com/?ref=6822762

5$ / 15$ plan 을 신청하고 1달써보고 테스트 해볼 예정이다.

검증해보고, 서비스로 쓸 만하다 싶으면, 서비스에 적용해야 겠다.



[기타 관련글]

가상서버들 간단한 사용기 - 스마일서브 / 디지털오션 / 벌쳐(vultr) 등

테스트 중인 가상서버 업체(USA)





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

트랙백  0 , 댓글  2개가 달렸습니다.
  1. 기프트코드 잘 썼습니다. 감사합니다..
  2. 포스팅해주신글 덕분에 vultr 를 알게되었습니다. 좋은 서버 호스팅 업체 추천해주셔서 정말 감사합니다..
    vultr 가입을 하면서 알게된 점인데, 최근에 생긴 도메인 같습니다.
    vultr.kr 으로 가입하면 $10~$200 프로모션을 받을 수 있더라구요.. 선결제 금액에 따라 차등으로 받으니까 적당히 크레딧 충전하시면 프로모션도 챙기실 수 있으니까 아마 블로그에서도 링크수정하신다면 방문자분들이 더 많은 혜택 누리실 수 있을 것 같습니다.

    최근에 $2.5 샌드박스 요금제가 출시되었고 1인당 2개까지만 구매 가능합니다.
    아쉽지만 현재는 재고 부족으로 구매가 불가능한 상황입니다.

    vultr 은 최근에 디도스 방어도 제공하고 있고, 일본 기준 10MB/s 속도 나올 정도로 10Gbps 속도가 매우 좋습니다. 요즘에는 다운도 안되구요. 정말 좋은 업체라고 생각합니다.
secret

우분투의 기본설정으로 모니터 자동끄기를 사용하고 있었다.

그런데, 어떤 이유인지 모니터를 2개연결하니 작동이 이상해졌다.

그래서 그냥 스크립트로 만들었다.(외국의 스크립트를 내 입맛에 맞게 부분 변경함)


시스템설정 > 키보드 > 단축키 에서 사용자 설정으로 다음 실행파일을 실행시키는 방법으로 한다.

#!/bin/bash
screenOffLockFile=/tmp/screen-off-lock
systemLockFile=/tmp/system-lock

if [ -f $screenOffLockFile ];
then
        rm $screenOffLockFile
        rm $systemLockFile
        notify-send "Screen on." -i /usr/share/icons/gnome/48x48/devices/display.png
else
        touch $screenOffLockFile
        sleep .5
        notify-send "Screen off now." -i /usr/share/icons/gnome/48x48/devices/display.png
        touch $systemLockFile
        sleep 1
        gnome-screensaver-command -l
        while [ -f  $screenOffLockFile ]
        do
                xset dpms force off
                if [ -f $systemLockFile ];
                then
                        sleep 30
                else
                        sleep 10
                fi
        done
        xset dpms force on
fi

난 안쓰는 Pause / Break 키를 단축키로 매핑시켰다. (본인 취향에 따라 )


gnome-screensaver-command -l  => 이 부분은 모니터를 끄면서 잠금모드로 변경하도록 했다.

30초단위로 모니터가 꺼진다.(시간단위도 본인에 맞게 조정)

계속 꺼지게 되므로 켜짐모드로 하려면 단축키를 다시 눌러준다.




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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

목적은 다음과 같다. A 서버가 SXX 서버들에 API 데이터를 전송을 하는데, 서버호스팅의 트래픽이 몰리는 문제가 있다. 그래서 트래픽을 분산하고자 한다.가능한 코드를 적게 고쳐서 분산을 하고 싶다.

A -> SXX 로 바로 보내는 것이 아니라,  A -> B(proxy) -> SXX 로 보내게 된다.
그래서 트래픽을 A / B 가 나누어서 나오게 된다.

SXX.domain.co.kr 으로 원래 가던 트래픽이 SXX.domain.kr 으로 쏴주면 proxy 를 거쳐 원래주소로 가게된다.(SXX.domain.kr 은 B 서버로 설정해준다)

B서버의 nginx 설정은 다음과 같다.

server {
        listen 80;
        server_name ~^(?<subserv>.+)\.domain\.kr$ ;
        location / {
                resolver 168.126.63.1 ;
                proxy_pass http://${subserv}.domain.co.kr ;
                proxy_set_header Host $subserv.domain.co.kr ;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

위와 같은 방식으로 해준다.


위 진한 부분의 resolver 를 주지 않으면 proxy_pass 의 ${subserv} 부분때문에 다음과 같은 에러가 난다.

2014/10/17 13:38:11 [error] 9577#0: *1 no resolver defined to resolve s13.domain.co.kr, client: 11.22.33.44, server: s13.domain.kr, request: "GET /aaa HTTP/1.1", host: "s13.domain.kr"
2014/10/17 13:40:44 [error] 15697#0: *1 no resolver defined to resolve s13.domain.co.kr, client: 11.22.33.44, server: ~^(?<subserv>.+)\.domain\.kr$, request: "GET /aaa HTTP/1.1", host: "s13.domain.kr"
2014/10/17 13:47:20 [error] 19726#0: *3 no resolver defined to resolve s13.domain.co.kr, client: 11.22.33.44, server: ~^(?<subserv>.+).domain.kr$, request: "GET /aaa HTTP/1.1", host: "s13.domain.kr"
2014/10/17 13:50:41 [error] 26918#0: *1 no resolver defined to resolve domain.co.kr, client: 11.22.33.44, server: ~^(?<subserv>.+)\.domain\.kr$, request: "GET /aaa HTTP/1.1", host: "s13.domain.kr"
2014/10/17 13:52:07 [error] 27502#0: *1 no resolver defined to resolve domain.co.kr, client: 11.22.33.44, server: ~^(?<subserv>.+)\.domain\.kr$, request: "GET /aaa HTTP/1.1", host: "s13.domain.kr"






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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

목적은 다음과 같다.

우분투 14.04 vino-server <==> ssh 터널링(putty) <==> 윈도우 vnc

이와 같은 목적으로 세팅을 했다. putty 에서 ssh 터널링 설정은 많으니 패스.

그런데, 윈도우에서 vnc 로 접속시 다음과 같은 메시지가 나온다.

Error in TightVNC Viewer: No security types supported. Server sent security types, but we do not support any of their.

tightvnc 먼저 테스트.

Unable to connect to VNC Server using your chosen security setting.
Either upgrade VNC Server to a more recent version from RealVNC, or select a weaker level of encryption.
혹시나 해서 realvnc. 둘다 마찬가지.


ssh 를 통과해서 security 관련 문제가 나타나는 듯 하다.

결국은 vino-server 대신 x11vnc 를 사용하기로 했다.

설치/설정 방법은 http://blog.1day1.org/561 를 참조한다.


x11vnc 로 바꾸고, 접속해보니 정상적으로 접속한다.




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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

우분투에서 vino-server 보다 x11vnc 가 나은듯 하다.

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 -xkb -repeat -many -bg -noxdamage -rfbauth /etc/x11vnc.passwd
   disable = no
}


여기서 조심할 항목은 /etc/x11vnc.passwd 의 암호를 지정하는 것이다.

x11vnc -storepasswd /etc/x11vnc.passwd


로 하면 암호를 물어보고, 해당 파일로 저장이 된다.

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

  -xkb -repeat  : shift 키가 안먹을때 넣어 준다.

  -auth {xauth} : ps wwwwaux | grep auth  명령으로 위치를 찾아준다.

/usr/bin/X -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch

ubuntu 14.04 에서는 위와 같다. lightdm 부분 /var/run/lightdm/root/:0 을 -auth 옵션뒤에 넣어준다.




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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

btrfs 를 사용하고 있는데, 아직 익숙하지 않은지, 뭔가 이상한 부분들이 있다.

virtualbox 가상머신을 사용하던중 프리징 되는 현상이 발생했다. 그냥 강제종료를 하니 이제 뜨지 않는다.ㅜㅜ


커널에러가 발생하는 듯 싶다. 커널호환이 안되는 것인가?

다음과 같은 커널에러가 발생한다.

# cat kern.log-btrfs-panic
[  115.018518] ------------[ cut here ]------------
[  115.018540] kernel BUG at /build/buildd/linux-3.13.0/fs/btrfs/ctree.c:3166!
[  115.018563] invalid opcode: 0000 [#1] SMP
[  115.018578] Modules linked in: pci_stub vboxpci(OF) vboxnetadp(OF) vboxnetflt(OF) vboxdrv(OF) snd_hda_codec_hdmi snd_hda_codec_realtek x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm crct10dif_pclmul crc32_pclmul ghash_clmulni_intel dm_multipath scsi_dh aesni_intel aes_x86_64 lrw gf128mul glue_helper snd_hda_intel snd_hda_codec ablk_helper snd_hwdep cryptd rts5139(C) snd_pcm arc4 btusb snd_page_alloc rtl8723ae rtl8723_common rtl_pci rtlwifi snd_seq_midi snd_seq_midi_event mac80211 joydev snd_rawmidi serio_raw snd_seq cfg80211 snd_seq_device lpc_ich nouveau i915 snd_timer ttm mei_me drm_kms_helper mei drm snd i2c_algo_bit soundcore bnep rfcomm bluetooth mxm_wmi msi_wmi sparse_keymap binfmt_misc wmi parport_pc video mac_hid ppdev lp parport hid_generic hid_logitech_dj usbhid hid btrfs libcrc32c raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx xor psmouse ahci raid6_pq libahci raid1 raid0 alx mdio multipath linear dm_mirror dm_region_hash dm_log
[  115.018939] CPU: 1 PID: 732 Comm: btrfs-endio-wri Tainted: GF        C O 3.13.0-35-generic #62-Ubuntu
[  115.018966] Hardware name: Micro-Star International Co., Ltd. CR42 2M/GE40 2OC/MS-1492, BIOS E1492IMS.30O 01/29/2014
[  115.018996] task: ffff880222c8e000 ti: ffff8800b9a04000 task.ti: ffff8800b9a04000
[  115.019018] RIP: 0010:[<ffffffffa00f1a31>]  [<ffffffffa00f1a31>] btrfs_set_item_key_safe+0x161/0x170 [btrfs]
[  115.019063] RSP: 0018:ffff8800b9a05b70  EFLAGS: 00010246
[  115.019079] RAX: 0000000000000000 RBX: 0000000000000004 RCX: 00000005e87b0000
[  115.019099] RDX: 0000000000000000 RSI: ffff8800b9a05c76 RDI: ffff8800b9a05b8f
[  115.019119] RBP: ffff8800b9a05bc8 R08: 0000000000000001 R09: ffff8800b9a05b90
[  115.019139] R10: 00000005e87b8000 R11: 00000000ffffffff R12: ffff8800b9a05b7e
[  115.019160] R13: ffff88003612a7e0 R14: ffff8800b9a05c76 R15: ffff880114d79680
[  115.019181] FS:  0000000000000000(0000) GS:ffff88022fa80000(0000) knlGS:0000000000000000
[  115.019204] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  115.019221] CR2: 00007f5d0c011088 CR3: 000000018e42b000 CR4: 00000000001427e0
[  115.019242] Stack:
[  115.019249]  ffff880035e61000 0118ffffa012a959 006c000000000000 1800000005e87b00
[  115.019274]  6c00000000000001 00000005e87b0000 ffff880114d79680 00000005e87b0000
[  115.019298]  0000000000000000 0000000000000ef7 ffff88003612a7e0 ffff8800b9a05cc0
[  115.019323] Call Trace:
[  115.019349]  [<ffffffffa0127ae1>] __btrfs_drop_extents+0x421/0xad0 [btrfs]
[  115.019374]  [<ffffffff810aafe2>] ? autoremove_wake_function+0x12/0x40
[  115.019406]  [<ffffffffa0128d10>] btrfs_drop_extents+0x60/0x90 [btrfs]
[  115.019435]  [<ffffffffa01188cc>] insert_reserved_file_extent.constprop.53+0x6c/0x290 [btrfs]
[  115.019467]  [<ffffffffa011e375>] btrfs_finish_ordered_io+0x2e5/0x570 [btrfs]
[  115.019495]  [<ffffffffa011e885>] finish_ordered_fn+0x15/0x20 [btrfs]
[  115.019523]  [<ffffffffa014219a>] worker_loop+0x15a/0x5c0 [btrfs]
[  115.019550]  [<ffffffffa0142040>] ? btrfs_queue_worker+0x310/0x310 [btrfs]
[  115.019572]  [<ffffffff8108b4a2>] kthread+0xd2/0xf0
[  115.019588]  [<ffffffff8108b3d0>] ? kthread_create_on_node+0x1c0/0x1c0
[  115.019608]  [<ffffffff8172ecbc>] ret_from_fork+0x7c/0xb0
[  115.019625]  [<ffffffff8108b3d0>] ? kthread_create_on_node+0x1c0/0x1c0
[  115.019644] Code: 48 8b 45 bf 48 8d 7d c7 4c 89 f6 48 89 45 d0 0f b6 45 be 88 45 cf 48 8b 45 b6 48 89 45 c7 e8 97 f2 ff ff 85 c0 0f 8f 48 ff ff ff <0f> 0b 0f 0b 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 55
[  115.019750] RIP  [<ffffffffa00f1a31>] btrfs_set_item_key_safe+0x161/0x170 [btrfs]
[  115.019779]  RSP <ffff8800b9a05b70>
[  115.029262] ---[ end trace 642f12bbe4eff1cc ]---


일단 마운트 해제하고, btrfsck 를 해본다.

# btrfsck --repair /dev/vg_data/lv_data
enabling repair mode
Checking filesystem on /dev/vg_data/lv_data
UUID: c5cd286a-980e-414e-b10a-aacbf5c5e449
checking extents
checking free space cache
cache and super generation don't match, space cache will be invalidated
checking fs roots
root 5 inode 280 errors 180, file extent overlap, file extent discount
found 18378234624 bytes used err is 1
total csum bytes: 58871948
total tree bytes: 193949696
total fs tree bytes: 48832512
total extent tree bytes: 58753024
btree space waste bytes: 45925595
file data blocks allocated: 3653029335040
 referenced 52821159936
Btrfs v3.12

뭔가 고치긴 한것 같다.


그런데, virtualbox 를 다시 실행해도 같은 에러가 발생한다.

커널버전을 낮춰볼까?



다시 체크를 해보니

# btrfsck /dev/vg_data/lv_data
Checking filesystem on /dev/vg_data/lv_data
UUID: c5cd286a-980e-414e-b10a-aacbf5c5e449
checking extents
checking free space cache
free space inode generation (0) did not match free space cache generation (57150)
free space inode generation (0) did not match free space cache generation (57150)
free space inode generation (0) did not match free space cache generation (57151)
free space inode generation (0) did not match free space cache generation (57150)
free space inode generation (0) did not match free space cache generation (57147)
free space inode generation (0) did not match free space cache generation (57134)
free space inode generation (0) did not match free space cache generation (56404)
free space inode generation (0) did not match free space cache generation (57135)
free space inode generation (0) did not match free space cache generation (26053)
free space inode generation (0) did not match free space cache generation (56713)
free space inode generation (0) did not match free space cache generation (57137)
free space inode generation (0) did not match free space cache generation (57139)
free space inode generation (0) did not match free space cache generation (57148)
free space inode generation (0) did not match free space cache generation (57097)
free space inode generation (0) did not match free space cache generation (56684)
free space inode generation (0) did not match free space cache generation (57124)
free space inode generation (0) did not match free space cache generation (56680)
free space inode generation (0) did not match free space cache generation (56646)
free space inode generation (0) did not match free space cache generation (57050)
free space inode generation (0) did not match free space cache generation (56697)
free space inode generation (0) did not match free space cache generation (56681)
free space inode generation (0) did not match free space cache generation (57078)
free space inode generation (0) did not match free space cache generation (57087)
free space inode generation (0) did not match free space cache generation (57118)
free space inode generation (0) did not match free space cache generation (57078)
free space inode generation (0) did not match free space cache generation (57107)
free space inode generation (0) did not match free space cache generation (57147)
free space inode generation (0) did not match free space cache generation (57097)
free space inode generation (0) did not match free space cache generation (57097)
free space inode generation (0) did not match free space cache generation (57140)
free space inode generation (0) did not match free space cache generation (57147)
free space inode generation (0) did not match free space cache generation (57083)
free space inode generation (0) did not match free space cache generation (52539)
free space inode generation (0) did not match free space cache generation (56699)
free space inode generation (0) did not match free space cache generation (57141)
free space inode generation (0) did not match free space cache generation (57088)
free space inode generation (0) did not match free space cache generation (57097)
free space inode generation (0) did not match free space cache generation (57055)
free space inode generation (0) did not match free space cache generation (57087)
free space inode generation (0) did not match free space cache generation (57097)
free space inode generation (0) did not match free space cache generation (56527)
free space inode generation (0) did not match free space cache generation (57097)
free space inode generation (0) did not match free space cache generation (47463)
free space inode generation (0) did not match free space cache generation (57081)
free space inode generation (0) did not match free space cache generation (57097)
free space inode generation (0) did not match free space cache generation (57097)
free space inode generation (0) did not match free space cache generation (57056)
free space inode generation (0) did not match free space cache generation (57141)
free space inode generation (0) did not match free space cache generation (57150)
free space inode generation (0) did not match free space cache generation (57150)
free space inode generation (0) did not match free space cache generation (57147)
free space inode generation (0) did not match free space cache generation (57147)
free space inode generation (0) did not match free space cache generation (57147)
free space inode generation (0) did not match free space cache generation (57147)

free space inode generation (0) did not match free space cache generation (57147)
free space inode generation (0) did not match free space cache generation (57070)
free space inode generation (0) did not match free space cache generation (57090)
free space inode generation (0) did not match free space cache generation (57148)
free space inode generation (0) did not match free space cache generation (57147)
free space inode generation (0) did not match free space cache generation (57147)
free space inode generation (0) did not match free space cache generation (57122)
free space inode generation (0) did not match free space cache generation (57147)
free space inode generation (0) did not match free space cache generation (57118)
free space inode generation (0) did not match free space cache generation (57147)
free space inode generation (0) did not match free space cache generation (57097)
checking fs roots
root 5 inode 280 errors 180, file extent overlap, file extent discount
found 45291307607 bytes used err is 1
total csum bytes: 58871948
total tree bytes: 193966080
total fs tree bytes: 48832512
total extent tree bytes: 58769408
btree space waste bytes: 45951279
file data blocks allocated: 3653012492288
 referenced 52804317184
Btrfs v3.12

이런 엄청난 메시지가..

btrfsck 로는 해결이 안되는 것 같다.

그냥 btrfs 를 버리고 ext4 로 해야겠다.
btrfs 의 데이터를 다른곳으로 옮기고, mkfs.ext4 로 다시 생성, 다시 복사. 끝.

ext4 로 바꾸고 다시 해보니 일단은 정상적인 듯 하다.

btrfs 는 문제해결능력을 더 키운후에 다시 도전해야 겠다.

data 는 그냥 바꾸면 되는데, root 는 어떻게 할지 고민해봐야겠다.
btrfs => ext4 로 바로 바꿔주는 방법을 찾아야 겠다.



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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

nginx 로 사이트를 운영중이다. 그런데 다음과 같은 에러가 나온다.

400 Bad Request

Request Header Or Cookie Too Large

nginx/1.6.1

무슨 문제일까?

설정값으로 바꿀 수 있을 것 같은데.


찾았다.

관련글 : http://wiki.nginx.org/HttpCoreModule#large_client_header_buffers

/etc/nginx/nginx.conf 등에 추가한다. http 또는 server 쪽에 넣어준다.

기본값은 4 8k

    large_client_header_buffers 4 16k;

16k 로 늘려줬다. 너무 늘리는 것은 좋지 않겠지.




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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

microSD 를 써보려고 하는데, exfat 으로 포맷되어 있다.

기본으로 설치된 ubuntu 에서 인식을 못한다.

우분투 14.04 에서는 공식패키지로 있다.(이전에는 PPA 를 사용했다)

# apt-get install exfat-utils
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다      
상태 정보를 읽는 중입니다... 완료
다음 패키지를 더 설치할 것입니다:
  exfat-fuse
다음 새 패키지를 설치할 것입니다:
  exfat-fuse exfat-utils
0개 업그레이드, 2개 새로 설치, 0개 제거 및 3개 업그레이드 안 함.
112 k바이트 아카이브를 받아야 합니다.
이 작업 후 304 k바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n]
받기:1 http://ftp.daum.net/ubuntu/ trusty/universe exfat-fuse amd64 1.0.1-1 [26.0 kB]
받기:2 http://ftp.daum.net/ubuntu/ trusty/universe exfat-utils amd64 1.0.1-1 [85.7 kB]
내려받기 112 k바이트, 소요시간 0초 (161 k바이트/초)
Selecting previously unselected package exfat-fuse.
(데이터베이스 읽는중 ...현재 353015개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../exfat-fuse_1.0.1-1_amd64.deb ...
Unpacking exfat-fuse (1.0.1-1) ...
Selecting previously unselected package exfat-utils.
Preparing to unpack .../exfat-utils_1.0.1-1_amd64.deb ...
Unpacking exfat-utils (1.0.1-1) ...
Processing triggers for man-db (2.6.7.1-1) ...
exfat-fuse (1.0.1-1) 설정하는 중입니다 ...
exfat-utils (1.0.1-1) 설정하는 중입니다 ...

exfat-utils / exfat-fuse 를 설치하면 된다.

재부팅 안해도 바로 인식한다.




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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

모바일에서 ssh 터널링을 해보자.

지난번에 icinga 모니터링(http://blog.1day1.org/547)을 세팅한후에 웹화면을 모바일에서도 보려고 한다.

그냥 공유기/서버에 포트포워딩을 할까 하다가 ssh 터널링으로 해보기로 한다.
PC 에서는 putty 등으로 터널링을 하면 된다.

모바일에서는 ConnectBot 이라는 앱을 이용한다.


# 서버 접속 설정(포트포워딩)

1) 하단 부분에 접속할 서버를 세팅한다 (계정@서버주소:포트 형식)


2) 생성된 리스트의 항목을 누르고 있으면 아래처럼 포트 포워딩을 할 수 있다.


3) 처음에는 비어있을 것인데 폰의 메뉴탭(또는 윈도우탭을 오래누르면 된다)을 누르면 포트를 추가할 수 있다.


4) Source Port 는 폰에서 접속할 포트. Destination 은 서버측의 IP:포트 가 된다.(ssh 터널링을 해봤으면 익숙 할 것이다)

위와 같이 설정후에 접속해보면 ssh 터널링이 연결되어 있을 것이다.

폰에서 모니터링 서버에 접속해서 볼 수 있게 된다. 그런데, 패스워드를 입력해야 한다.
공개키를 사용해서 바로 접속하도록 해본다.

# 공개키 사용하기

1) 공개키 관리 접속 및 설정.(폰의 메뉴키를 누르면 나온다.)


2) 서버키를 생성한다.(역시 메뉴키를 누른다) - Generate 는 새로생성.
  이미 키가 있다면 import 로 한다.


3) 아래 처럼 입력할 부분을 넣어준다.(난 암호를 비워놨다.)
   Generate 를 누르면 공개키를 생성하게 된다.


4) 아래처럼 나오면 파란 부분을 문질러주면 된다.


5) 생성이 된후에 공개키를 복사해서 메일같은 것으로 보낸후 서버에 추가해주면 된다.
  서버의 .ssh/authorized_keys 에 넣어주면 된다.


6) 설정후에 이 공개키를 서버접속시 사용하도록 한다.(서버 설정에서 Edit host 로 들어간다)
   Use pubkey authentication 를 누르면 설정했던 키가 나온다. 해당 키를 선택한다.

서버에 접속을 하면 바로 접속이 될 것이다.

접속한 후에 모니터링화면을 접속해본다.
localhost:8833 포트가 ssh 터널링을 통해 원격지 서버의 모니터링 포트로 접속해서 보여주게 된다.

공개적인 것이 아닌 경우 이런식으로 ssh 터널링을 하면 좋은 것 같다.
성능도 그렇게 나쁘지는 않은 것 같다.



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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

ssh 접속시 느린 현상이 간혹 발생한다.


접속이 느린 지점 확인

# ssh -v server

-v 옵션을 줘서 어느 부분에서 접속이 느린지 확인한다


방법1) DNS resolving 문제

서버측의 /etc/ssh/sshd_config 에서

UseDNS no

로 해준다.


방법2) GSSAPIAuthentication  인증 문제

ssh -v 로 확인해본다.

debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
No Kerberos credentials available

debug1: Unspecified GSS failure.  Minor code may provide more information
No Kerberos credentials available

debug1: Unspecified GSS failure.  Minor code may provide more information


debug1: Unspecified GSS failure.  Minor code may provide more information
No Kerberos credentials available

debug1: Next authentication method: publickey

위 진한 부분에서 느리다면.  서버측에서 GSSAPI 를 지원하면 해당 인증을 먼저 시도하는데, 클라이언트측에서 설정이 안되어 있어서 지연현상이 발생하는 듯 하다.

/etc/ssh/ssh_config ( sshd_config 가 아님 )

    GSSAPIAuthentication no

위 옵션을 no 로 바꿔준다.

서버 관리자가 아닌경우  ~/.ssh/config 에 넣어줘도 된다.




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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

ubuntu 14.04 의 byobu (screen) 가 ctrl-a 이 안 먹는다.

byobu 를 실행시키고 ctrl-a 를 눌렀을때

다음처럼 화면이 나올때 1/2 아무거나 입력해도 안되고 같은 화면만 나오는 문제가 있다.

직접 콘솔상에서 byobu-ctrl-a 를 해보면.

$ byobu-ctrl-a
failed to connect to server

Configure Byobu's ctrl-a behavior...

When you press ctrl-a in Byobu, do you want it to operate in:
    (1) Screen mode (GNU Screen's default escape sequence)
    (2) Emacs mode  (go to beginning of line)

Note that:
  - F12 also operates as an escape in Byobu
  - You can press F9 and choose your escape character
  - You can run 'byobu-ctrl-a' at any time to change your selection

Select [1 or 2]: 1

/usr/bin/byobu-ctrl-a: 151: /usr/bin/byobu-ctrl-a: Syntax error: Unterminated quoted string


위처럼 에러가 발생한다.

직접 byobu-ctrl-a 를 수정한다.

115                 case "$BYOBU_BACKEND" in
116                         screen)
117                                 $BYOBU_SED -i -e "/^register x /d" -e "/^bindkey \"^\"/d" -e "/^escape /d" "$keybindings"
118                                 echo "escape \"^${KEY}${key}\"" >> "$keybindings"
119                                 echo "register x \"^${KEY}\"" >> "$keybindings"
120                                 echo "bindkey \"^${KEY}\" >> "$keybindings"
121                                 $BYOBU_BACKEND -X at 0 source "$BYOBU_CONFIG_DIR/profile"
122                         ;;

120 라인부분을 보면  " => 가 빠져있다.

120                                 echo "bindkey \"^${KEY}\" >> "$keybindings"

120                                 echo "bindkey \"^${KEY}\"" >> "$keybindings"


수정 후 저장하고 다시 해보면 정상동작한다.

저 스크립트는 최종적으로. .byobu/keybindings.tmux 파일에 설정이 저장된다.

$ cat .byobu/keybindings.tmux
unbind-key -n C-a
set -g prefix ^A
set -g prefix2 ^A
bind a send-prefix

에러가 나서 계속 같은 화면이 나왔던 것이다.






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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

우분투(리눅스) 시스템을 운영하다보면, 파일이 생선된 후 오래된 파일이 계속 남아있는 경우가 있다.

그런 경우 해당 파일을 지워주지 않으면 디스크가 꽉 차거나 해서 시스템이 중단 될 수도 있다.


주의!!

파일을 일괄 명령으로 지우는 것이기 때문에 초보자는 가급적 하지 않거나, 가상머신 등에서 충분히 테스트 한 후에 사용하는 것이 좋습니다.


1. tmpwatch / tmpreaper 로 지우는 방법

이 방법은 전용프로그램을 이용하는 것이다.

tmpwatch - centos 쪽에서 주로 사용

tmpwatch -umcv --nosymlinks --all 48 /tmp

주요부분 설명

/tmp 디렉토리에서

48 : 시간단위 - 2일 지난 파일

--nosymlinks : 심볼릭 링크가 아닌 파일


tmpreaper - ubuntu 쪽에서 주로 사용

tmpreaper -cv 48h /tmp

설명 (tmpwatch 와 비슷함)


tmpreaper 의 문제점 - 보안상(?)의 이유인지.

tmpreaper 는 실행된 후 55초(기본값) 지난후 에 중지된다. 그런데, 중지된 이후에서 계속 프로세스에 남아있는다.
내가 테스트한 곳만 그런지는 모르겠지만,  뭔가 이상하다. 불안하다.




2. find 로 검색해서 삭제

find /tmp -mtime +2 -exec rm -vf {} \;

주요부분 설명

/tmp 디렉토리에서

+2 : 일단위 - 2일 지난 파일

-exec : 조건에 맞는 파일에 대해 실행 

-exec  ls -l {} \; => 등으로 먼저 테스트를 해보는 것이 좋음


우분투에서 tmpreaper 의 문제때문에 find 방식으로 바꿨다.




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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

ssh 를 사용할때 자주 사용하는 호스트는 config 에 설정해놓으면 편리하다

위치는 자신의 홈디렉토리/.ssh/config 파일이다.

형식은.

Host serv
    hostname serv.domain.kr
    User root
    Port 22
    IdentityFile ~/.ssh/github.key

Host 부분에는 짧은 문자로 적어준다.

Host serv s1

이런식으로 여러개를 적어도 된다.

서버관리를 위해 root 나 특정계정을 적어주면 된다.

직접

ssh serv.domain.kr 

명령을 내리면 현재 로그인상태의 계정으로 접속하게 된다.
관리할 서버들이 동일한 계정이면 상관없는데, 다른 경우가 대부분이라 매번

ssh user@serv.domain.kr

이런 형태로 적는 것은 불편하다.

port 도 마찬가지이다.

기본포트가 22 번이지만, Brute force 공격등을 방지하기 위해 포트번호를 바꾸는 것이 좋기 때문에 Port 번호도 config 에 지정해주면 편하다.


또한 패스워드 없이 바로 접속하기 위해 IdentityFile 을 지정해주는 것도 편리하게 ssh 를 사용하는 좋은 방법이다.
(물론 key 파일은 주의해서 관리한다.)




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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

btrfs 를 사용중이다.

df -i 를 해보면 inode 값이 0 이다.

원래 그런 것인가?


관련자료를 찾아본다.

http://www.nrtm.org/index.php/2012/03/13/the-joys-of-btrfs-and-opensuse-or-no-space-left-on-device/comment-page-1/

http://ubuntuforums.org/showthread.php?t=2039786


btrfs 에 대해 찾아보기로 한다.

http://ko.wikipedia.org/wiki/Btrfs

이글을 보면

동적 아이노드 할당

이라는게 있다. 아이노드 값이 정해져 있지 않다는 것인가? 그럼 0 값이 정상?

http://mirr.tistory.com/633

위 글에도 언급되어 있다.

좀더 테스트를 해봐야 겠지만, 문제가 되는 것은 아닌 듯 하다.




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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

윈도우 운영체제만을 사용하다가 리눅스(유닉스)/맥OS 를 사용하려는 분들이 제일 어려워 하는 부분이

파일(폴더)권한 permission 에 관한 것일 듯 하다. 그러나 개념을 한번 익혀놓으면 그리 어렵지는 않다.


윈도우만 쓰는 분들도 쇼핑몰,블로그 등을 운영하다 보면 호스팅을 사용하는 경우가 생긴다.
그러면 대부분 리눅스 운영체제의 호스팅을 사용하게 된다.

물론 호스팅을 사용하더라도 퍼미션에 관한 사항을 체크할일은 거의 없지만, PG 결제모듈을 연결하거나 할때 필요한 경우가 생긴다.

다음은 kcp 모듈의 실행권한이 필요한 파일예시이다. (console 을 주로 쓰긴 하지만, 익히기 쉽게 Filezilla 의 파일권한 메뉴를 통해서 본 화면이다)

크게 소유자권한 / 그룹권한 / 공개권한 이라는 것이 있는데, 주로 소유자/공개 부분을 유념해두면 된다.(그냥 동일하게 설정하거나...)

읽기 권한 : 해당 파일을 볼 수 있는 권한을 말한다. 텍스트 파일이면 편집기등을 통해 파일의 내용을 볼 수 있게 된다.
쓰기 권한 : 파일을 열어 내용을 수정할 수 있는 권한이다. 삭제도 포함된다.
실행 권한 : 파일을 실행할 수 있는 권한이다. 이 부분이 중요한데, 결제 모듈같은 경우 결제/결과보기 등을 해당 모듈(파일)을 실행해야 하는 경우가 있다.

위 그림에서 실행 권한을 체크해줘야 한다.

콘솔상의 명령은  

chmod 655 pp_cli

정도가 되겠다.
보통은  chmod 777 pp_cli / chmod 707 pp_cli 를 많이 사용한다.(보안등의 문제는 이 글에서는 생략한다)


그리고 폴더(디렉토리)의 권한은 파일과 비교해 동작이 약간 다른 부분이 있다.

읽기 권한 : 폴더내의 파일리스트를 볼 수 있는 권한이다.
쓰기 권한 : 폴더내에 파일을 생성할 수 있는 권한이다.
실행 권한 : 폴더로 이동(?)할 수 있는 권한이다.

결제 모듈등에서 또 중요한 부분이 있는데, 결제를 한 후 결과를 파일등에 로그를 남기는 경우가 있다.
kcp 같은 경우 log 폴더에 201406 등의 월별로 폴더를 생성하고 일별로 파일을 생성해 로그를 남긴다.
(다른 모듈 이니시스 / LGU+ 등도 비슷하다)

그래서 log 폴더는 쓰기/실행 권한을 주는게 좋다.

chmod 707 log  

의 명령으로 해준다.

Filezilla 를 사용한다면

위 처럼 777 전체로 줘도 되고, 그룹권한은 뺴고 줘도 된다.(보통의 웹호스팅 환경에는 비슷하다)

하위 디렉토리까지 변경 하려면 위의 하단부분 옵션을 체크해서 처리 해주면 된다.

콘솔 명령으로는 -R 옵션을 추가해준다.

chmod -R 707 log

이런 식이다.


초보자는 파일/폴더 권한에 대한 사항은 위 정도만 이해하고 있으면 무리없다.





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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

프로젝트 관리 - 이슈관리 로 레드마인(redmine) 을 사용하고 있다.

처음에는 직접설치로 연동하려고 했는데, 실패를 했다.(nginx 에 붙이려고 해서 그런가?)
괜히 엉뚱한 곳에 힘을 빼는니 bitnami 를 사용해서 설치했다.

https://bitnami.com/stack/redmine
다운받으면 (bitnami-redmine-2.5.1-1-linux-x64-installer.run) 이런식으로 파일을 받는데, 해당 파일을 실행시키면 알아서 설치한다.

설치위치는 보통 /opt/redmine-2.5.1-0/ 이다. (그사이 버전업이 되었나 보다 업그레이드를 해야겠네...)



자세한 설치방법은 생략. CKeditor 플러그인을 설치하고자 한다.

# CKeditor 플러그인 설치

프로젝트 위치 : https://github.com/a-ono/redmine_ckeditor

플러그인 위치는  {레드마인설치위치}/apps/redmine/htdocs/plugins 이다.

해당 폴더에서

# git clone https://github.com/a-ono/redmine_ckeditor.git

명령을 해주면 된다.

접속 에러가 나는 경우 zip 파일을 받아서 풀어줘도 된다.

# wget https://github.com/a-ono/redmine_ckeditor/archive/master.zip


# 첫번째 시도


# 두번째 시도



bitnami 의 실행스크립트  ./ctlscript.sh restart  로 재시작 해준다.


=> 실패. 뭔가 충돌이 나는 듯 함.





# CKeditor 편집기로 사용






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

트랙백  0 , 댓글  2개가 달렸습니다.
  1. 안녕하세요~ reminie 2.5.1에 ckeditor 붙이는거 혹시 성공 하셨나요?
  2. 비밀댓글입니다
secret


sublime text 3 에서 한글써보기 2번째

  => 지난 글에서는  ibus 를 사용하는 방법이었다.

그러나 미해결 부분도 있고, 뭔가 꼼수같아 보였다.

그러던 차에 unity 쪽의 문제인지 ibus 쪽의 문제인지 모르겠지만, 사용하다가 어떤 이유에 의해 데스크탑환경이 이상해지는 현상때문에 ibus 의 한영전환이 꺼지는(?) 문제가 있었다.

그래서 다른 입력툴을 찾았는데 nabi 와 fcitx 를 테스트 해봤다.

nabi 는 unity 에서 tray 에 넣는 방법이 복잡해보여 일단 패스하고 fcitx 를 사용하는 방법을 정리한다.(추후 nabi 도 테스트 해볼지는 모르겠다)


# sublime text 3 설치

자세한 것은 생략. 아직 베타이긴 하지만, 그냥 써도 될만큼 안정화 된 듯 하다. 2 보다 빠르니 3로 설치하는게 좋을 듯 함.

http://www.sublimetext.com/3 에서 배포판에 맞는 파일을 다운받아 설치(압축해제) 하면 된다.

ubuntu 64bit 버전을 다운받았다.
http://c758482.r82.cf2.rackcdn.com/sublime_text_3_build_3059_x64.tar.bz2

적당한 곳에 압축을 풀고 PATH 를 지정해주면 된다.

~/bin 폴더에 symbolic link 를 해주면 편하다.

ln -s  {설치폴더}/sublime_text ~/bin/sub

터미널에서  sub file.txt  형태로 바로 열수 있다.


# fcitx 설치

apt-get install fcitx-hangul

만 해주면 추가되는 패키지는 알아서 같이 설치해준다.

기본 패키지가 살짝 버전이 낮아서 다음 저장소의 패키지를 사용한다.
https://launchpad.net/~createsc/+archive/3beol/?field.series_filter=raring

sudo add-apt-repository ppa:createsc/3beol
sudo apt-get update
sudo apt-get install fcitx fcitx-hangul


# sublime text 3 에서 한글입력이 가능하도록 처리 (sublime-text-imfix 사용)

1. https://github.com/lyfeyaj/sublime-text-imfix 에서 소스를 다운 받는다.

git clone https://github.com/lyfeyaj/sublime-text-imfix.git

   다운받은 다음 위치 sublime-text-imfix/src 파일 내에 sublime-imfix.c 를 컴파일 하면 된다.

  - 컴파일 사전 준비

    # sudo apt-get install build-essential  libgtk2.0-dev

 - 컴파일

# gcc -shared -o libsublime-imfix.so sublime-imfix.c  `pkg-config --libs --cflags gtk+-2.0` -fPIC

위 libgtk2.0-dev 를 설치하지 않으면 다음과 같은 에러가 발생한다.

Package gtk+-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-2.0' found
sublime-imfix.c:9:21: fatal error: gtk/gtk.h: 그런 파일이나 디렉터리가 없습니다
#include <gtk/gtk.h>
                     ^
compilation terminated.

2. 컴파일이 어려우면 git clone 위치에 lib 에 컴파일된 버전이 있다. 그것을 사용해도 된다.


위 핵심은 libsublime-imfix.so 를 먼저 로딩후에 sublime text 3 를 실행시키는 것이다.


관련 스크립트를 다음과 같이 만들면 된다.

$ cat sublimetext3fcitx


#!/bin/bash
export LD_PRELOAD=/opt/sublime_text_3/lib/libsublime-imfix.so
exec /opt/sublime_text_3/sublime_text "$@"

sublime text 의 위치는 본인이 설치한 위치로 지정하면 된다.


# unity dock 에 넣는 것은 다음을 참조 (http://blog.1day1.org/486)

파일내용을 다음과 같이 했다. ( $ cat sublime_text.desktop )

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=Sublime Text 3
Icon=sublime_text.png
Exec=/opt/sublime_text_3/sublimetext3fcitx
StartupNotify=false
StartupWMClass=Sublime_text
OnlyShowIn=Unity;
X-UnityGenerated=true

위 파일을 unity panel (dock?) 에 넣고 실행시켜보면 ST3 가 뜬다. 한영전환 / 한글입력이 잘 되는지 확인해본다.





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

트랙백  1 , 댓글  5개가 달렸습니다.
  1. 감사합니다
  2. 감사합니다.
    그런데 저는 한글입력할때 예를들어 '가나' 을 쓴다고하면
    ㄱ 가 간 가나 이렇게 되지 않고 한 글자씩 넘어갈때마다 에디터에 입력되네요

    큰 불편함은 없지만 뭔가 이상해서... 원래 이런가요?
  3. 고맙습니다!
    큰 도움 되었습니다.
    제 블로그에도 링크를 걸어놓았습니다.
  4. 비밀댓글입니다
secret

ubuntu 에서 플래시 와 자바에 대한 설정을 해줘야 한다.

플래시 플러그인이 좀더 많이 사용되긴 하다. 자바를 사용하는 경우가 가끔있다.

oracle 의 java 를 설치하려면 다음 패키지를 사용한다.


  add-apt-repository ppa:webupd8team/java

  apt-get update

  apt-get install oracle-java8-installer 


설정후 브라우저에서 자바를 띄우려할때(애플릿) 보안 설정등으로 실행이 안되는 경우가 있다.

그런경우 jcontrol 을 실행시켜서 관련 설정을 해준다.

보안레벨을 중간(최하)로 하는 것 보다  "사이트 목록 편집" 에서 허용하려는 사이트를 추가 해주는 방식이 좋을 듯 하다.(선택은 알아서)






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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

sublime text 3 환경에서는 그냥 UTF-8 을 기본으로 사용하는 것이 편하다.

간혹 euc-kr 파일을 편집할 필요가 있는 경우 convertToUTF8 패키지를 설치해 해결한다.

혹시 설치 후 다음과 같은 에러를 만나면(우분투/맥OS 에만 해당하는 듯 하다)

Oops! The file {열려고하는 파일} is detected as EUC-KR which is not supported by your Sublime Text.

Please check whether it is in the list of Python's Standard Encodings (http://docs.python.org/library/codecs.html#standard-encodings) or not.

If yes, please install Codecs33 (https://github.com/seanliang/Codecs33/tree/linux-x64) and restart Sublime Text to make ConvertToUTF8 work properly. If it is still not working, please kindly send the following information to sunlxy#yahoo.com:
====== Debug Information ======
Version: 3059-x64
Platform: Linux-3.13.0-27-generic-x86_64-with-debian-jessie-sid
.........
Encoding: EUC-KR

관련이슈 : https://github.com/seanliang/ConvertToUTF8/issues/36


그냥 package control 에서 Codecs33 패키지를 설치해주면 끝.



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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

우분투에서 어느 정도 한글을 쓰는데는 별 문제는 없다.

그런데, 이번에 sublime text 3 로 이전하면서 한글사용에 문제가 많다.
윈도우 / 맥OS 에서는 잘 되는 듯 싶다. 아무래도 제일 사용자가 적다보니 개발이슈에도 우선순위가 밀려나는 것 같다.

스스로 해결해야지.


# input helper 패키지.

sublime text 3 에서 패키징 방식이 좀 달라진 것 같다.

{HOME} / .config/sublime-text-3/Installed Packages

내에 zip 파일 형태로 바뀐 것 같다.

package control 으로 설치하면 InputHelper.sublime-package 가 해당 폴더에 저장된다.

저 파일을 zip 파일로 풀어서  {HOME} / .config/sublime-text-3/Packages/InputHelper 폴더로 복사한다.

실행시 다음과 같은 에러가 나오면 ( ST3 의 ctrl-` 를 해보면 보인다)

Traceback (most recent call last):
  File "..../sublime_plugin.py", line 549, in run_
    return self.run(edit)
  File "{HOME}/.config/sublime-text-3/Packages/InputHelper/inputhelper.py", line 21, in run
    proc = subprocess.Popen(args, stdout=subprocess.PIPE)
  File "X/subprocess.py", line 818, in __init__
  File "X/subprocess.py", line 1416, in _execute_child
PermissionError: [Errno 13] Permission denied

InputHelper/lib 폴더의

chmod 777 linux_text_input_gui.py

실행권한을 준다.

=> 여기까지 해주면 일단 동작에 이상이 없다.

새로운 창이 떠서 입력하는 것이라 불편하긴 하다. 익숙해지면 괜찮긴 하다.


# sublimeibus 패키지 (아직 미해결)

github 에서 다운로드 받아서 설치해야 한다.

# git clone https://github.com/chikatoike/SublimeIBus.git 

받은 파일을 역시 Packages/ 폴더로 복사한다.

ST3 을 실행 후 검정화면으로 먹통이 된다면 다음 패키지 중에 빠진 것이 있을 것이다. 설치해준다.

# apt-get install python-ibus python-dbus python-xlib

보통 python-xlib 가 빠져있을 것이다.


실행까지는 되는데, 다음과 에러가 있어서 작동하지 않는다. (미해결)

sublime-ibus-agent.py: error expr: disable(0)

sublime-ibus-agent.py: Traceback (most recent call last):
  File "{HOME}/.config/sublime-text-3/Packages/SublimeIBus/sublimeibus/sublime-ibus-agent.py", line 575, in __stdin_cb
    exec(expr)
  File "<string>", line 1, in <module>
  File "{HOME}/.config/sublime-text-3/Packages/SublimeIBus/sublimeibus/sublime-ibus-agent.py", line 512, in disable
    imcontexts[id_no].disable()
AttributeError: 'IBusELInputContext' object has no attribute 'disable'

좀더 연구해봐야 겠다.

추후 해결되면 추가 포스팅.





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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

우분투 13.10 에서 init 스크립트가 자동실행되는 것을 방지하고자 한다.

기존에는 /etc/init.d 에 실행파일이 넣고, /etc/rcX.d 의 각 런레벨(X)에 해당하는 폴더에 S30mysql 이런식으로 symbolic 링크하는 방식이었다. (sys-v 방식인가?)

ln -s /etc/init.d/mysql /etc/rc2.d/S30mysql

또는

update-rc.d mysql defaults
update-rc.d -f mysql remove


그런데, 언제부터인가 ubuntu 에서 /etc/init 폴더에 mysql.conf 파일을 넣고, 해당파일에

start on runlevel [2345]
stop on starting rc RUNLEVEL=[016]

이런식으로 실행할 runlevel 을 지정해서 자동실행하도록 했다.(upstart 방식? systemd?)

우분투에서 두가지 다 혼용해서 쓰고 있다.

/etc/init/mysql.conf 를 부팅시 자동실행되지 않게 하고자 한다.

echo 'manual' > /etc/init/mysql.override

위 처럼 XXX.override 파일을 만들어주면된다. 내용은 manual 을 넣어준다.


좀 복잡할 수 있지만, 위 사항만 기억하면 된다.



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

트랙백  0 , 댓글  0개가 달렸습니다.
secret

# 우분투(리눅스) 에서 하드용량이 없다고 나오는 문제(No space left on device)

다음과 같은 문제가 발생하는 경우가 있다.

# touch /tmp/check
touch: cannot touch `/tmp/check': No space left on device

파일을 생성하는 명령을 내렸을때 용량이 없다는 메시지가 나온다.

하드용량을 확인해보면.

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       19G  3.0G   15G  17% /
udev            236M  4.0K  236M   1% /dev
tmpfs            98M  180K   98M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            245M     0  245M   0% /run/shm
none            100M     0  100M   0% /run/user

아직 용량은 충분한데 이상하다.

# df -i
Filesystem      Inodes   IUsed IFree IUse% Mounted on
/dev/xvda1     1253376 1253376     0  100% /
udev             60266     385 59881    1% /dev
tmpfs            62675     261 62414    1% /run
none             62675       2 62673    1% /run/lock
none             62675       1 62674    1% /run/shm

none             62675       1 62674    1% /run/user

바로 inode 의 갯수가 꽉 찬것이다.

분명히 어딘가에서 너무 많은 파일이 등록이 되어 있는 것이다.


범인을 찾아라.

# for i in /home/*; do echo $i; find $i |wc -l; done

=> 해당 위치를 찾아라.

# for dir in *; do [ -d "$dir" ] && echo "$dir" && find "$dir" | wc -l; done

둘다 명령은 동일.(디렉토리를 지정하거나 현재디렉토리를 기준)
의심되는 위치를 위 명령으로 해본다.

결과

session
1194823

=> 찾았다 범인.

너무 많은 세션파일이 생성되어 하드 용량이 남았어도 inode 갯수가 꽉 차서 더이상 파일을 생성할 수 없게 된 것이다.

저 파일들을 정리해주면 된다.

파일이 너무 많으니 rm -rf session 등으로 해주는게 좋다.(각자 알아서)

정상.

# df -i
Filesystem      Inodes IUsed   IFree IUse% Mounted on
/dev/xvda1     1253376 58729 1194647    5% /
udev             60266   385   59881    1% /dev
tmpfs            62675   261   62414    1% /run
none             62675     2   62673    1% /run/lock
none             62675     1   62674    1% /run/shm
none             62675     1   62674    1% /run/user

 => 이제 정상으로 나온다.




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

트랙백  0 , 댓글  0개가 달렸습니다.
secret