1. 그놈이나 kde를 설치하지 않은 fresh 서버에 설치한다. 2. selinux 를 끈다. (그러나 수정가능) 3. yum 을 update한다 (upgrade명령을 추천). 그리고 리붓 4. cnt5064-deps.sh 실행 5. cnt5064-perl.sh 실행 6. cnt5064-svcs.sh 에 mysql 루트패스워드를 수정하고, firewall.sh 에 ip주소를 수정한다. 7. cnt5064-svcs.sh 실행 & 리부팅 8. cnt5064-install.sh 실행 9. cnt5064-djbdns-localcache-install.sh 실행 혹은 bind를 설정한다.
Fresh Configuration
Directory Reviews
* 기본적인 qmail 의 시스템은 /var/qmail 에 설치된다 (prefix) 이하는 prefix sub로 설명한다. * control 디렉토리에는 qmail main system 의 설정관련 파일이 존재한다. * smtp rules 은 /etc/tcprules.d/ 에 존재한다. 설정변경후에는 컴파일이 필요하지만 service script 을 사용함으로써 (init.d의 qmailctl등) 바로 만들수 있다. qmailctl cdb
Fast Configuration
아래 설명된 target configuration 파일은 control 디렉토리 하에 있음
1. defaultdomain - 사용할 도메인만 입력 2. defaulthost - 사용할 도메인 입력 (상동) 3. locals - 로컬서버의 어드레스들을 입력 (mx 포함) 4. me - 자신의 도메인을 입력 (1상동) 5. rcpthosts - 송신을 허용할 호스트들을 입력 6. databytes - 메일이 핸들링할 최고용량 설정 7. virtualdomains - 가상도메인 설정 8. spfbehavior - spf 체크를 사용할지에 대해 설정 (enforcing화 하려면 3) 9. simcontrol - 스팸 체크관련 시스템의 컨트롤 (ip기반임)
Spam Configuration
설치후 perl CPAN 을 이용하여 필요한 모듈을 추가로 설정하여야 spam control 시스템이 정상적으로 동작한다. sudo -u vpopmail /usr/bin/spamassassin -D --lint 등으로 테스트해서 오류가 올라오는 perl 의 패키지를 찾아서 cpan을 통해 인스톨한다.
Vpopmail Configuration
vpopmail 관련 프로그램 binary path -> /home/vpopmail/bin
vadddomain 등으로 도메인 추가후 vadduser 등으로 사용자 삽입
QR: 만약 기존서버에서 이관하는 경우에는 /var/qmail/users/assign 의 값을 옮겨야 함.
svn은 각 디렉토리에 .svn 이라는 폴더를 만들어 이 경로가 리파지터리와 싱크됨을 선언하게된다. 따라 그 파일을 지워버리면, working copy 가 아닌게 되므로 더이상 svn명령을 사용할수 없게되므로 주의해야한다. 이와 유사한 역할을 하는것이 export 명령어다.
SCM (통칭 버전컨트롤) 을 통해 소스를 관리하는것은 실수를 줄이고, 변화를 쉽게 파악하는 방법중의 하나다.
그래서 전체적인 문서작업과, 그래픽, 웹프로그램들의 소스를 쉽게 컨트롤하게 하기 위해 Subversion 의 설치를 위해 총 6시간이란 막대한 시간을 투자하였다.
SCM에는 CVS와 SVN으로 크게 나뉘고 있다. CVS는 느리지만 오랜기간 안정화가되어 이곳저곳에 많이 쓰인다. 그다음으로 최근에 들어 많이 사용하는것이 이 SVN이다. 여러 익스텐션거 인터그레이션을 통해 바이너리 비교등의 높은 호환성을 보여준다.
간단하게 서론부터 말하면. 매우 피곤해진다. 아직 SVN (Subverion) 은 더 많은 개선이 필요하지만, 개선의 여지는 없어보인다.
일단 내가 필요로 하는 환경을 충족시켜주는지에 대해 검사를 했다. 몇가지 큰 이슈만을 집중적으로 검토하려고 한다.
프로젝트의 참여자 액세스컨트롤을 웹인터페이스등을 통해서도 지원안해 현버전은 프로젝트의 참여자 액세스 컨트롤등을 웹인터페이스에서 추가/삭제가 되지 않는다. 그렇다고 패스워드 연동이 되는가? 애석하게도 아직은 답이 없다. 기본상태의 솔루션을 사용할 경우 ldap 연동조차 지원하지 않는다. (별도의 플러그인이 있는지는 모르겠다)
본개발사인 collabnet 의 엔터프라이즈 에디션을 설치해보려 했다. (웹인터페이스로 프로젝트 acl등의 다양한 기능을 제공한다) 하지만 64비트 시스템에서는 사용할수가 없다고 나왔다. 또한 이는 open subversion 이 아닌 starsource 등의 별도의 프로그램을 설치하는것으로 나타났다. 따라 동떨어진 이야기다. 다운로드 받는데에만 약 40분의 시간이 소요되었고 용량은 350메가정도였다.
대량의 고용량 (5MB이상)급 이미지의 업로드 속도는 최악! SVN은 CVS보다 빠르다. 조금더 편리하다. 그러나 이미지 처리는 개판이었다! 어도비사의 Version CUE 버전큐를 일반적 업무환경에서는 추천한다. SVN 보다 이미지처리기준 약 150배가량 처리속도가 뛰어나며, 그래피컬하며 초보자도 매우 간단하게 쓸수 있는 인터페이스를 제공하고 있다. 심플한 Version Control 기능으로 SVN과 유사하게 사용할 수 있다. 모든 파일확장자를 지원하며 (어도비 브릿지상에서), PSD등의 파일은 섬네일까지 보인다. 물론 svn 브라우저들도 보이지만.. 윈도우용을 기준으로 보면 UI가 훨씬 불편하다. 또한 먹통되는 현상이 없으며 웹상에서 사용자를 쉽게 추가/삭제가 가능하며 프로젝트(폴더) 베이스로 권한을 체계적으로 관리할 수 있다.
본래 파일의 소유자,소유그룹,퍼미션이 보존되지 않아... 보통의 개발환경을 벗어나 웹사이트가 어느정도 상당한 기능제작이 이루어진 단계에서는 많은 CGI가 연동되기 마련이다. 작게는 Paygate의 결제솔루션, 특정 사이트의 인증을 위한 SSL 레이어 통신프로그램등이 있으며, 여기에 동작하는 키파일 등은 일단 소유자와 퍼미션 설정에 상당히 주의를 하여야 한다.
실제로 현재 내가 필요로 하는 다양한 환경들을 보존하기 위해서는 소유자,그룹, 퍼미션이 현행 그대로 저장되어야 한다. 예를들어보자
중계중인 pg 시스템의 솔루션은 cgi이므로 실행권한 을 필요로 한다. 그러나 svn 을 통해 checkout 하면 644 (rw-r-r-) 상태로 변경된다. 따라서 퍼미션이 꼬여 서비스가 중단되는등의 문제가 생긴다.
자체적으로 개발한 암호화 소프트웨어는 매우 민감한 컨트롤을 받고있는 소프트웨어다. pg솔루션도 마찬가지지만, 이 파일은 웹서버가 읽기, 쓰기를 해서는 안되며 오직 실행권한만을 획득하여야 한다. 따라서 소유자는 루트, 아파치그룹 이고 퍼미션은 710 으로 설정하여야 한다. 여기에 연결된 계층파이프 프로그램 (권한과 서버의 CPU값, 고유 인식자를 확인하는 소프트웨어) 가 연동되므로 suid 퍼미션을 받아올 수 있어야 한다.
이런 관련파일들이 셀수없이 튀어나오는 상황에서 SVN을 사용할수는 없다. SVN이 유행처럼 퍼지고 있는 시점에서 버전 컨트롤이라는 목적에서는 극단적으로 적은 호환성밖에 제공하고 있지 않다.
그렇다면 사용할 수 있는 방법이 있는가? postroll 스크립트 (수동으로 구동하여야함) 를 실행하여야 하나 이또한 전체적인 퍼미션을 정상적으로 인식하지 못한다. 일부 블락디바이스로 설정된 디바이스맵등은 무시하는 경향이 있으며 setuid 쪽에 문제가 있다는것.
관련 스크립트는 ASVN 과 SSVN 이 있으며, 테스트결과 SSVN이 개중 좋은 호환성을 보여주었다.
meta-data-versioning 이라는 희안한 패치가 있긴하지만, 이것은 패치형식이 아닌 완성된 소스를 컴파일하는식으로 사용하여야 한다. 그러나 몇가지 언급된 버그들과 개발사이트의 svn관리허술로 1.43 버전으로 업포스팅하는 과정에서 바뀐버전을 찾을수 없는 (아마도 개발자가 귀찮아서 전체커밋을 한게 아닌가싶다) 문제로 모듈하나를 끝마치고 중단을 하게되었다. (한도끝도없어보인다)
그렇다고 현재 개발해서 사용하고 있는 암호화 소프트웨어의 경우 SVN으로 버전관리가 될까?
내가 사용하는 C소스의 경우를 예로 들어보았다. 컴파일후엔 suid 를 필요로하는 바이너리와 일반 바이너리 (보안설정필요)등 바이너리 4개가 생성되며 이러한 바이너리 역시 버전컨트롤로 관리되어 쉽게 롤백시킬수 있는 이점이 있어야한다.
또한 적재되는 모듈들 또안 주 프로그램에서 퍼미션을 확인하게 한다. (해킹당했을 경우에도 root소유권으로 설정되어 내용을 읽거나 가져갈수 없어야한다)
하지만 SVN으로는 이 소스의 형상관리만 가능할 뿐 바이너리는 관리가 되지 않는다. 매번 체크아웃 할때마다 퍼미션 바까줘야하는 중노가다를 하게만들거나, 거기에 따른 스크립트를 붙이게 만든다.
총평 Subversion 은 단순한 프로그램들의 버전컨트롤로써는 쓰기에 충분하다. 그러나 복잡한 웹개발환경에서는 무용지물이라는 사실과, 개발사는 meta-data-versioning 등의 브랜치가 충분히 있으며, 언젠가 개발자의 메일링 답변을 보니 곧 포함할것이다 라는 의견을 밝힌점과 그로부터 2년이 지난 지금.. 아직도 포함하지 않고 버전업만 한다는것은 포함할 의사가 없다는것을 나타내는것으로 보인다.
단순한 리눅스의 C소스나 고정화된 배포형식의 버전컨트롤 (현재 freshmeat이나 sf등이 사용하는 형식) 으로 보이기 위함만을 추구하는곳에야 편리하게 깔아 쓸수 있지만, 말그대로 버전컨트롤, 바이너리 관리등을 위한 목적으로 제작된 프로그램은 아닌것이 확실했다.
SVN은 단순한 배포용 소프트웨어다. webdav 인터페이스를 통해 wc 등으로 누군가 무엇을 했고 누가 참여를 했느냐등을 집계내는 플러그인으로 소스작업과 배포 이외에는 전혀 고려되어있지 않다.
CVS를 통해 편법을 동원해가며 user mapping을 거는것이 오래된 방식이지만 가장 많은 호환성을 나타내는것으로 판단된다.
this is unsolved problem, currently issued. 아직 해결되지 않은 문제며, 해결되는대로 이에 관련한 퀵리퍼런스가 작성될것으로 보인다.
ERROR MESSAGE IN DIRECT CONSOLE
warning: many lost ticks. Your time source seems to be instable or some driver is hogging interupts rip __do_softirq+0x4d/0xd0 Falling back to HPET
Outbreaking Condition (오류발생 조건)- Environment / 환경 1. TYAN TEMPEST I5000PX (S5380) - Xeon Woodcrest 2.66Ghz Dualcore / DDR2 1GB FB 5300 ECC * In this issue (이 오류는 1번에 해당한다) 2. NVIDIA NFORCE 4 CK804 - AMD Athlon 64 X2 Dual Core 3800+ displaying this message "Losing some ticks... checking if CPU frequency changed."
Add Note V1: I decide that is a different case which two type of system (wrote in environment) 오류가 두가지로 나뉘는것을 확인하였다.
Operating Condition / 운영조건 1. HTTPD when server load average reached or over about 15. (means software using extremely large resource) performance decrease about 40% approxmile (아파치 서버의 경우 15정도의 로드가 발생하였을때 / 이정도는 엄청나게 많은 리소스 사용량을 의미한다. 이러한 현상이 발생하며, 서버의 전체적인 퍼포먼스가 40%가량 감소한다)
2. MYSQL when server load average reached or over about 40.
(means software using extremely large resource)
/ in general case the mysql doesn't over loadaverage 5.0, but the other case (error kernel) OS can't handle resource anymore if after shown the error messages, server load value going to over 900 and no more handle/operating. can't shutdown mysql or etc.
(mysql 서버의 로드가 40이상 올라갈 때 발생하며 한번 발생하면 로드가 900이상 즉시 올라가며, 더이상 서버에서 어떠한 운영도 불가능하다. 동일한 데이터 입/출력을 다른서버 (유사한 CPU환경) 에서 발생하였을때 로드가 5.0을 넘기지 않아야하나 이 경우 쉽게 15를 돌파하며 50을 넘겨버린다. 자원의 순환이 되고 있지 않는것을 의미한다.)
i've been tried to changing values belown. whole setting failed. 아래의 값을변경하며 시도해보았으나 실패하였다.
on BIOS - ACPI APIC / enable /disable Memory Remap Features / enable /disable MAX CPUID VALUE LIMIT / enable /disable OS handle CPU FREQUENCY / enable /disable Power Management timer / enable /disable
on Kernel - clock=pmtmr clock=pti noapic all-generic-ide with bios ahci handling
Expecting caution / 예상오류원리 maybe huge i/o breaking communication cpu to APIC clock counter or specific acpi clock counter. or kernel driver's detecting failure.
정확하지는 않지만 ACPI 와 관련된 특정한 클럭 계통, APIC 클럭 카운터일수도 있다. 이부분을 과도한 I/O로 인해 CPU가 핸들아웃되는 상황이 발생되는것이 아닌지 추정하고 있다. 은제해결되려나 -_-;;;;;;;;
Solution Primary Case. solved out.
update kernel to 2.4.10.c4smp (centos-plus based)
update bios to 1.04 (if u r using tyan s5380)
on bios/ -> turn on max cpuid value set to 3 -> multimedia timer / on -> apic/acpi/local acpi / on -> os handle cpu freq / disable (if problem doesn't appear turn off Hyper Thread technology)
clear grub loader configuration ( no noirqbalance or acpi_irq_balance or clock ... etc)
on boot/ rc.local -> put this line above
ethtool -s eth0 speed 1000 duplex full autoneg off wol d ethtool -A autoneg off rx off tx off ethtool -K eth0 tso off
i figure out problem occur from e1000 software driver. if you got the message after turn off e1000 setting, trying to turn off hypher thread technology from bios set.
e1000 드라이버에 의한 문제로 밝혀졌다. 하지만 문제가 중복되어있었다. (실제로 이것을 끄자 다른 IRQ에서 문제가 중첩되어 bios설정상에서 대다수 변경을 시도하였다) 그러나 문제가 지속되면 하이퍼스레드 기능을 끄면 트레이스한 결과상 문제가 사라져야한다.
In secondary case
2. NVIDIA NFORCE 4 CK804 - AMD Athlon 64 X2 Dual Core 3800+ displaying this message "Losing some ticks... checking if CPU frequency changed."
Setting ACPI, APIC, careful to set S-ATA mode to compartible setting Kernel Can't detecting nf4 ck804 sata controller so if you are using this probably you are under running "all-generic-ide" option. but that is real problem. you should remove "all-generic-ide" option from kernel loader. just adjusting cmos setting. it occur apic clock losting. in addition, intel 965RY DG,SS series Can't operating to stable under linux system. if you shown direct error message like this "APIC error on CPU0: 00(60)" you should change serveral cmos values. i can't decision which what is extacly working values of yours. and some people said opinion about that message to "it doesn't matter harmless, apic didn't effecting to System Performance". but actually I founding performance changing. Definitly apic error message is effictivity system performance. APIC error on CPU0: 00(60) -> occur Clock losing -> Losing some ticks... checking if CPU frequency changed." -> performance down!
2항의 경우에는 ACPI 와 APIC와 S-ATA의 모드를 compartible등으로 적절히 설정하여 부팅시켜야 한다. 통싱적으로 커널이 NF4 칩셋을 인식하지 못해 all-generic-ide 를 활성화 하는 경우가 있지만, 이것이 문제의 온상이 되는부분이다. 추가적으로 지난번 설명을 보면 알지만 이와 같은 논리로 인텔 965RY등의 보드는 "리눅스"에서 정상적으로 동작이 불가능하다. 만약 APIC error on CPU0: 00(60) 의 에러가 보인다면 설정이 잘못된것이다. 혹자는 이가 퍼포먼스에 영향이 없다고는 하지만 실제 누적되는 영향을 가져오는것을 발견하였다. APIC에러 -> 클락 루징 -> 틱계산 문제발생하여 CPU 오류메시지 -> 성능 저하 그 누가 지껄였던가. 레드햇바보들..
Completly Stable System Messages / 완벽히 안정된 시스템 메시지 belown are my G965/NF4 system's dmesg
delivery size : 10~500K (avg 300KB) file total file size : 1TB Request per sec - Minimum : 3000 Requests / sec Average : 9000 requests / sec Peak : 36000 Requests / sec Inactconn : 150,000 / Average enforce object ttl : 1Day (NO REFRESH/MODIFIED ignore) daily cache average area size (following ttl time) : most 8.2GB peak transmit rate : 400MBps Memory : 16GB
Additional Information Storage : 3ware sata raid5 capacity : 4TB Transferating Speed : READ 190MB/s / ( actually most 30MB/s left bandwidth for handle cache server, we have a lot of writing, and reading for another service.)
Current Configuration Using Squid only first level caching on memory no secondary level caching
Problem : never cache again when the object has been expired. 1day -> cached object -> 1days over(2days) -> cached object has been expire also purge memory -> 2Days after -> the object never cache again -> user request this -> direct pass throught to origin server
We got a serveral I/O hazard when the expired object is issued in our site by users.
Tried aufs secondary level caching with async i/o , but the result is very poor. if you have setting like that, you cannot make a traffic over 250Mbps
I'll trying to install squid version 3. Actually there is no solutions, except zeus web server. (i saw the report which zeus performance results, it is good for this case, but still have memory caching problems for seperate process sharing)
Tried Solutions varnishd - it supporting useful configuration, the vcl have much feather than squid's. but we got a serveral memory bugs. it isn't perfect yet. do not use to production. and there is no cache replacement logics such like as LRU, Greedy dual size freqs. this is very important logic when you operating over memory only system.
lighttpd - too very slow. that is not optimized for cache usage