Linux System이 영역을 넓혀가는데 큰 역할을 한 LAMP 아키텍쳐에 대한 문서입니다.
Open source 운영체제인 Linux, Apache 웹 서버, MySQL, PHP를 조합해 웹 서비스를 제공하는 LAMP 아키텍쳐는 저렴한 비용으로 웹 서비스를 제공하게 해주는 가장 대중적인 조합이 되었죠.



원문 : LAMP 시스템 조율, Part 1: LAMP 아키텍처 이해 (한글)

아래는 "LAMP 시스템 조율, Part 1"의 서문을 발췌한 내용입니다.


LAMP(Linux®, Apache, MySQL, PHP/Perl) 아키텍처를 활용하는 응용 프로그램은 끊임없이 개발되고 배포되고 있습니다. 하지만 때로 다른 사람이 작성했다는 이유만으로 응용 프로그램 자체에 대한 통제권이 서버 관리자에게는 없습니다. 기사 셋으로 이뤄진 이번 연재물은 응용 프로그램 성능을 향상시킬 서버 환경 설정 항목을 다룹니다. 첫 번째 기사는 LAMP 아키텍처, 성능 기법, 기본적인 리눅스 커널, 디스크, 파일 시스템 미조정을 다룹니다. 이어지는 기사에서는 아파치, MySQL, PHP 컴포넌트를 조율하는 방법을 다룹니다.

리눅스, 아파치, MySQL, PHP(또는 펄)은 일정 목록부터 블로그와 전자 상거래 사이트에 이르기까지 많은 웹 응용 프로그램의 토대가 된다. 워드프레스와 플리그(Pligg)는 강력한 고성능 웹 사이트를 유지하는 공통 소프트웨어 패키지다. 이런 아키텍처는 LAMP라고 알려졌다. 거의 모든 리눅스 배포판에는 리눅스, 아파치, MySQL, PHP와 펄이 포함되어 있으므로 LAMP 소프트웨어 설치는 식은 죽먹기다.

설치가 쉽기 때문에 소프트웨어 실행까지 쉬워보일지도 모르겠지만, 이는 사실이 아니다. 궁극적으로 응용 프로그램 부하는 백엔드 서버에 포함된 설정값을 무력화하며, 결국 응용 프로그램 성능 저하가 일어난다. LAMP 설치는 지속적인 감시와 조율과 평가를 요구한다.

시스템을 조율하는 작업은 사람마다 의미가 달라진다. 이번 연재에서는 리눅스, 아파치, MySQL, PHP라는 LAMP 컴포넌트 조율에 초점을 맞춘다. 응용 프로그램 자체 조율은 또 다른 복잡한 문제다. 응용 프로그램과 백엔드 서버 사이에는 공생 관계가 있다. 잘못 조율된 서버는 최상의 응용 프로그램조차도 부하가 걸릴 경우 실패하도록 만들며, 잘못된 응용 프로그램을 앞에 놓고 서버 조율을 해봤자 굼벵이를 달팽이로 만들 뿐이다. 다행스럽게도 적절한 시스템 조율과 감시는 응용 프로그램에 존재하는 문제점을 찾아내준다.





 오랫만에 IBM DW에 올라온 글을 소개하려합니다. ^^
이번엔 리눅스 커널에 관한 내용을 소개한 글입니다. "리눅스 커널 해부"라는 제목의 한글로 번역된 팀 존슨(Emulex corp.)의 글입니다.

600만 행이 넘는다는 리눅스 커널을 하나의 문서에서 다 분석한다는 것은 무리가 있죠. ^^  이 문서도 커널을 한방에 끝장낼 수 있는 내용이 나오는건 아닙니다.
한번 읽어보고, 저자가 소개한 참고 문서들도 읽어보면 어느정도 윤곽이 잡힐것 같네요. 음...
근데, 늘상 느끼는 문제이지만 부족한 영어 실력이 원망스럽습니다.

원문 : 리눅스 커널 해부 (한글)

리눅스(Linux®) 커널은 거대하고 복잡한 운영체제의 핵심이며, 커다란 몸집에도 불구하고 하위 시스템과 계층 구조를 사용해서 조직화되어 있습니다. 이 기사에서는 리눅스 커널의 일반적인 구조를 살펴보고 주요 하위 시스템과 핵심 인터페이스를 파악합니다. 좀더 깊이 파고 들고 싶다면 다른 IBM 기사를 읽어보세요.

이 기사의 목표는 리눅스 커널을 소개하고 아키텍처와 주요 컴포넌트를 살펴보는 데 있다. 우선 리눅스 커널 역사부터 간략하게 짚어보기 시작해 다음으로 3만 피트 상공에서 리눅스 커널 아키텍처를 살펴보고, 마지막으로 주요 하위 시스템을 검토하겠다. 리눅스 커널은 코드가 600만 행이 넘으므로 소개글을 너무 장황하지 않게 줄였다. 좀더 깊이 파고 들고 싶다면 참고자료를 살펴보자.


 유닉스/리눅스를 사용하다보면 다양한 작업을 시간대 별로 실행 시켜야 할 때가 있습니다. 사용자들이 적은 시간대에 해야할 작업, 특정 시각에 해야 할 작업, 특정 작업이 종료된 다음에 할 작업... 등등 작업은 아주 많습니다.
유닉스/리눅스에서는 cron이라는 프로그램을 이용해서 배치작업을 처리하죠. 이번에는 cron과 at을 이용한 작업 일정 관리에 관한 문서를 소개하려 합니다.

원문 : 리눅스 팁: cron과 at를 사용한 작업 일정 관리 (한글)


아래는 서문을 발췌한 것입니다.

2008 년 3 월 25 일

시스템 사용량이 적어진 한밤중에 작업을 실행할 필요가 있거나 일일이나 주간 단위로 작업을 수행할 필요가 있지만, 잠도 자야겠고 다른 활동도 하면서 삶을 즐기고 싶습니다. 작업 일정 관리가 필요한 또 다른 좋은 이유는 반복적인 과업을 자동으로 수행하도록 만들거나 매번 동일한 방식으로 과업을 수행하도록 만들고 싶기 때문입니다. 여기서 소개하는 팁은 주기적으로나 일회성으로 미래 작업 일정을 관리하는 cronat 기능을 활용하도록 도와줍니다.

리눅스(Linux®)와 유닉스(UNIX®) 시스템은 일회성이거나 반복적인 미래 작업 일정을 관리하도록 만들어준다. LPI exam 102 prep: Administrative tasks에서 발췌한 이번 기사에서는 주기적으로 작업 일정을 관리하는 방법과 미래에 작업을 수행하는 방법을 보여준다.

많 은 시스템 관리 작업은 리눅스 시스템에서 종종 주기적으로 수행해야만 한다. 이런 작업에는 로그 파일을 회전시켜서 파일 시스템이 가득 차지 않도록 만들기, 자료 백업하기, 시스템 시각을 동기화하기 위한 서버 연결과 같은 작업을 포함한다. 이런 관리 작업에 대한 세부 사항은 위에서 언급한 튜토리얼을 참조하기 바란다. 이번 팁에서는 리눅스에서 사용 가능한 작업 일정 관리 패키지인 cron, crontab, anacron, at 명령을 다룬다. 시스템이 잠들거나 꺼져 있더라도, anancron은 다음 번에 깨어날 때 작업을 따라잡도록 도와준다.




 이번엔 DeveloperWorks의 [리눅스, 오픈소스]관련 문서중 [OpenSSL[각주:1] API를 이용한 보안 프로그래밍, Part 1: API의 개요 (한글)]을 소개하려합니다. 필자가 C에 대한 이해와 실무 경력이 부족한 관계로 이 문서가 실제로 얼마나 도움이 될지는 모르겠습니다. 그러나 리눅스에서 보안 프로그래밍에 관심이 있는 유저라면 한번쯤 읽어볼만한 문서라고 생각합니다.

원문 : OpenSSL API를 이용한 보안 프로그래밍, Part 1: API의 개요 (한글)

 필자인 Kenneth는 MediNotes Corp.(West Des Moines, Iowa)의 소프트웨어 엔지니어입니다. 페루, 나브라스카에 있는 Peru State College에서 경영학 학사 학위를 받았고, Southwestern Community College에서 컴퓨터 프로그래밍의 Associate of Science도 보유하고 있습니다.

아래는 원문의 서론부분입니다. 한번 읽어보시고 맘에 드시면 위쪽의 원문 링크를 클릭하셔서 전체 내용을 보세요.

보안 통신용 오픈 라이브러리인 OpenSSL용 API를 사용하는 방법을 배운다는 것은 힘든 일입니다. 문서화가 아직 덜 되어있기 때문입니다. 이 글을 통해서 이를 극복해 봅시다. 기본 연결을 설정한 후에, OpenSSL의 BIO 라이브러리를 사용하여 보안/비보안 연결을 구축하는 방법을 배워봅시다. 에러 탐지에 대한 부분도 설명합니다.

OpenSSL API와 관련한 문서는 약간 모호하다. OpenSSL의 사용법에 대한 튜토리얼도 많지 않으므로, 애플리케이션에서 이를 실행하는 것은 초보자에게는 힘든 일이다. 그렇다면, OpenSSL을 사용하여 기본 보안 연결을 어떻게 구현할 것인가? 이 가이드에서 이러한 문제를 풀어보자.

OpenSSL을 구현하는 방법을 배우는 것과 관련된 문제 중 하나는 문서화가 덜 되어있다는 점이다. 불완전한 API 문서는 개발자가 API를 사용할 수 없게 한다. 하지만, OpenSSL은 여전히 존재하고 강력하다. 왜일까?

OpenSSL 은 보안 통신용 오픈 라이브러리로 유명하다. Google에서 "SSL library"를 검색하면 OpenSSL이 상위로 리턴된다. Eric Young과 Tim Hudson이 개발한 SSLeay 라이브러리에서 파생하여, 1998년에 시작되었다. 다른 SSL 툴킷으로는 GNU General Public License하에서 배포되는 GNU TLS와, Mozilla Network Security Services (NSS) (참고자료)가 있다.

그렇다면, OpenSSL이 GNU TLS, Mozilla NSS 등 보다 나은 점은 무엇인가? 라이센싱이 한 몫을 한다. (참고자료) 게다가, GNS TLS는 TLS v1.0과 SSL v3.0만 지원한다. 그 이상은 지원하지 않는다.

Mozilla NSS는 Mozilla Public License와 GNU GPL 하에서 배포되고, 개발자가 선택할 수 있다. Mozilla NSS는 OpenSSL보다 크고, 라이브러리를 구현하려면 다른 외부 라이브러리가 필요하다. 하지만 OpenSSL은 독립적이다. OpenSSL과 마찬가지로, 대부분의 NSS API는 문서화가 되어있지 않다. Mozilla NSS는 PKCS #11 지원을 갖고 있는데, 이는 Smart Cards 같은 암호 토큰에 사용된다. OpenSSL은 이러한 지원이 부족하다.

조건

이 글을 충분히 활용하려면,

  • C 프로그래밍에 능숙해야 한다.
  • 인터넷 통신에 대해 잘 알고 있어야 하고, 인터넷에서 실행되는 애플리케이션을 작성할 수 있어야 한다.

OpenSSL에 대한 완벽한 이해가 전적으로 필요한 것은 아니다. SSL에 대한 간략한 설명은 나중에 제공하겠다. SSL에 대한 상세한 설명은 참고자료 섹션을 참조하라. 암호법에 대해 알고 있어도 도움이 되지만, 필수적인 것은 아니다.


 이번에는 IBM 한국 DeveloperWorks의 Linux  관련 자료 중에서 괜찮은 글을 발견했습니다. 물론 부담없이 읽을 수 있는 한글로된 문서입니다. :)
[리눅스 철통 보안]이라는 제목의 2회 연재분량의 글입니다. 원래 Part 1만 나왔을때 소개하려다가 2회 연재가 끝나길 기다렸다가 이제야 소개하게 되었습니다.
Part 1 : 쉘 제거하기(한글)
Part 2 : 서명된 바이너리만 실행하기(한글)

1. Part 1에서는 리눅스의 자유로운 맞춤 설정 기능을 통제해야 하는 이유을 알려주고 가짜 사용자가 기본 설치 상태를 바꾸는 것을 막기 위해 표준 리눅스 배포판을 잠그는 조심스러운 첫 걸음을 뗄 것이다. 이 1단계 작업은 이 연재 Part 2의 기초 작업으로 서명된 바이너리만 사용할 수 있게 강제하는 커널을 빌드함으로써 잠금 과정을 마무리한다.

 - 대규모 리눅스 시스템을 지원할 때 고려해야 하는 보안 문제와 위험과 비용을 최소화하는 법을 배운다.
 - 기본 시스템이 변경되는 것을 막기 위해 하드웨어와 펌웨어를 셋업하는 법을 살펴본다.
 - 사용자가 승인되지 않은 코드를 보안 환경에서 실행하는 위험을 최소화하기 위해 표준 리눅스 인터프리터를 제거한다.
 - 감사와 승인을 하지 않은 애플리케이션을 끼워넣을 수 없는 산업 등급의 보안을 갖춘 리눅스 배포판을 설정한다.

2. Part 2에서는 리눅스의 자유로운 맞춤 설정 기능을 통제해야 하는 이유를 알려주고 가짜 사용자가 기본 설치 상태를 바꾸는 것을 막기 위해 표준 리눅스 배포판을 잠그는 법을 다룬 Part 1의 내용을 확장한다. Part 2에서는 여러분이 지원하는 각 머신에서 서명된 바이너리만 사용할 수 있도록 하는 커널을 만들어 철통 보안 과정을 마무리한다.

 - 대규모 리눅스 머신 설치 유지 보수에서 인증된 실행 파일만 실행하도록 특별히 만들어진 커널을 운영하는 데 필요한 관리 문제와 과정을 배우게 될 것이다. 각각의 실행 파일은 Part1에서 다룬 기본적인 철통 보안 프로세스에서 설정됐다.
 - 시스템을 유지하는 데 필요한 암호화 된 데이터를 관리하는 방법을 다룰 것이고, 마지막으로 관리되지 않은 실행 파일이 안전한 환경에서 실행되지 않도록 막는 방법을 다룰 것이다.
 - 개인적으로 감사(audit) 및 승인하지 않은 애플리케이션을 끼워 넣을 수 없는, 산업 등급의 보안을 갖춘 리눅스 시스템을 설정할 수 있을 것이다.


 이 글의 저자는 망가뜨려도 상관 없는 오래 된 리눅스 컴퓨터가 필요하다고 얘기하고 있습니다. 따라서 기나긴 리눅스 설정 삽질을 시작할때와 마찬가지로 중요한 데이터는 꼭 Backup 하시길 바랍니다.
 되도록이면 보조 PC나 테스트 장비 등에서 시험해보는게 좋을것 같네요.

 다음에 여분의 PC가 생기면 한번 시도해 봐야겠습니다.
근데 이렇게 해놓으면 관리자도 불편해하지 않을까합니다...
걍  한번 시도해보는걸로 만족하렵니다. :)
생각해보니 전산실에서 구형 서버라도 한대 빌려서 해보면 될것 같네요. 근데 구형 장비가 남아있으려나...
 오라클에서 무료로 배포하는 Oracle SQL Developer 1.2 버전[각주:1]의 Tutorial입니다.

 SQL Developer 1.2버전은 꽤 쓸만합니다. 1.1버전부터는 MySQL, MS-SQL에 접속할 수 있습니다. MySQL에 접속하려면 Mysql Homepage에서 Connect/J를 다운받아서 [SQL Developer가 설치된 디렉토리]/jdk/jre/lib/ext/에 복사한뒤에 사용하면 됩니다.
또한 Linux, Mac OSX, MS Windows 등의 운영체제에서 사용가능합니다.


 Online tutorial이며 http://st-curriculum.oracle.com/tutorial/SQLDeveloper/index.htm에서 볼 수 있으며 다운로드도 가능합니다.


단점이라면 영문이라는 거!!!
영어 공부 해야겠습니다.
아래는 튜토리얼 첫화면의 환영 문구입니다.

Welcome to the Oracle SQL Developer Tutorial!

This tutorial prepares a developer to use Oracle SQL Developer to perform common database development tasks. This tutorial was developed using Oracle SQL Developer 1.2.

After taking this tutorial, you should be able to:

Install Oracle SQL Developer
Create a Database Connection
Manage Database Objects
Access and Manipulate Data
Add, edit and debug PL/SQL Components


  1. Oracle에서 무료로 배포하는 DB 개발툴입니다. OTN에서 다운로드 받을 수 있습니다.
    1.1버전부터는 Oracle 이외에 MS-SQL, MySQL에도 접근할 수 있습니다. 이기종 DBMS에서는 아직 쓸만한거 같지는 않습니다. :)
    Oracle DBMS 개발용도로는 좋습니다. 1.2 버전에서는 Migration 관련 기능도 있구요.
    SQL Developer 1.2 Download (OTN 계정이 있어야  다운로드 받을 수 있습니다.)
    SQL Developer Homepage [본문으로]
LDS[각주:1]에서 주최하는 MySQL User Conference Korea - 2007 행사에 점심시간을 이용해서 잠시 갔다왔습니다.
음... 컨퍼런스 내용은 5분도 못 들었고, 자료만 챙겨서 나왔죠. 좀 일찍 퇴근해서 마지막 시간의 [Case of succeed of MySQL & RedHat]이라도 들어볼까하는데, 금요일이라 여유가 될지 모르겠네요. 눈치만 살피고 있습니다. :)

자~ 일단 홍보 부스에서 받은 자료를 살펴보면요.

1. SUN Microsystems
 랙형 서버 2대(1대는 스토리지였던가???)와 데스크탑형 워크스테이션 1대가 있더군요. 곧 쿼드 코어 옵테론을 이용한 서버가 출시될거라고 하더군요.

2. Terrace Technologies
 TIMS라는 메일 솔루션을 가지고 나왔더군요. 대용량 메일 처리가 가능하다고 하더군요. 제가 웹메일  서버를 관리하고 있어서 그런지 관심이 가긴했는데, 점심시간내에 둘러보고 가야하는 관계로 걍 통과했습니다.

3. DideoNET
 SeeMedia라는 동영상 인코딩/스트리밍/UCC 솔루션을 소개하는 부스였습니다.
이런 솔루션을 만들어보는게 목표이긴한데... 배워야 할게 많네요.
인코딩 서버, 스트리밍 서버...

4. 회사 이름이 기억나지 않는 부스
 MySQL HA Cluster.... 아마도 이런 이름이었을겁니다. 메모리 DBMS라면서 MySQL Cluster solution을 소개하던데, 엔지니어가 아닌 영업 하시는 분이라 자세한 얘기는 듣지 못했습니다.

  1. Linux Data System의 약자. 아는 형이 근무하는 회사입니다. [본문으로]
 OTN에서 Oracle 10g RAC 설치 문서를 보면 Openfiler라는게 등장한다. Storage로 iSCSI를 이용하는데, iSCSI 서비스를 위해 Openfiler를 이용한다.

아래는 Openfiler 홈페이지에 있는 About openfiler라는 문서의 서문이다.

Openfiler is a powerful, intuitive browser-based network storage software distribution. Openfiler delivers file-based Network Attached Storage and block-based Storage Area Networking in a single framework.

Openfiler uses the rPath Linux metadistribution. It is distributed as a stand-alone Linux distribution. The entire software stack interfaces with third-party software that is all open source.

File-based networking protocols supported by Openfiler include: NFS, SMB/CIFS, HTTP/WebDAV and FTP. Network directories supported by Openfiler include NIS, LDAP (with support for SMB/CIFS encrypted passwords), Active Directory (in native and mixed modes) and Hesiod. Authentication protocols include Kerberos 5.

Openfiler includes support for volume-based partitioning, iSCSI (target and initiator), scheduled snapshots, resource quota, and a single unified interface for share management which makes allocating shares for various network file-system protocols a breeze.



아직 사용해보지는 않아서 좋은지는 모르겠다. 게을러서... :)
 IBM DeveloperWorks 한글 사이트에 리눅스 부팅 과정에 관한 문서가 올라와서 소개하고자 합니다. 리눅스의 부팅 과정에 관한 내용이지만 일반적으로 컴퓨터 시스템의 부팅 과정이 서로 유사한 점이 많기에 운영체제의 부팅 과정을 이해하는데 도움이 되리라 생각합니다.

원문 : 리눅스 부팅 프로세스 연구 (한글)

아래는 원문의 일부를 발췌한 것이다.

Master Boot Record 부터 사용자 공간 애플리케이션 까지 부팅 가이드






난이도 : 초급

M. Tim Jones, Consultant Engineer, Emulex

2006 년 8 월 18 일

리눅스® 시스템의 부팅 과정은 많은 단계들을 거칩니다. 표준 x86 데스크탑을 부팅하든 아니면 PowerPC®를 부팅하든 그 단계는 놀랍게도 많이 비슷합니다. 이 글에서는 리눅스 부팅 과정을 초기 부트스트랩부터 첫 번째 사용자 애플리케이션의 시작 단계 까지 설명합니다. 아울러 부트 로더, 커널 디컴프레션(decompression), 초기 RAM 디스크, 기타 리눅스 부트 엘리먼트를 설명합니다.

초기에 컴퓨터를 부트스트랩(bootstrapping) 한다고 하면 부트 프로그램이 포함된 종이 테이프를 공급하거나 프론트 패널 address/data/control 스위치를 사용하여 부트 프로그램을 직접 로딩하는 것을 의미했다. 오늘날 컴퓨터에는 부팅 과정을 단순화시키는 장치들이 장착되어 있지만 꼭 그렇게 단순한 것 같지는 않다.

리눅스 부팅 과정을 보다 높은 시각에서 조망해야지만 전체적으로 볼 수 있다. 그런 다음 각각의 단계를 자세히 살펴봐야겠다. 곳곳에 첨부한 소스 자료가 커널 트리를 연구하는데 도움이 될 것이다



 IBM DeveloperWorks에 리눅스 커널 관련 문서가 올라와서 소개하고자 한다.
커널의 구조에 대해서 간략하게 설명한 내용으로 읽어볼만 하다고 생각합니다.

원문 : 리눅스 커널 해부 (한글)

 아마도 커널 관련 글이 이전에도 몇개더 있었던것 같은데 정확하게 기억은 나지 않네요. 다만, 이번 문서가 제일 보기가 쉽다는 느낌이 듭니다. 제가 아직 커널쪽은 잘 몰라서요.   :)
커널쪽을 잘 모르는 제가 보기에 편하게 느껴지면 다른 초보분들이 읽기에도 적당할거라 생각합니다.

꾸준하게 다양한 문서를 번역해서 올려주셔서 감사할 따름입니다.

 아래의 파란 박스안의 내용은 문서의 앞부분만 가져온 것입니다.

난이도 : 중급

M. Tim Jones, Consultant Engineer, Emulex Corp.

2007 년 8 월 07 일

Linux® 커널은 크고 복잡한 OS의 핵심이고, 거대한 반면 하위 시스템과 레이어의 관점에서 볼 때 잘 구성되어 있습니다. 이 글에서, Linux 커널의 일반적인 구조를 설명하고, 주요 하위 시스템과 핵심 인터페이스들을 살펴봅니다. 가능하다면 다른 IBM 기술자료 링크를 통해서 자세한 내용을 공부하시기 바랍니다.

이 글에서는 Linux 커널을 소개하고 아키텍처와 주요 컴포넌트를 설명하고자 한다. Linux 커널 역사를 간단히 살펴보고, Linux 커널 아키텍처를 자세히 연구하고, 마지막으로, 주요 하위 시스템을 설명할 것이다. Linux 커널은 6백만 이상의 코드 라인으로 구성되어 있기 때문에 이것을 모두 다 설명하는 것은 불가능하다.


+ Recent posts