강좌
클라우드/리눅스에 관한 강좌입니다.
프로그램 분류

리눅스 시스템 관리 프로그램(LSMP) 4편: LSMP 개발자 메뉴얼

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스 시스템 관리 프로그램(LSMP) 4편: LSMP 개발자 메뉴얼 


LSMP (Linux System Management Project) 소개

 

LSMP 개요

 

LSMP(Linux System Management Project)는 리눅스 시스템을 쉽고 편리하게 관리하기위한 프로그램이다.

3f2dd576c2222ea6b583b69acfe73700_1645170686_4245.png
 

 

인터넷 사용이 활발해 짐에 따라 인터넷 컨텐츠를 제공하는 웹서비스의 비중이 커졌으며 웹서버를 구동하는 OS중 반 이상이 리눅스를 사용하고 있다. 그리하여 리눅스를 사용하는 부류도 전문 리눅스 사용자에서 일반 사용자로 그 분포가 확산되고 있는 실정이다. 이러한 일반 사용자는 리눅스 시스템 구축 후 기본적인 관리를 위해 많은 어려움을 격고 있다. 일반 사용자는 리눅스 시스템의 원격 접속을 위해 SSH Telnet을 사용하며, 사용자 설정 등의 작업을 위해 명령어 기반으로 대부분의 작업을 진행하고 있다. 초보자뿐만 아니라 리눅스 시스템에 익숙하지 않는 사용자는 설정파일 위치 및 명령어를 정확하게 알지 못해 많은 어려움을 격고 있다.

이러한 리눅스 사용자들의 고충을 해결하기 위해 쉬운 인터페이스를 가진 리눅스 서버관리 프로그램이 필요하다. 리눅스 시스템의 사용자를 추가/삭제/편집하는 사용자관리, DNS서버의 설정파일 및 Zone파일 설정을 위한 DNS서버관리, DB서버의 사용자 및 DB를 추가/삭제하는 DB서버관리, 웹서버의 가상호스트를 추가/삭제/수정 하는 웹서버관리, 리눅스 시스템의 중요한 데이터를 백업 할 수 있는 백업관리, CPU및 메모리, HDD의 사용량을 실시간으로 보여주는 시스템 현황 모니터링 기능을 가진 웹 및 Text Box 기반 리눅스 시스템 관리 프로그램을 개발하는 것이 LSMP의 목표이다.

또 한 완성된 프로그램과 소스를 국제화시켜 공개SW발전을 위하여 세계적인 공개 SW 커뮤니티인 sourcefoge.net와 국내 커뮤니티에 프로젝트 개설 하여 지속적인 개발 및 커뮤니티 활성화를 시킨다.

 

 

주요기능

 

LSMP는 다음과 같은 기능을 가진다.

 

1. 사용자관리 기능 : 리눅스 시스템의 사용자를 추가/수정/삭제 할 수 있는 기능. 메일 및 FTP 전용 사용자를 위한 쉘 권한 제거, 웹호스팅 사용자를 위한 통합 계정관리 등의 기능

 

2. DNS서버 관리 기능 : DNS서버의 도메인 추가/수정/삭제 기능을 개발하며, DNS의 기본 접근제어 등 많이 사용하는 기능에 대해 쉽게 사용할 수 있다. TTL Serial 값은 옵션 형태로 작성하여 사용자의 고민을 최소화 시킨다.

 

3. DB서버 관리 기능 : DB서버의 DB 추가/편집/삭제, DB 사용자 추가/편집/삭제 기능. DB는 기본 MySQL을 지원 하며, DB서버의 기본 관리기능.

 

4. 웹서버 관리 기능 : WEB서버 가상호스트 추가/편집/삭제 기능. 웹서버는 기본 Apache를 지원하며, 가상호스트 및 접근 제어 기능.

 

5. 백업관리 기능 : 리눅스 시스템 중요 설정 파일 및 데이터 백업기능. 리눅스 시스템의 중요 설정파일(DNS, WEB, FTP, 사용자계정 등) 및 데이터(home, DB, 메일 등)를 압축 백업 할 수 있는 기능.

 

6. 시스템 현황 모니터링 기능 : CPU, 메모리, 부하, Disk 사용량 실시간 모니터링 기능 개발. 시스템 자원을 1초 단위로 볼 수 있는 기능

 

7. 웹 및 SSH 접속 환경에서도 친근한 인터페이스 : 웹 인터페이스를 불신하는 사용자를 위한 Text Box등의 편리하고 직관적인 인터페이스. 다음 그림과 같은 웹 인터페이스 및 TUI 기반의 직관적인 인터페이스를 모두 제공한다.

 

3f2dd576c2222ea6b583b69acfe73700_1645170709_6221.png   3f2dd576c2222ea6b583b69acfe73700_1645170723_8112.png 

 

8. 기타 기능 : 수행내역 로깅기능, 자체 접근제어 기능, 서비스 모니터링 및 재시작 기능. 대부분 웹 인터페이스 관리 프로그램이 문제점이 작업한 내역을 알 수 없다는 것이다. 이러한 문제점을 개선하기 위해 수행내역을 로그로 기록한다. 주요 서비스를 모니터링 하고 재시작 하는 기능을 구현하여 원활한 시스템 관리를 할 수 있게 한다.

 

9. 국제화 : 리눅스 표준 국제화 방법인 gettext를 사용하여 기본 영어, 한국어를 지원하게 하며, 향후 타 언어 추가 시 PO파일 추가만으로 다국어 지원한다.

 

 

 

설치 전 고려 사항

- 웹서버 : LSMP는 자체 웹서버를 제공한다. 웹 서버를 작동시키기 위해 별도의 포트가 필요하다. 서버에서 사용하지 않는 포트를 할당하고, 방화벽에서 접속 가능하도록 열어 두어야 한다. (TUI 인터페이스만 사용할 경우 웹서버는 필요하지 않음)

- python : LSMP는 현재 가장 많이 사용하는 python 2.4 와 호환을 가진다.

 

 

 

라이센스

LSMP의 라이센스는 GPL을 따르며, 원문은 소스코드의 COPYING 파일을 참고하거나, 웹사이트(http://www.gnu.org/licenses/)를 참고하길 바란다.

 

 

LSMP 설치

프로그램 설치

프로그램 다운로드


 

3f2dd576c2222ea6b583b69acfe73700_1645170755_6595.png
 

 

프로젝트 사이트 방문 후 중간에 “Download Now"를 눌러 프로그램을 다운로드 받는다. 그런 다음 LSMP를 설치 할 리눅스 시스템에 업로드 시킨 후 다음 단계에서 설치한다.

 

프로그램 설치

LSMP 설치는 다음과 같이 Unix 표준 설치법에 따라 진행한다.

tar xvfpz lsmp-1.0.0.tar.gz

cd lsmp-1.0.0

./configure --prefix=/usr/local/lsmp

make

make install

configure 단계에서 '--prefix' 옵션을 주어 /usr/local/lsmp 아래에 프로그램을 설치한다. (옵션을 주지 않으면, 기본 /usr/local/ 아래에 프로그램이 설치된다.)

프로그램 기본 설정

설정파일 편집

LSMP1개의 설정파일이 있다. 설정파일의 위치는 설치 시 지정한 디렉토리(본 매뉴얼을 따라 설치했다면, /usr/local/lsmp가 된다)아래 conf/디렉토리 안에 존재한다.

설정파일 : /usr/local/lsmp/conf/lsmp.conf

 

 

설정파일 ( lsmp.conf )

# LSMP Configuration file

 

[general]

insdir=/usr/local/lsmp

 

[lsmpd]

port=9694 # LSMP 웹인터페이스 포트

pwfile=pwfile # LSMP 웹인터페이스 비밀번호 저장 파일

daemon=True

logfile=lsmp_web.log # LSMP 웹로그 저장 파일

 

[bind]

bind_conf=/etc/named.conf # 네임서버 설정파일 경로

bind_named_dir=/var/named/chroot/var/named # 네임서버 zone 파일 위치

bind_nsDomain=ns.your-domain.com # 네임서버 도메인

 

[mysql]

mysql_root_pw=MySQLRootPasswd # MySQL root 패스워드

 

[httpd]

http_vhost_conf=/usr/local/apache/conf/extra/httpd-vhosts.conf

# Apache 가상호스트 설정파일

 

[status]

eth_dev=eth0 # 트래픽 모니터링 할 장치명

설정파일 ( lsmp.conf )은 위의 같은 항목이 있다. 모든 옵션은 '지시자=과 같은 형식으로 설정한다. 각 지시자는 섹션으로 나눠져 있으며 “[이름]”은 섹션을 의미한다. ‘#’으로 시작하는 줄은 주석으로 취급된다.

* 주의) 모든 설정파일 변경 후에는 lsmpd(LSMP 웹서버)를 재 시작해 주어야 한다. 방법: /usr/local/lsmp/sbin/lsmpdctl restart

지시자 정의

 

[general] insdir=경로

LSMP가 설치된 경로이다. 이 값은 프로그램 설치 시 정의된다.

) insdir=/usr/local/lsmp

 

 

[lsmpd] port=포트번호

LSMP의 웹 인터페이스를 제공하기 위해 웹서버를 작동한다. 이 웹서버가 사용할 포트를 지정한다. 기본 9694이다. (포트 변경 후에는 방화벽에서 설정한 포트를 오픈해 주어야 한다.)

) port=9694

 

[lsmpd] pwfile=파일이름

LSMP의 웹 인터페이스 접근 시 세션을 통한 사용자 인증을 받게 된다. 사용자 정보가 저장될 파일의 이름을 지정한다.

) pwfile=pwfile

 

[lsmpd] daemon=[True|False]

LSMP의 웹 인터페이스 제공을 위한 웹서버(lsmpd)의 실행 형태를 정의 한다. 기본 데몬으로 가동되며, foreground형태의 가동도 가능하다.

) daemon=True

 

[lsmpd] logfile=파일이름

LSMP의 웹로그를 저장하는 파일이름을 지정 한다.

) logfile=lsmp_web.log

[bind] bind_conf=경로및파일이름

네임서버(bind)의 주 설정파일 위치 및 이름을 지정 한다.

) bind_conf=/etc/named.conf

 

[bind] bind_named_dir=경로및파일이름

네임서버(bind)zone 파일 경로를 지정한다.

) bind_named_dir=/var/named/chroot/var/named

 

[bind] bind_nsDomain=도메인

네임서버(bind)DNS서버로 사용할 도메인 이름을 지정한다.

) bind_nsDomain=ns.sulinux.net

 

[mysql] mysql_root_pw=패스워드

DB서버(MySQL)root 비밀번호를 설정한다.

) mysql_root_pw=MySQLRootPasswd

 

[httpd] conf_graph_process=경로및파일이름

웹서버(Apache)의 가상호스트 설정파일 위치 및 이름을 설정한다.

(대부분 httpd.conf 또는 httpd-vhosts.conf 이다.)

) http_vhost_conf=/usr/local/apache/conf/extra/httpd-vhosts.conf

 

[status] eth_dev=네트워크디바이스명

LSMP에서 시스템 트래픽 상태를 확인하기 위해 모니터링 할 네트워크 디바이스명을 설정한다.

) eth_dev=eth0

 

LSMP 구조 및 모듈

 

전체 설계

 

3f2dd576c2222ea6b583b69acfe73700_1645170788_6559.png
 

 

 

전체 구조도는 위 그림과 같다. lsmp2가지 실행 방법 및 2가지 인터페이스를 제공한다. 하나는 WEB인터페이스이며, 하나는 TUI Box인터페이스이다. 인터페이스 부분은 lsmp CGI 프로그래들과 lsmp 프로그램이 담당하게 된다. lsmpd는 데몬 형태로 작동하며, 특정 포트를 오픈하여 리스닝하고 있다 요청을 처리하게 된다. lsmpd CGI에서 처리하는 대부분의 요청은 각 기능별 모듈(lsmp_modules)을 사용하여 처리한다. 각 요청은 lsmp_log를 이용해 로그 기록 된다.

lsmp프로그램은 lsmpd와 비슷한 작동구조를 가지지만, lsmp는 일반 응용프로그램과 같이 프로그램 실행시에만 작동(데몬이 아님)하게 된다. , lsmpText 기반의 Box 인터페이스를 제공하는 프로그램이기 때문에 콘솔의 터미널 또는 Telnet, SSH와 같은 원격접속 시에도 사용할 수 있다.

모듈 설계

 

모듈 설계 고려 사항

- 각 모듈은 Class 단위로 설계하며, 모든 활동은 Method를 사용하여 진행된다. (요구사항 4.2.1)

- 프로그램 구현 언어는 Python으로 하며 Python의 장점을 활용한다.

- 모든 활동은 로그로 기록되므로 충분한 활동 기록을 남긴다.(요구사항 1.7.1)

- 한 프로그램으로 2가지 인터페이스를 제공하기 때문에 데이터를 클레스로 정의한다.

 

lsmp

 

콘솔 터미널 및 원격접속(Telnet, SSH)시 관리자에 의해서 실행되는 프로그램이다.

3f2dd576c2222ea6b583b69acfe73700_1645170805_7973.png
 

lsmp는 다음과 같이 수행된다.

시스템 관리자에 의해서 lsmp프로그램이 실행된다.

설정파일인 lsmp.conf 파일을 로드하여 환경을 불러드린다.

시스템 관리자가 조작 할 수 있는 TUI Box 인터페이스를 생성한다.

TUI Box 인터페이스에서 수행되는 여러 활동은 lsmp_core에 전달되며, lsmp_core의 수행 결과를 다시 TUI Box 인터페이스로 시스템 관리자에게 보여준다.

TUI Box 인터페이스에서 종료를 선택하면, lsmp 프로그램은 종료되게 된다.

lsmpd

 

lsmp의 웹 인터페이스를 제공하기 위한 웹서버이다. 웹 인터페이스를 사용하기 위해서는 항상 실행되고 있어야 하는 데몬 형태의 프로그램이다.

 

3f2dd576c2222ea6b583b69acfe73700_1645170821_2419.png
 

 

lsmpd는 다음과 같이 수행된다.

 

시스템 관리자에 의해서 “lsmpdctl start"명령으로 lsmpd프로그램이 실행된다.

설정파일인 lsmp.conf 파일을 로드하여 환경을 불러드린다.

이미 실행되고 있는 데몬 및 설정파일(lsmp.conf)에 명시된 포트가 이미 열려있는지 확인한다.

의 절차에서 오류가 발생되면, 오류 표시 및 로그를 남기고 종료한다.

포트를 열고 웹 인터페이스를 제공한다. 웹 인터페이스에서 수행되는 여러 활동은 lsmp_core에 전달되며, lsmp_core의 수행 결과를 다시 웹 인터페이스로 시스템 관리자에게 보여준다.

종료는 lsmpd 프로세스를 "lsmpdctl stop"명령어로 데몬을 종료 시킨다.

lsmp_core 모듈

 

lsmp의 핵심 기능을 수행하는 모듈이다. lsmplsmpd에서 내려지는 명령을 받아 수행하고, 로그에 기록하며, 각 행동별로 타 모듈을 불러 수행하고 그 결과를 lsmp, lsmpd에 제공하는 모듈이다.

 

3f2dd576c2222ea6b583b69acfe73700_1645170836_7234.png
 

 

lsmp_core는 다음과 같이 수행된다.

 

lsmp, lsmpd의 인터페이스에서 함수호출 형태로 명령을 받아드리다.

받아드린 명령은 사람일 읽기 편한 형태로 작성하여 "lsmp_log" 모듈에 전달하여 로그파일에 기록한다.

받아드린 명령을 분석하여 활동을 판단하여 각 “lsmp_module”에 명령을 하달한다.

의 절차에서 수행된 결과 및 오류를 "lsmp_log" 모듈에게 전달하여 로그 파일에 기록한다.

위 결과는 명령을 호출 한 lsmp 또는 lsmpd 에 전달된다.

 

lsmp_log 모듈

 

lsmp_log 모듈은 lsmp_core 모듈에서 전달된 내용을 로그 파일에 남기는 기능을 수행한다.

 

3f2dd576c2222ea6b583b69acfe73700_1645170851_9552.png
 

 

lsmp_log는 다음과 같이 수행된다.

 

“lsmp_core 모듈로부터 로그를 남길 내용을 받게 된다.

설정파일(lsmp.conf)에 정의된 로그 파일 경로 및 파일을 확인한다. 만약 없으면 생성한다.

로그 파일에 현재 시간 및 날짜를 기록하고 로그 내용을 기록한다.

 

 

 

lsmp_mod_XXX 모듈들

 

각 모듈은 class 형태로 존재하며, “lsmp_core" 모듈에 의해서만 호출된다. 각 명령은 function 형태로 호출되며 결과는 클래스 형태의 데이터를 리턴한다.

 

사용자 관리 기능

모듈 이름

lsmp_mod_user

요구사항 번호

1.1.1

요구사항 이름

리눅스 시스템 사용자 관리

함수명

get()

파라미터

full, user

1. 현재 설정된 사용자를 반환한다.

2. 파라미터

- full : 설정된 모든 사용자를 반환. Falseuid 500이상, nfsnobody 제외 한 사용자 리스트

- user : 특정 사용자의 정보를 반환 한다. 값이 없으면 모든 사용자의 정보를 반환한다. user 에 값이 있으면 full의 값은 영향을 미치지 않는다.

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<user>

<id> </id>

<uid> </uid>

<gid> </gid>

<comment> </comment>

<home_dir> </home_dir>

<shell> </shell>

<locked>True|False</locked>

</user>

..........

</result>

함수명

add()

파라미터

user, comment, pw, shell

1. 새로운 사용자를 추가한다.

2. 파라미터

- user : 사용자 ID

- comment : 사용자에 대한 설명

- pw : 비밀번호

- shell : 사용할 쉘 예) bash, /dev/null

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.) , XML형식의 문자열

<result>

<ok>True|False</ok>

<message> </message>

</result>

옵 션

del()

파라미터

user, del_home

1. 사용자를 제거한다.

2. 파라미터

- user : 사용자 ID

- del_home : True면 삭제, False면 삭제하지 않음

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

옵 션

mod()

파라미터

user, comment, pw, home_dir, shell, lock

1. 사용자의 정보를 변경한다.

2. 파라미터

- user : 사용자 ID

- comment : 사용자에 대한 설명

- pw : 비밀번호

- home_dir : 계정의 홈 디렉토리

- shell : 사용할 쉘 예) bash, /dev/null

- lock : 사용자 계정 잠금 ( True : lock, False: unlock)

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

옵 션

get_shells()

파라미터

없음

1. 할당 가능한 쉘을 반환한다.

2. 파라미터

- 없음

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<shell> </shell>

........

</result>

모듈 이름

lsmp_mod_iuser

요구사항 번호

1.1.2

요구사항 이름

리눅스 통합 사용자 관리

함수명

get()

파라미터

user

1. 현재 설정된 통합 사용자를 반환한다.

2. 파라미터

- user : 특정 사용자의 정보를 반환 한다. 값이 없으면 모든 사용자의 정보를 반환한다.

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<user>

<id> </id>

<comment> </comment>

<home_dir> </home_dir>

<locked>True|False</locked>

<domain> </domain>

<db_user> </db_user>

<db_name> </db_name>

<self_dns> </self_dns>

</user>

..........

</result>

함수명

add()

파라미터

user, comment, pw, domain, db_user, db_pw

db_name, dns_set

1. 새로운 통합 사용자를 추가한다. 통합 사용자 리스트를 별도 파일에 저장한다. 비밀번호는 암호화 된 상태로 저장한다.

2. 파라미터

- user : 사용자 ID

- comment : 사용자에 대한 설명

- pw : 비밀번호

- domain : 도메인 (도메인 생성시 www, mail은 기본 생성하고, 모든 서브도메인(“*”) 설정)

- db_user : DB사용자명(기본 user와 같다)

- db_pw : DB비밀번호 (기본 pw와 같다)

- db_name : DB이름 (기본 user와 같다)

- dns_set : DNS서버 설정 유무 ( True : 설정, False: 설정하지 않음)

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

옵 션

del()

파라미터

user, del_data

1. 통합 사용자를 제거한다. 모든 설정(DNS, , 사용자, DB, 메일) 제거

2. 파라미터

- user : 사용자 ID

- del_data : True면 삭제, False면 삭제하지 않음

(삭제 항목 : home디렉토리, DB데이터)

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

옵 션

mod()

파라미터

user, comment, pw, domain, db_user, db_pw

db_name

1. 사용자의 정보를 변경한다.

2. 파라미터

- user : 사용자 ID

- comment : 사용자에 대한 설명

- pw : 비밀번호

- domain : 도메인

- db_user : DB사용자명(기본 user와 같다)

- db_pw : DB비밀번호 (기본 pw와 같다)

- db_name : DB이름 (기본 user와 같다)

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

DNS서버(Bind) 관리기능

 

모듈 이름

lsmp_mod_bind

요구사항 번호

1.2.1

요구사항 이름

DNS서버 도메인 설정 관리

함수명

get()

파라미터

domain

1. 현재 설정된 도메인은 반환한다.

2. 파라미터

- domain : 특정 도메인의 정보를 반환 한다. 값이 없으면 모든 도메인의 정보를 반환한다.

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<domain>

<name> </name>

<comment> </comment>

<ttl> </ttl>

<records>

<record>

<rec_name> </rec_name>

<type> </type>

<ip> </ip>

<line_no> </line_no>

</record>

............

</records>

</domain>

..........

</result>

함수명

add()

파라미터

domain, comment, ip, ttl, rec_name, rec_type, rec_ip

1. 새로운 도메인을 설정한다. 만약 동일한 도메인이 있으면 레코드를 추가한다.

2. 파라미터

- domain : 도메인

- comment : 설명

- ip : 아이피 주소

- ttl : TTL , 생략가능, 기본 43200 (12시간)

- rec_name : 레코드 이름 (서브 도메인), 생략가능

- rec_type : 레코드 타입 , 생략가능, 기본 A

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

옵 션

del()

파라미터

domain, rec_line_no

1. 도메인 설정 제거, 레코드 삭제 한다.

2. 파라미터

- domain : 도메인

- rec_line_no : 레코드 라인 번호, 만약 레코드 라인 번호를 명시하지 않으면 도메인에 대한 모든 정보를 삭제한다.

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

옵 션

mod()

파라미터

domain, comment, ttl, rec_name, rec_type, rec_ip, rec_line_no

1. 도메인 설정을 수정한다.

2. 파라미터

- domain : 도메인 (필수)

- comment : 사용자에 대한 설명, 생략가능

- ttl : TTL , 생략가능

- rec_name : 레코드 이름, 생략가능

- rec_type : 레코드 타입, 생략가능 기본 A

- rec_ip : 레코드 IP, 생략가능

- rec_line_no : 레코드 수정시 설정파일 라인 이름, 생략가능

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

옵 션

bind_restart()

파라미터

없음

1. 도메인 네임서버(bind)를 재시작 한다.

2. 파라미터

- 없음

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

DB(MySQL)서버 관리 기능

 

모듈 이름

lsmp_mod_mysql

요구사항 번호

1.3.1

요구사항 이름

DB서버 관리 기능

함수명

get()

파라미터

db_user

1. 현재 설정된 DB사용자, DB, DB용량을 반환한다.

2. 파라미터

- db_user : 특정 DB사용자의 정보를 반환 한다. 값이 없으면 모든 사용자의 정보를 반환한다.

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<db_user>

<name> </name>

<comment> </comment>

<dbs>

<db>

<db_name> </db_name>

<db_size> </db_size>

</db>

............

</dbs>

</db_user>

..........

</result>

함수명

add()

파라미터

db_user, comment, db_user_pw, db_name

1. 새로운 DB사용자를 추가한다. 만약 동일한 사용자가 있으면, DB를 생성하고 권한을 준다.

2. 파라미터

- db_user : DB사용자

- comment : 설명

- db_user_pw : DB사용자 비밀번호

- db_name : DB이름

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

옵 션

del()

파라미터

db_user, db_name

1. DB설정 및 DB제거

2. 파라미터

- db_user : DB사용자

- db_name : DB이름, 만약 DB이름이 명시되지 않으면 DB사용자를 제거하고, DB사용자 관련 DB를 모두 삭제한다.

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

옵 션

mod()

파라미터

db_user, comment, db_user_pw

1. DB사용자의 코멘트 및 비밀번호를 수정한다. DB 사용자의 설명, 비밀번호를 변경하며, 둘 중 하나는 꼭 있어야 한다.

2. 파라미터

- db_user : DB사용자

- comment : 설명 (생략가능)

- db_user_pw : DB사용자 비밀번호 (생략가능)

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

옵 션

mysql_flush_privileges()

파라미터

없음

1. MySQL서버의 DB사용자 권한 설정을 적용하기 위해 권한 테이블을 적용한다.

2. 파라미터

- 없음

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

웹서버(Apache) 관리 기능

 

모듈 이름

lsmp_mod_apache_vhost

요구사항 번호

1.4.1

요구사항 이름

웹서버 가상호스트 관리

함수명

get()

파라미터

user_home_dir, domain

1. 현재 설정된 가상호스트 내역을 리턴한다. 파라미터가 입력되지 않으면, 가상호스트 설정 전체를 반환한다.

2. 파라미터

- user_home_dir : 사용자의 홈 디렉토리. (이 파라미터에 값이 있으면, 값과 관련된 DocumentRoot를 가진 가상호스트 설정을 리턴한다.)

- domain : 도메인 이름 ( 이 파라미터에 값이 있으면, 이 값과 관련된 ServerName, ServerAlias를 가진 가상호스트 설정을 리턴한다.)

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<vhost>

<head></head>

<records>

<record>

<line_no> </line_no>

<direct> </direct>

<value> </value>

</record>

............

</records>

<tail></tail>

</vhost>

..........

</result>

함수명

add()

파라미터

domain, comment, documentroot, url

1. 새로운 가상호스트를 추가한다.

2. 파라미터

- domain : 도메인 ( 기본적으로 도메인은 ServerAlias로 설정하고, www.도메인을 ServerName으로 설정한다.)

- comment : 설명

- documentroot : 가상웹Root

- url : 이 값이 있으면, documentroot 값이 무시된다. 추가한 도메인으로 접속시 url으로 Redirect 하는 설정을 한다.)

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

옵 션

del()

파라미터

user_home_dir, domain

1. 가상호스트 설정을 삭제한다.

2. 파라미터

- user_home_dir : 사용자의 홈 디렉토리. (이 파라미터에 값이 있으면, 값과 관련된 DocumentRoot를 가진 가상호스트 설정을 삭제한다.)

- domain : 도메인 이름 ( 이 파라미터에 값이 있으면, 이 값과 관련된 ServerName, ServerAlias를 가진 가상호스트 설정을 삭제한다.

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

옵 션

mod()

파라미터

line_no, old_value, new_value

1. 도메인, 홈 디렉토리, 별명, Redirect URL을 변경한다.

2. 파라미터

- line_no : 설정파일의 설정 라인 번호

- old_value : 예전 값

- new_value : 새로운 설정 값

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

옵 션

apache_restart()

파라미터

없음

1. Apache 웹서버를 재시작 한다.

2. 파라미터

- 없음

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

백업 관리 기능

 

모듈 이름

lsmp_mod_backup

요구사항 번호

1.5.1

요구사항 이름

백업관리 기능

함수명

get()

파라미터

없음

1. 현재 설정된 백업 설정들을 불러 온다.

2. 파라미터

- 없음

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<backup>

<name> </name>

<comment> </comment>

<bk_files>

<file> </file>

..........

</bk_files>

<store_dir></store_dir>

<compress>True|False</compress>

<bk_day> </bk_day>

<bk_hour> </bk_hour>

<bk_minute> </bk_minute>

<bk_save_period> </bk_save_period>

</backup>

..........

</result>

함수명

add()

파라미터

name, comment, bk_files[], store_dir, compress,

bk_day, bk_hour, bk_minute, bk_save_period

1. 새로운 백업 설정을 추가한다.

2. 파라미터

- name : 백업 고유 이름 ( 차 후 변경 할 수 없음 )

- comment : 설명

- bk_files[] : 백업 디렉토리 리스트, 배열

- store_dir : 저장 경로

- compress : 압축 여부 (Treu, False)

- bk_day : 백업 날짜 (월 중 날짜) , cron 형식을 따름 ( * 매일, */2 : 2일에 한번)

- bk_hour : 백업 시 , cron 형식에 따름

- bk_minute : 백업 분

- bk_save_period : 백업 데이터 보관 기간

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

옵 션

del()

파라미터

name

1. 백업 설정 삭제

2. 파라미터

- name : 백업 고유 이름 ( 차 후 변경 할 수 없음 )

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

옵 션

mod()

파라미터

name, comment, bk_files[], store_dir, compress,

bk_day, bk_hour, bk_minute, bk_save_period

1. 백업 설정을 변경한다.

2. 파라미터

- name : 백업 고유 이름 ( 변경 불가 )

- comment : 설명

- bk_files[] : 백업 디렉토리 리스트, 배열

- store_dir : 저장 경로

- compress : 압축 여부 (Treu, False)

- bk_day : 백업 날짜 (월 중 날짜) , cron 형식을 따름 ( * 매일, */2 : 2일에 한번)

- bk_hour : 백업 시 , cron 형식에 따름

- bk_minute : 백업 분

- bk_save_period : 백업 데이터 보관 기간

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

옵 션

get_bked_list

파라미터

없음

1. 현재 백업대상 디렉토리에 보관된 백업 내용을 보여준다.

2. 파라미터

- 없음

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<stored_datas>

<data>

<date> </date>

<size> </size>

<dir_name> </dir_name>

</data>

</stored_datas>

</result>

옵 션

del_bked()

파라미터

date, dir_name

1. 백업 저장데이터 삭제

2. 파라미터

- date : 백업된 날짜

- dir_name : 백업된 데이터 저장 경로

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

 

 

시스템 현황 모니터링

 

모듈 이름

lsmp_mod_status

요구사항 번호

1.6.1

요구사항 이름

시스템 현황 모니터링

함수명

get

파라미터

없음

1. 현재 시스템 현황을 리턴한다.

2. 파라미터

- 없음

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<cpu> </cpu>

<loadavg> </loadavg>

<disks>

<disk>

<part_name> </part_name>

<total> </total>

<useage> </useage>

</disk>

.........

</disks>

<network>

<in> </in>

<out> </out>

</network>

</result>

기타 기능

 

모듈 이름

lsmp_mod_service

요구사항 번호

1.7.3

요구사항 이름

서비스 관리

함수명

get()

파라미터

없음

1. 현재 설정된 서비스 리스트를 불러 온다. ( /etc/xinet.d/, /etc/init.d/)

2. 파라미터

- 없음

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<services>

<service>

<name> </name>

<comment> </comment>

<status> </status>

</service>

..............

</services>

</result>

함수명

start()

파라미터

name

1. 정지된 서비스를 시작한다.

2. 파라미터

- name : 서비스 이름(고유 이름)

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

함수명

stop()

파라미터

name

1. 실행 중인 서비스를 정지 시킨다.

2. 파라미터

- name : 서비스 이름(고유 이름)

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

함수명

restart()

파라미터

name

1. 실행 중인 서비스를 재 시작 한다.

2. 파라미터

- name : 서비스 이름(고유 이름)

3. 반환 형식 : 클래스의 인스턴트(본 문서는 XML형식으로 표현한다.)

<result>

<ok>True|False</ok>

<message> </message>

</result>

 

 

 

 

 

소스 트리 구조 및 역할

 

LSMP의 소스 구조는 다음과 같다. GNU표준을 따르기 위해 여러 파일들이 있으며, 국제화를 위한 po 디렉토리, 소스 디렉토리인 src가 있다.

다음은 소스 트리에 대한 간략한 설명이다.

 

lsmp

|-- AUTHORS : 개발자의 이름이 기록된 파일 (GNU 표준)

|-- COPYING : 저작권을 명시된 파일 (GNU 표준)

|-- ChangeLog : 프로그램 변경 사항이 기록된 파일 (GNU 표준)

|-- INSTALL : 프로그램 설치법이 기록된 파일 (GNU 표준)

|-- Makefile.am : autotool에서 Makefile만들 때 참고 하는 파일

|-- Makefile.in : autotool(변경금지)

|-- NEWS : 프로그램 뉴스에 대한 기록 파일 (GNU 표준)

|-- README : 프로그램 전반적인 소개 (GNU 표준)

|-- configure : autotool(변경금지)

|-- configure.ac : autotool의 입력으로 사용되는 파일. 프로그램 버전, 라이브러리, 함수, 명령어등이 수록됨

|-- doly.autotools : 인스톨러 변경후 configure스크립트 만들어주는 스크립트

|-- install-sh : autotool(변경금지)

|-- missing : autotool(변경금지)

|-- po : 국제화를 위한 po 파일 디렉토리

| |-- Makefile.am : 국제화 관련 po 파일을 이용한 mo 파일 생성 및 설치 Make파일, 국제화 추가시에 변경해야 함

| |-- Makefile.in : autotool(변경금지)

| `-- lsmp.ko.po

`-- src : 프로그램 소스 메인 디렉토리

|-- CGIHTTPServer.py : CGI 서버 프로그램

|-- Makefile.am : make 활동에 필요한 내용이 있음 (소스 변경시 수정)

|-- Makefile.in : autotools(변경금지)

|-- common.css : 스타일 시트 파일

|-- compile.py : python 컴파일 하기 위한 소스

|-- doly_replace_inst_dir_build : 설치시 설치 경로를 지정하여 변경

|-- images : 웹 인터페이스에서 사용하는 이미지 파일들

| |-- LSMP-logo.jpg : 로고 파일

| |-- barBg.gif : 바의 배경 이미지

| |-- graph.gif : 막대그래프에서 사용되는 이미지

| |-- list_checked.png : 메뉴가 눌러졌을 때 배경 이미지

| |-- titleBar.png : 타이틀바 이미지

| `-- title_bg.gif : 타이틀 배경이미지

|-- index.html : 초기 페이지

|-- item.html : GUI 인터페이스 좌측 항목

|-- lsmp : CGI 프로그램 디렉토리

| |-- apache_vhost.lsmp : 아파치 가상호스트 GUI 인터페이스

| |-- auth.lsmp : 세션인증을 위한 부분

| |-- backup.lsmp : LSMP 백업기능 GUI인터페이스

| |-- bind.lsmp : DNS(bind)서버 관리기능 GUI인터페이스

| |-- index.lsmp : LSMP 초기 페이지

| |-- iuser.lsmp : 통합사용자 관리기능 GUI인터페이스

| |-- mini_status.lsmp : 시스템 상태 좌측 작은 상태 GUI

| |-- mysql.lsmp : MySQL 서버관리 기능 GUI인터페이스

| |-- service.lsmp : 서비스 관리기능 GUI인터페이스

| |-- status.lsmp : 시스템 상태 확인 기능 GUI인터페이스

| `-- user.lsmp : 사용자 관리기능 GUI인터페이스

|-- lsmp-title.html : GUI 상단 타이틀

|-- lsmp.conf : LSMP 설정파일

|-- lsmp.py : LSMP TUI 메인 프로그램

|-- lsmp_conf.py : 설정파일을 다루기 위한 소스

|-- lsmp_html_common.py : HTML의 상단, 하단의 소스

|-- lsmp_log.py : LSMP의 활동에 대한 로그를 기록하기 위한 소스

|-- lsmpd.py : LSMP GUI 웹서버 데몬

|-- lsmpdctl : GUI 웹서버 데몬관리를 위한 스크립트

|-- mkpasswd.py : GUI 사용자 및 비밀번호 관리를 위한 소스

|-- mod_apache_vhost.py : LSMP 아파치 가상호스트 관리 모듈

|-- mod_auth.py : GUI 세션 인증을 위한 모듈

|-- mod_backup.py : LSMP 백업 관리 모듈

|-- mod_bind.py : LSMP Bind 관리 모듈

|-- mod_iuser.py : LSMP 통합사용자 관리 모듈

|-- mod_mini_status.py : LSMP GUI 인터페이스 좌측 미니 상태 모듈

|-- mod_mysql.py : LSMP MySQL 관리 모듈

|-- mod_passwd.py : GUI 인증을 위한 비밀번호 관리 모듈

|-- mod_pwfile.py : GUI 인증을 위한 비밀번호 파일 관리 모듈

|-- mod_service.py : LSMP 서비스 관리 모듈

|-- mod_status.py : LSMP 상태 관리 모듈

|-- mod_terminal.py : GUI 인증을 위한 비밀번호 생성시 터미널 제어 모듈

|-- mod_user.py : LSMP 사용자 관리 모듈

`-- session.py : GUI 세션관련 소스

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,033 명
  • 현재 강좌수 :  35,781 개
  • 현재 접속자 :  105 명