'개발'에 해당되는 글 89건
- 2008/08/05 proftpd 에서 업로드시 파일생성 시간이 틀릴때.
- 2008/07/30 역시나 svn 이 있어야 해.
- 2008/07/26 초간단 PHP, eclipse 개발환경 (aptana , sftp)
- 2008/03/25 리눅스의 하드(HDD)에러 메세지들은 무슨의미일까?
- 2008/03/25 우분투 dapper 버전에서 바로 gutsy 로 업그레이드는 힘들다.
- 2008/03/17 서버(데스크탑)의 네트웍인터페이스(랜카드)를 교체하면... (우분투,ubuntu)
- 2008/02/19 ubuntu gutsy 에서 한글입력기(SCIM , nabi) 오작동 문제
- 2008/02/10 mysql 4.0.x -> mysql 4.1 업그레이드시 오류 해결 방법(1)
- 2008/02/04 서브버전(Subversion , SVN) 을 사용하기 위한 몇가지 방법
- 2008/02/01 mysql DB 덤프시 database 별로 개별 파일로 덤프받기(shell script)
업로드시에 파일생성 시간이 로컬과 틀릴때 옵션에 해주어야 할 것.
TimesGMT off
SetEnv TZ :/etc/localtime이렇게 해주면 로컬시간과 같아진다.UTF-8 로 바꾸는 것은 서버를 갈아엎을때 해야 겠다. ^^;;;
1. 기존에 서비스 되고 있는 곳의 서버에 sftp 로 접속해서 파일(프로그램)을 수정하기는 좋다.
2. 그런데, 기존 프로젝트를 올리거나, 파일을 이동하거나 하는 등의 관리가 너무 불편하다.
(파일관리는 전용프로그램을 따로 써야 할 정도로 불편하다)
3. 그냥 직접 수정하기위해 쓰는 용도로 사용해야 겠다.
역시나 svn 이 필요하겠어.
비교적 설정이 쉬운 svn+ssh 방법을 쓸 예정.
aptana 에서 바로 subclipse 를 지원하는구나!(짱! aptana)
따로 정리는 하겠지만, subclipse 의 svn 설정방식은 다음과 같다.
svn+ssh://{UserID}@{svn repository Server IP or Domain}:{ssh port}/{Repository Full Path}이런형태로 하면 된다.
svn+ssh://taemy@svn.taemy.com/home/taemy/svn/sample이런식
ssh 포트를 기본포트인 22 번 이외의 포트를 쓴다면
svn+ssh://taemy@svn.taemy.com:5522/home/taemy/svn/sample이상.
따로 eclipse(aptana) + svn(subclipse) 에 대한 설정을 할지는 모르겠다.
너무 간단해서 ^^
# 추가
음. svn+ssh 가 서버측에 ssh 만 되면 될 줄 알았는데, svnserve 도 실행가능해야 하나보다.
서버담당자에게 깔아달라고 하기는 무리가 있을 듯 싶다.
저거 이외에도 더 필요할 수도 있으니... 흠.
여의치 않으면 로컬에 설정해서 사용해야 겠다.
근데, 이거 괜찮아 보인다.(http://kldp.org/node/95403)
윈도우용은 거의 TortoiseSVN (다른 놈은 있는지도 모르겠군)
aptana 를 쓰면 한방에 해결.
1. JRE 가 필요하다.
eclipse 는 java 기반이라 JRE 가 필요하다.
자바개발환경이 아니니, JSDK 까지는 필요없고, JRE 만 있으면 된다.
http://java.sun.com/javase/downloads/ 에서
"Java Runtime Environment (JRE) 6 Update 7" 를 다운받고 설치.
2. Aptana 를 설치.
http://www.aptana.com/studio/download : aptana studio 를 설치한다.
자신의 환경에 맞는 파일을 다운 받는다. 참고로 설치가 필요없는 zip 버전을 다운 받았다.
다운 받은 파일을 적당한 위치에 압축을 푼다. 해당폴더의 AptanaStudio.exe 파일을 실행한다.
3. PHP 플러그인 설치
처음 실행하면 Aptana Start Page 라고 나온다. 플러그인 PHP 부분의 'install' 을 눌러 설치한다.
4. SFTP 플러그인 설치. (Secure FTP)
플러그인 좀 설치해봤다. 라는 사람에게는 굳이 설명할 필요는 없겠죠.
sftp 업데이트 Site URL 을 http://update.aptana.com/install/sftp_deprecated/3.3 로 하면 됨.
그래도 설명하자면.
5. SFTP 설정.
ftp 는 기본으로 지원한다. sftp 는 위처럼 플러그인을 깔아야 한다.
( 왜! ftp 안쓰고 sftp 쓰느냐는 묻지마세요. telnet 안쓰고 ssh 쓰는 이유라는 짧은 답이 나갑니다. )
클릭클릭해보면 되지만, 자세한 설명을 보고 싶다면...
SVN 을 쓰고 싶은데, 서버환경이 안되서 SFTP 로 만족하며 쓸려고 설정함.
SVN 한번 해달라고 졸라보고, 해주면 SVN 으로 다시 설정해서 쓸지도 모름.
zend framework 를 하기 위해 기본환경 세팅(이런 세팅도 지겹지. ㅜㅜ , aptana 가 있어 쉽게. 고맙다 aptana)
Trackback : http://devlog.experlab.com/trackback/445
-
eclipse 와 sftp sync 용 플러그인...
| 2008/12/12 19:24
며칠간 여러가지 툴을 사용해봤는데... 단연 Aptana Studio 에서 제공하는 sftp 플러그인이 완벽하였다. 하나의 프로젝트에 SVN(subversion)과 함께 sftp를 이용한 sync가 가능했다. 즉, 이클립스와 별도의 SFTP어플리케이션을 사용하지 않고, Aptana Studio 에서 제공하는 플러그인으로 다음과 같은 개발환경이 이클립스 하나로 구축되었다. 1. 배포사이트에 레포지터리에서 svn으로 소스를 받아서 수정하고, 2. sft..
서버운영을 할때는 더욱더 문제가 된다. 왜냐 바로 서비스중지를 뜻하기 때문이다.
배드섹터 같은 부분적인 에러도 있고, 파티션 접근 불가.
하드 컨트롤러 I/O 에러 등 정말 다양하다.
이런 하드웨어 에러는 어떻게 방법이 없다. (새것으로 교체하는 것이 상책이다.)
그런데, 리눅스의 하드관련 에러는 어떤 것들이 있을까?
(공식적인 문서가 있는지는 아직 찾지 못했다. 경험 및 검색자료를 바탕으로 정리한다)
에러메시지 #1
ata1: translated ATA stat/err 0x51/40 to SCSI SK/ASC/ASCQ 0x3/11/04
ata1: status=0x51 { DriveReady SeekComplete Error }
ata1: error=0x40 { UncorrectableError }sd 0:0:0:0: SCSI error: return code = 0x8000002
sda: Current: sense key: Medium Error
Additional sense: Unrecovered read error - auto reallocate failed
end_request: I/O error, dev sda, sector 64702406
* http://kldp.org/node/89071
* http://kerneltrap.org/node/8220
[이유] : 배드블럭(배드섹터) 인 경우가 대부분인듯.
[해결책] : 배드블럭을 체크하고, 파일시스템을 만들때 배드블럭은 피해서 만든다.
badblocks -v o hda1_bad_blocks /dev/hda1배드블럭이 많이 생긴경우 교체해서 사용하는 것이 좋을 것이다.
mkfs.ext3 -l hda1_bad_blocks /dev/hda1
(시스템용으로는 피하고 데이터용으로 사용하는 것이 좋을 듯)
[기타] : 리눅스 시스템이 민감해서 인지, 저런 배드블럭이 발생했을때(/var 파티션에서 발생)
시스템이 동작하지 않는 상황이 발생했다.
하드에러가 발생해 /var 파티션을 read-only 로 바꿔서, 쓰기작업을 못해서(log) 그런것이었다.
왜 /var 파티션을 나눠놓는 것을 권장하는지 알것 같다.
에러메시지 #2
dma_intr: status=0x51 { DriveReady SeekComplete Error }* http://kerneltrap.org/node/8220#comment-259389
dma_intr: error=0x84 { DriveStatusError BadCRC }ide: failed opcode was: unknown
* http://forums.gentoo.org/viewtopic.php?t=37451
* dma 세팅은 하드 수명을 단축시키는가?
* DMA 옵션을 조정해 본다.( http://www.goldfisch.at/knowledge/316 )
[이유] : Bad block , hdparm DMA 세팅오류? 케이블 이상. UDMA 지원하는 케이블 등의 이유.
[해결책] : hdparm 조정 - http://gentoo-wiki.com/HOWTO_Use_hdparm_to_improve_IDE_device_performance
hdparm -iv /dev/hda 을 해보면
DMA modes: mdma0 mdma1 mdma2이런 부분이 있다.( * 체크된 부분이 현재 설정된 모드 )
UDMA modes: udma0 udma1 udma2 udma3 *udma4 udma5
UDMA 지원은 BIOS , 하드드라이브, 운영체제, 케이블 등 잘 맞추어져야 한다.
나의 경우 위의 에러가 발생했을때 hdparm 를 체크해보니,
DMA modes: mdma0 mdma1 mdma2처럼 되어 있었다. UDMA100(udma5) 까지 지원하는데도 불구하고, 게다가 (*) 로 체크도 되어 있지 않았다.
UDMA modes: udma0 udma1 udma2
위 문제는 케이블을 교체한 후에 이상없이 잘 쓰고 있다(바꾼지 얼마되지 않아, 아직 체크중이다)
[기타] : 참고로 SATA 하드는 hdparm 로 조정할 수 없다. 대신 sdparm 가 있다.(옵션은 좀 다르다.)
에러메시지 #2a
#2 와는 좀 다른 메세지.( http://www.mail-archive.com/linux-newbie@vger.kernel.org/msg06860.html )
hdb: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hdb: dma_intr: error=0x10 { SectorIdNotFound }, LBAsect=39102336, sector=39102336
ide: failed opcode was: unknown>> hdb: dma_intr: error=0x10 { SectorIdNotFound }, LBAsect=39102336, sector=39102336
두번째 부분 차이.ps. 기타 에러들도 정리할 예정.(상황이 나타날때마다)
https://help.ubuntu.com/community/HardyUpgrades
번거롭게 dapper -> edgy -> feisty -> gutsy -> hardy 로 업그레이드 할 필요는 없겠다.
지난글에 dapper 에서 gutsy 나 hardy 로 업그레이드 하려고 했다.
vmware 에서 테스트를 해보니, 업그레이드 후에 문제가 생겼다.
몇가지 패키지들이 이상하고, locale 의 사용방법이 틀린듯 하다.
결정적으로 업그레이드 후에 콘솔에 에러메시지가 끊임없이 계속나온다(커널에러)
바로 dapper 에서 gutsy 로 가지 않고, dapper -> edgy -> feisty -> gutsy 의
방법으로 업그레이드를 해야 할 듯 하다.
https://help.ubuntu.com/community/UpgradeNotes
의 권장방법으로 업그레이드 할 예정이다.
최신방법(update-manager-core)은 직접적으로 안되나 보다.(edgy 부터 지원하는 듯)
apt-get install update-manager-core순서대로 하는 방법으로 하는 것이 최선일 듯 하다.(그렇지만, 너무 긴 여정이다)
do-release-upgrade
# 기존에 업그레이드 하던 방식.
/etc/apt/sources.list 의 저장소를 바꾸고위 방법은 ubuntu 측에서 권장하지 않는 사항이다.
apt-get update
apt-get dist-upgrade
dapper 까지는 별 탈 없이 잘 사용했다.(hoary -> breezy -> dapper )
1) dapper -> feisty 를 먼저 시도해보고, 이것도 안되면 edgy 부터 차례로.
그러고보니, edgy 지원기간이 08년4월까지기 때문에 dapper->feisty 업그레이드가 안된다면
4월에 모두 업그레이드 해야 한다는 말이네.
hardy 정식버전이 나오면 LTS 버전간의 업그레이드를 지원해주려나?
나같이 LTS 버전을 주 사용으로 하는 사람이 꽤 있을 듯 한데.(아닌가? ^^)
2) 일단 dapper -> feisty 로 업그레이드 하는데,
gutsy 때의 패키지 문제는 비슷해 보였지만, 오류메시지는 보이지 않는다.
edgy 를 뛰어 넘고 업그레이드 해도 될지는 좀더 테스트 해봐야 겠다.
[apache2 package 에서 문제]
업그레이드 중에 apache2-common 과 apache2.2-common 이 충돌이 생겨 중지가 되는데
일단 apache2-common , apache2-mpm-prefork , libapache2-mod-php5 , php5 등을
삭제했다가 나중에 다시 설치하면 된다.
그런데, init script 에 변화가 있는듯 하니, /etc/init.d/apache2 , /etc/apache2 를 이름을 바꾸거나,
삭제한후 설치하는 것이 좋을 듯 하다.(업그레이드시에 보통 이전 설정파일을 그대로 쓴다)
3) 드디어 feisty -> gutsy 로 업그레이드.
이 방법으로 해보려는데, 잘 안된다. (No new release found)apt-get install update-manager-core
do-release-upgrade
do-release-upgrade -d 로 하니 되긴 하는데, 맞는것인지는 모르겠다.(정확한 동작방식이 어떻게 되지?)
업그레이드가 정상적으로 진행되고, 재부팅. 그런데, 콘솔의 tty 가 열리지 않는다. 왜지?
부팅메시지에 이런게 있다.
init:/etc/event.d/tty1:16: Unknown stanza해당위치의 파일(/etc/event.d/tty1) 을 열어보면, 끝부분이 이상한 것을 알 수 있다.
init:/etc/event.d/tty2:16: Unknown stanza
init:/etc/event.d/tty3:16: Unknown stanza
init:/etc/event.d/tty4:16: Unknown stanza
init:/etc/event.d/tty5:16: Unknown stanza
init:/etc/event.d/tty6:16: Unknown stanza
respawn처럼 나와 있다.
/sbin/getty/38400 tty1exec /sbin/getty 38400 tty1
respawn이렇게 고친다. tty1 ~ tty6 까지 고쳐줘야 한다.
exec /sbin/getty 38400 tty1
아! 로그인을 못하는데, 어떻게 고치냐고? ( ssh 등으로 원격접속은 가능하다. ssh 는 꼭 열어놓기를.)
dapper -> gutsy 업그레이드시 콘솔에 엄청나게 뿌려대는 에러는 없었다.
4) 긴여정이었지만, dapper -> feisty -> gutsy 로 edgy 를 뛰어넘고 업그레이드 가능하다
다른 것들도 이렇게 업그레이드 해야 겠다.
Hardy LTS 버전은 dapper LTS 버전에서 바로 업그레이드 하는 방법을 제공하면 좋겠다(정말, 꼭)
어떻게 될까?
1. 네트웍이 잘 된다.
2. 어! 네트웍이 먹통이네, eth0(eth1) 이 안올라온다.
둘 중에 하나일 것이다.
우분투 dapper 버전 과 gutsy 버전에서는 네트웍이 안된다.
정확한 원인이 아닐지 모르지만, 설정파일을 수정해 주어야 한다.
# dapper 의 경우
/etc/iftab 에 랜카드의 맥어드레스와 eth0 , eth1 등의 인터페이스명(?)으로 지정된다.
즉, 랜카드를 교체하면 원래값과 달라지기 때문에 먹통이 된다.
# gutsy 의 경우.
gutsy 는 iftab 설정파일이 없어졌다.
그런데, 비슷하게.
/etc/udev/rules.d/70-persistent-net.rules 에 기록이 된다.
이미 eth0 를 잡았다가, 다른 랜카드로 바꾸면 eth0 로 다시 설정하지 않고, eth1 으로 설정해 버린다.
그래서 /etc/network/interfaces 에 eth0 로 설정되어 있다면 안되는 것이다.
두 설정 파일중 하나를 수정에 맞추어 주면 제대로 동작한다.
그런데, 한글입력기가 정상작동하지 않고 가끔 오작동을 한다.
로그인후에 tray(트레이, 패널?) 에 아이콘이 나타나지 않아서,
따로 세션(시작프로그램)에 등록해서 띄워서 사용했다.
오작동이란 것이 간혹 터미널이나 Firefox 등에서 한영전환이 안되고 입력도 안된다.
또는 입력자체가 안되다가 화면전환을 해서 잠시후에
다시 터미널에 와보면 입력했던것이 나중에 쏟아져서(?) 입력되는 현상이 발생한다.
그런 현상자체가 일관성이 있는 것이 아니고, 여러가지가 복합적으로 온다.
그 이유를 virtualbox , vmware 의 가상머신과 충돌이 일어나는 것으로 생각하고 있었다.
(아직 정확한 판단이 서지않아 이것도 추후 테스트를 해 볼예정)
그런데, 현재 떠 있는 프로세스를 봤는데(ps ax) , scim , nabi 등이 각각 두개의 프로세스가 띄워져 있는 것이었다.
실행시 tray 에 뜨지 않기는 하지만, 실행은 되고 있었던 듯 하다.
그 상태에서 세션으로 또 띄워서 두개의 프로세스가 동작하고 있었다.
우선 그것 때문에 오작동이 일어나는 것으로 짐작하고 하나만 띄우는 방법을 찾아내고자 했다.
구글링으로 찾아보니, gutsy scim 이 2byte 쪽에서는 버그가 있는 듯한 글이 많이 있었다.
scim-bridge 라는 것을 사용하라고 한다.
apt-get install scim-bridge 를 설치하고 /etc/X11/xinit/xinput.d/scim 의
xim 부분을 scim-bridge 로 바꾸고 로그아웃 후에 다시 로그인해서 들어왔다.
정상적으로 tray 에 아이콘이 붙어있다.
이제 virtualbox, vmware 등을 실행시켜서 이전의 오작동이 다시 일어나는지 확인해봐야 겠다.
오작동이 일어나지 않으면 위의 짐작이 맞는 것이겠지.
ps. GTK 어플들은 잘 붙는데, QT 어플은 안 붙는다.
gutsy 버전이 이런 자잘한 버그들이 꽤 있는 듯 하다.(기존 버전과 차이가 많은가?)
좀더 해보고 너무하다 싶으면 그냥 dapper 로 다운그레이드를 해야 겠다.
feisty 는 별로 하고 싶지 않은데, 삽질은 더 이상 싫다.
그리고 폰트도 dapper 처럼 잘 매치(?)가 되지 않는다. 뭔가 빠진 느낌.
ubuntu 를 기준으로 설명.
간단한 업그레이드 절차를 살펴보면.
1. 업그레이드 전 데이터 덤프 ( mysqldump --all-databases > db_dump.sql )
2. mysql 서버 업그레이드 ( apt-get install mysql-server-4.1 )
이렇게 업그레이드 후에 오류가 발생해서 실행이 안되는 경우가 있다.
1. /var/log/syslog 를 살펴보면 아래 과 같은 에러메세지가 나올때
mysqld : Character set 'euc_kr' is not a compiled character set is not specified in the .. .. index.xml* 기존 /etc/mysql/my.cnf 의 euc_kr 으로 된 부분을 euckr 로 변경
* 4.0.x 에서는 euc_kr 을 썼는데, 4.1.x 버전 이상은 euckr 으로 쓴다.
* my.cnf 에서 바꾸어 주기만 하면 된다.(euc_kr -> euckr)
* 다시 mysql 서버 시작 하면 정상작동.
2. 다시 로그를 살펴보면. multi-byte
실행은 되었는데, [Warining] 이 무지 많이 보일 경우가 있을 것이다.
{db_name} had no or invalid character set, and default character set is multi-byte, so character column sizes may have changed라는 메세지를 보고, 다음과 같이
alter table {table_name} convert to character set utf8처럼 복구하면 한글 같은 2byte character 들의 사이즈가 반으로 줄어버리게 된다.
(게다가 저렇게 복구하려면 힘들다. 테이블이 한두개라면 모를까)
이때는 업그레이드 전에 덤프한 데이터를 다시 복구(restore) 하면 된다.(복구하면서 알아서 charset 을 설정)
3. 복구후에 DB를 덤프할때 '화일을 찾지 못했습니다' 에러를 만난다면
mysqldump: Got error: 1017: 화일을 찾지 못했습니다. './{db_name}/{table_name}.frm' (에러번호: 24) when using LOCK TABLES개별적 해당 테이블을 덤프하면 이상이 없다.
또는 영어로 Can't find file , errno: 24
이 메세지가 나오는 이유는 이 숫자때문이다. 바로 '1024'
아! 감이 왔나? mysql 이 한번에 열수 있는 파일이 제한되어 있다.
해당 옵션은 show variables like '%open%' 으로 확인할 수 있다.
바로 open_files_limit 가 1024 로 되어 있을 것이다.
/etc/my.cnf 의 [mysqld] 탭에 open_files_limit=2048 등으로 설정한다.
그런데, 4.0 에서는 이상없이 dump 가 가능하다.
4.0 과 4.1 의 mysqldump 의 내부적으로 다르게 처리하는 듯 하다.
이유를 살펴보니, --lock-tables 라는 옵션때문이다.
4.1 에서 --lock-tables=false 로 옵션을 주고 dump 하면 위의 문제는 없어진다.
lock-tables 옵션을 사용하려면 위의 open_files_limit 를 설정해주어야 한다.(선택은 각자 알아서)
소스 버전 관리를 위한 툴이 많은데, 가장 많이 쓰이는 것은 CVS , SVN 이다.
여기에서는 SVN(서브버전)을 사용하는 방법을 정리한다.
# 개발환경은 여러가지가 될 수 있다.(윈도우, 리눅스 환경등)
1. 윈도우 환경에서 TortoiseSVN 같은 툴을 이용해 윈도우 내에 로컬 Repository 를 만들어서 하는 경우.
(이때 외부에서도 사용가능하게 설정하는 방법이 있을 듯 하지만 생략)
2. 리눅스 환경도 마찬가지, 로컬에 설치하는 경우
3. 한 곳에 버전관리 를 설정해 외부에서 공동으로 사용하는 경우.
소스버전관리 자체가 여러개발자가 공동 소스를 수정,관리 하려는 목적이므로 위 3번의 경우가 대부분일 듯 하다.
어떤 방식으로 할 것인지 결정해야 한다.
# 기본적인 설치
1. 프로그램 설치
apt-get install subversion소스관리시 apache 를 이용해 보려면 (WebDAV)
apt-get install libapache2-svn도 같이 설치.
2. svn 저장소 생성
svnadmin create {저장소path}프로젝트 개발시 svn 저장소의 구조가 있다.(일종의 규칙? - branches, tags, trunk 의 용도 참조)
mkdir /tmp/{project Name}TortoiseSVN 의 경우
mkdir /tmp/{project Name}/branches
mkdir /tmp/{project Name}/tags
mkdir /tmp/{project Name}/trunk
svn import /tmp/{project Name} file://{저장소path} -m "initial import"
3. 저장소를 만들었으니, 실제 사용하자. (eclipse , web , TortoiseSVN 등을 이용)
저장소에 접근해서 소스버전관리를 사용하려 한다.
접근하는 방법에 따라 조금씩 차이가 있다.
로컬에 있으면 file://{저장소path} 형태로 접근해서 사용할 수 있다.
WebDav 를 이용해 apache2 를 통해 접근할 수도 있다.
- http://ssami.tistory.com/117
- http://lotus.tistory.com/22
web 이니, http://{저장소ip}/{저장소path} 형태로 접근
ssh를 이용 svn+ssh://{저장소ip}/{저장소path} 형태로 접근한다.
보안적인 측면에서 ssh 를 이용하니, 많이 사용되는 방법인듯.
좀더 구체적인 방법은 eclipse + svn + cakephp 사용에 관한 이야기를 하면서 언급할 예정.
옵션에 그런 것이 있는지 모르겠지만, 각 database 별로 개별 파일로 다운받기 위한 스크립트를 만들어 본다.
개별 db 파일로 다운받는 옵션이 이미 있다면 뻘쭘.( 이런 스크립트는 이미 많이 있는듯)
# 초간단 dump 스크립트
#!/bin/sh
db_user='' ;
db_pass='' ;
db_list=`mysql -Bse 'show databases' -u $db_user -p$db_pass`;
NOW=`date +"%Y-%m-%d"`
for db_name in $db_list
do
[ ! -d $NOW ] && mkdir -p $NOW || :
mysqldump $db_name -u $db_user -p$db_pass --add-drop-table > $NOW/$db_name.sql
done
이상 간단한 스크립트.


이올린에 북마크하기
이올린에 추천하기







Recent Comment