Apec E-Learning 시스템 구축 및 Moodle설치 및 환경설정. Developers Manual
이 문서는 Moodle(이하 “무들 ”)의 디자인에 대한 기술과 참여 하는 방법에 대해 기술 한다.
문서의 섹션 :
1. Moodle( 무들 )의 구조 아래의 사항은 기본적으로 OS(Linux나 *nix)가 설치된 상태라고 가정을 한다.
Linux 나 FreeBSD를 설치한다(OS 설치)
Fedora Core4 /Debian 나 FreeBSD 5.4R을 설치한다. (개인적으로 FreeBSD를 권장합니다.)
Learning Activities( 작동 법 배우기 )
테마
언어
데이터베이스 구조
코스 포맷
문서와 기사
버그트랙커 참여하기
무들 설치하기 무들의 구조
시스템 관리자 화면에서 무들은 다음의 기준에 따라 디자인 되어 있다.
무들은 다양한 플랫폼에서 돌아갈 수 있다.
웹 어플리케이션 플 랫폼으로서 PHP, MySQL로 조합된 대부분의 플랫폼에서 돌아간다. (무들은 리눅스, 윈도우, 맥OS X)에서 개발되어지고 있다) 무들은 또한 데이터베이스 추상화에ADOdb 라이브러리를 사용 하는데, 이것은 무들이 또한 다른 여러 브랜드의 데이터베이스(불행히도, 이런 DB에 대해 setup 시 테이블 작업이 되어 있지는 않지만, 추후에 추가 될 예정)도 사용 가능하다는 의미이다.
무들은 설치가 쉽고, 배우고 변경하기도 쉽다 .
1999년 이전 무들의 프로토타입은 Zope( 향상된 객체지향 웹 어플리케이션 서버 )를 사용하여 만들었다. 불행히도 비록 아주 훌륭한 기술일지라도 그것 은 아주 무리하게 learning curve(배움곡선???)를 가지며, 시스템 관리자에게 있어서 유연하지 못하다는 것을 알게 되었다. 다른 한편으로, PHP 스크립트 언어는 배우기 쉽다.(특히 다른 어떤 스크립트언어를 사용해서 프로그램을 해봤다면..) 그래서 클래스 지향적인 디자인 사용을 자제하기로 하고, 초보자들이 이해하기 쉽게 간단하게 만드는 것을 주안을 해서 디자인을 했다. 코드 재사용은 라이브러리를 사용하는 것 대신에 명백하게 명명된(이름지어진) 함수를 사용 하였고, 스크립트 파일의 일관성 있는 레이아웃을 유지할 수 있었다. PHP는 또한 설치하기 쉬우며(바이너리는 대부분의 플랫폼에서 사용 가능하다) 대부분의 웹호스팅 서비스가 표준으로 제공 하는 점이 널리 수용가능하게 하는 것이다.
다음버전으로 업그레이드가 쉽다.
무들은 모든 플러그인 모듈의 버전과 같이 버전이 있고, 그 메커니즘은 무들이 당연히 자신을 새로운 버전으로 업그레이드 할 수 있는 기능이 함께 내재되어 있다.(예를 들어, 데이터베이스 테이블의 이름변경이나 새로운 필드의 추가 같은 것 …) 만약 unix에서 CVS같은 것을 사용한다면, “cvs updated ”를 실행하는 것으로 upgrade가 되고 그것으로 upgrade된 완전한 홈페이지에 방문할 수 있을것이다.
다운 받는곳의 위치는 /usr/local/src/ 라는 곳이라 가정한다.
2.2 moodle1.5.2.tar.gz 압축을 푼다.
# tar –xvzf moodle1.5.2.tar.gz
=> moodle 디렉토리가 생성됨.
2.3 운영할 곳으로 이동시킨다.(mv moodle 이동할디렉토리/)
여기서 운영 방식에 따라 위치가 달라지게 된다.
2.3.1 호스팅 받을 경우 접속하는 계정 밑에 public_html/ 디렉토리가 웹서버의 root디렉토리가 되므로
그 하위디렉토리로 moodle을 이동한다.
# mv /usr/local/src/moode ~계정/public_html/
2.3.2 별도의 서버를 임대해서 사용할 경우
이때 기본 www의 root디렉토리가 /usr/local/www/data/ 라고 가정할 때 그 하위로 이동
# mv /usr/local/src/moodle /usr/ local /www/data/
2.4 moodle 이 사용할 DB계정생성/DB권한생성/DB생성하기
2.4.1 먼저 기존에 설치된 mysql에 root권한으로 접속을 하면 다음과 같이 mysql> 이라는 프롬프트가보인다.
이전까지의 작업이 제대로 되었다고 가정하고 이후의 작업을 설명하겠습니다.
아래의 사항은 MySQL4.1.x 대를 기준으로 설명하는 글입니다 .
Mysql> insert into db values('%', 'moodle', 'apecuser', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y',
'Y', 'Y', 'Y', 'Y');
Mysql> INSERT INTO user VALUES('localhost','apecuser',PASSWORD( 'apecmoodle' ),
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y', 'Y','Y','Y','Y','Y','Y','Y','','','',
'','0','0','0');
Mysql> INSERT INTO user VALUES('%','apecuser',PASSWORD( 'apecmoodle' ),
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','',
'','0','0','0');
M ysql> INSERT INTO host VALUES('localhost','moodle','Y','Y','Y','Y','Y','Y','Y','Y','Y',
'Y','Y','Y');
Mysql> INSERT INTO host VALUES('%','moodle','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
Mysql> create database moodle;
Mysql> flush privileges;
위의 사항은 보안에 대해서 일단 배제된 사항으로 DB보안에 대한 사항은 반영하여 추후
수정토록 하겟습니다.
2.5 moodle 설치작업
http://해당url혹은 ip/moodle /
처음 위 주소를 웹브라우저의 주소창에 입력을 하게 되면 설치화면으로 넘어가게 됩니다.
간단한 설정사항(현재 디렉토리/DBMS/데이터베이스명/DB사용자계정/비번)을 확인하고 설치
작업을 계속합니다. 해당사항을 읽어본 후 계속(continue)버튼을 누르거나 설정을 변경하신 후
계속(continue)버튼을 눌러 설치 작업을 진행/완료 하시면 됩니다.
설치작업이 완료됩니다.
문서입력 규정
각 수강과목별 수강기간이 있다면 수강기간을 명기. (각 주차마다 배워야 할 범위기재. 혹은 주제별로해서 학습해야될 기간을 명시하지 않아도 됩니다./ 택일)
각 과목의 제목과 내용을 별도로 명기 (가능하다면 목차도 표기하면 좋겠습니다.) 해당 기간에 배울 부분별로 분리해서 입력.
각 영역별/주제별로 분리해 입력.
입력범위는 1027*768을 기준으로 가급적 한 화면을 넘지않도록 함 (내용이 이어지면 한페이지를 넘겨서 스크롤로 볼 수 있게 처리).
이미지가 있는 경우 별도로 처리하는 것을 기준으로 함.
별도의 자료가 필요한 경우 파일로 작성된 경우 첨부파일로하며(가급적 크기는 10Mbyte내외) 웹상의 자료를 참조할 경우 별도의 참고자료로 링크를 걸어서 해당 페이지에서 링크를 눌러 이동할 수 있게 함.
문서상에서 웹주소(www.***.com/www.****.org)들은 ()묶고 그안에 URL(웹주소)을 표기하여 링크를 생성함.
간단한 질답은 일정분의 강의가 끝나고 다른 부분으로 넘어가는 중간에 존재할 수 있다.(생략가능합니다.) 질답의 형식은 간단한 선택형은 원칙으로 한다. (2개중 1개 택일 등등)
간단한 질답을 통과해야 다음 장으로 넘어갈 수 있는지 등을 명기 바랍니다.
강좌 생서 및 트레이너 (강사) 생성
Administrator가 등록된 사용자중 강의를 진행할 user를 트레이너(강사)로 지정할 수 한다.
Administrator로 할일
User를 강사로 지정할 때는 먼저 대분류의 강좌 종류를 생성
중분류의 강좌 생성
[강좌 대분류 생성화면]
[강좌-중분류 생성 화면1]
[강좌- 중분류 생성화면 2 (상세정보입력)]
[강좌 –해당 강좌의 강사 선택]
Add teacher 링크를 누르면 아래그림처럼 화면이 변경 되면서 강사가 추가됩니다.
[강좌 –해당 강좌의 강사 선택 후]
해당 강사가 로그인 한 후에 접하게 되는 해당 강좌의 내용 (?)이 보여집니다.
[강좌 - 강사아이디로 로그인시 해당 강좌를 선택하고 들어간 화면]
1번 버튼을 누르면 아래의 그림과 같이 강의 게시물을 등록할 수 있는 화면으로 전환된다.
[강좌 –강의 게시물을 등록할 수 있는 편집화면]
2번은 해당 강의기간에 보여지는 문구나 필요한 리소스, 웹사이트 등을 기술하는 곳이다.
손이 연필을 쥐고 있는 아이콘을 누르면 해당 편집화면으로 넘어가게 됩니다.
[강좌 – 강좌 기간의 요약글 입력화면]
[강좌 –요약글 입력후 화면]
모듈을 허용한다.
무들은 많은 수의 모듈을 가지고 있고, 그중에는 테마, 활동, 언어 인터페이스, 데이터베이스 구조, 코스포맷 같은 것들을포함한다. 이것은 누구나 메인코드베이스에 추가 하는 것을 허용하거나, 별도로 배포도 가능하다는 것이다. 이 사항에 대한 더 많은 것 은 아래의 다음 섹션에서 소개된다.
5. 다른 시스 템과 결합되어서 사용가능하다.
무들은 하나의 코스에 서버상의 정상적인 디렉토리 하나에 모든 파일을 보관할 수 있다. 이것은 시스템관리자가 각 교사가 파일레벨액세스가 가능한 양식을 제공하는 것을 허락하는 것을 말한다. 마치 애플톡, SMB, NFS, FTP, WebDAV 와 마찬가지로. 인증모듈은 무들이 LDAP, IMAP, POP3, NNTP나 사용자 정보를 저장할 수 있는 다른 데이터베이스를 사용하는 것을 허용한다. 반면에 아직 적용되지 않은 것들도 있다. 향후 버전에는 개략적으로 다음과 같은 기능들이 포함될 것이다. :
XML-based 포맷을 사용하여 무들 데이터의 들여오기/내보내기(IMS와 SCORM을 포함해서) . 그리고 인터페이스 포맷인 스타일쉬트의 사용이 늘어날 것이다.
3. 기 여하는 방법
위에서 언급한 대로, 무들은 다양한 모듈이 존재한다. 심지어 프로그래머가 아니라도 도움을 주거나 변경을 가할 수 있다.
Learning Activities (작동법 배우기)
이러한 모듈들 중에서 단연코 가장 중요한 모듈은 ‘mod ’디렉토리에 존재한다. 여기에는 7가지 기본 모 듈이 있다. :
Assignment, choice, forum, quiz, resource, survey. (근데 왜 6개만 나열되었을까???)
각 모듈은 서브디렉토리로 구분되어져 있고, 다음의 위임된 요소들에 의해 구성된다.(각 모듈마다 유니크(독특한???)한 추가 스크립트가 더해질 수 있다.) :
Mod.html : 설정하는 양식 혹은 이 모듈에 대한 업데이트 인스턴스
Version .php : 약간의 메타정보를 정의하고 있고, 업그레이드 코드를 제공한다.
Icon.gif : 이 모듈을 위한 16 x 16 사이즈의 아이콘
db/ : 모든 필요한 db 테이블과 데이터에 대한 SQL 덤프 (각 DB타입별로다가)
index.php : 코스에서 모든 인스턴스의 리스트 페이지
view.php : 특정 인스턴스 보여주는 페이지
lib.php : 모듈에 의해서 규정된 펑션을 여기에서 정의. 만약 모듈명이 widget이라면, 다음과 같은 함수를 필요로 한다. :
widget_add_instance() –widget에 새로운 인스턴스 더하는 코드
widget_update_instance() –widget의 인스턴스 업데이트하는 코드
widget_delete_instance() - widget의 인스턴스 삭제하는 코드
widget_user_outline() –주어진 인스턴스에 사용자의 기부에 대한 요약을 리턴
widget_user_competet() –주어진 인스턴스에 사용자의 기부에 대한 상세를 프린트
충돌가능한 문제를 회피하기 위해 어떤 모듈의 함수들은 widget_ 으로 이름을 시작하고 어떤 상수들은 WIDGET_ 으로 시작해서 정의하기도 한다.
마지막으로, 각 모듈은 해당언어에 대한 약간의 언어파일들을 포함하고 있다 .
새로운 모듈의 동작법을 배우는 가장 쉬운 방법은 mod/newmodule_template.zip 안에 있는 템플릿을 사용 해보는 것입니다. 압축을 풀고 그 안에 있는 README를 따라 하면 됩니다.
테마(Themes)
테마(혹은 스킨)은 사이트의 보이는 모습을 정의한다. 여러 개의 간단한 테마들이 배포본에 같이 제공되기는 하지만, 사용자는 자신의 고유한 테마(색상, 로고, 스타일, 그래픽)을 만들어서 적용하길 원한다.
각 테마는 “theme ”라는 서브 디렉토리에 있고, 이속에는 최소한 다음의 파일이 있다. :
Config.php : 사이트 전체에 통용되는 테마 색상을 규정한다.
Style.php : 스타일쉬트를 의미하고, 많은 무들 요소들과 같은 표준HTML요소들에 대한 CSS 정의
Header.html : 각 페이지의 상단에 포함되는 것이다. 예를 들자면, 각 페이지 상단에 로고를 더한다든지 할 때 사용한다.
Footer.html : 각 페이지의 하단에 포함되는것이다.
현재 무들 버전에 대한 자신의 테마 만들기 :
기존에 존재하는 테마 폴더중 하나를 새 이름으로 복사한다. Standard 테마를 복사하길 권장한다.(만든이)
config.php를 수정하고 자신이 원하는 색상을 넣기
style.php를 수정하고 CSS 스타일 변경하기.
header.html과 footer.html을 수정하고, 필요하면 새 로고 넣고, 레이아웃 변경하기
이러한 모든 절차는 옵션적이다. 사용자가 기본적으로 다 르게 보이는 자신의 사이트를 만들려면 간단히 config.php의 colours만 수정해도 변경이 된다.
또한 무들의 업그레이 드는 릴리즈노트를 아주 세심하게 점검하므로써 사용자가 사용하는 일반적 테마에 대한 업그레이드를 약간 불편하게 한다.
특히 무들 2.0 은 완전히 다른 display system을 가질 것 이며, 아마도 무 들은 XML에 기반을 둔 XSL 변 환방식을 가질 것이다. 이는 테마도 완전희 다른 포맷이 적용될 것이지만, 커스터마이제이션에 대한 훨씬 더 많은 이점이 있을것으로 생각됩니다.
언어(L anguages)
무들은 국제화를 고려해서 디자인 되어졌다. 각 텍스트의 ‘string ’또는 ’page ’는 설정된 언어파일로부터 끌어와서 각 인터페이스부분 에 보여지게 된다. 각 언어는 ‘lang ’디렉토리의 하부 디렉토리로 존재한다. Lang 디렉토리의 구조는 아래와 같다. :
Lang/en – 하나의 언어에 대한 모든 파일이 들어있다. (eg 영어)
moodle.php – 메인 인터페이스의 string
assignment.php –assignment 모듈의 string
choice.php –choice 모듈의 string
forum.php –forum 모듈의 stri ng
quiz.php - quiz모듈의 string
resource.php –resource 모듈의 string
survey.php – survey 모듈의 string
…기타 추가 모듈 ….
이러한 파일들에서 string이라 불리는 것은 get_string()/print_string()함수에 사용된다. 각 string은 변수로 대체하는 것을지원하며, 대체된 변수는 다른 언어안에 있는 변수에 따른다.?????
Eg: $strdueby = get_string( “assignmentdueby ”, “assignment ”, userdate($date));
만약 string이 특정 언어에서 존재하지 않으면, 사용자가 지정한 것 대신에 자동적으로 영어에 있는 것을 사용하는 것을 기본으로 하게 된다.
Lang/en/help – 모든 help 페이지 를 포함한다.
메인 도움말은 이곳에 위치하고, 특정 도움말은 각 모듈이 위치한 곳에 해당 모듈의 이름을 가지고 위치한다.
사용자는 페이지에 helpbutton을 htlpbutton함수로 삽입할 수 있다.
Eg helpbutton( “text ”, “Click here for help about text);
모듈에 대한 것은 :
Helpbutton( “forumtypes ”, “Forum types ”, “forum ”);
사용자가 “check this language ”하의 관리자 웹툴을 사용하여 온라인상의 언어를 수정할 수 있다. 이것은 새로운 언어를 만들지 않지만 기존에 존재하는 것들을 다듬는데 쉽게 만들어 준다. 만약 새로운 언어 를 시작한다면, Martin Dougiamas에 연락 바랍니다.
사용자는 또한 무들 사용에 대해 언어포럼에 글을 덧붙여도 좋습니다.
데이터베이스 구조(DataBase Schemas)
정의된 테이블들로 주어진 데이터베이스 작업을 할 수 있으며, 무들에서는 다양한 종류의 데이터베이스에서 작업을 명확히 하기 위해 계획적으로 단순한 SQL문장을 사용할 것이다.
문제는 무들이 데이터베이스에 자동 으로 새로운 테이블을 생성함으로 써 최초 설지 작업을 시도한다는데 있다. 모든 데이터베이스는 서로 다르며, 플랫폼 독립적인 어떤 방법도 아직은 존재하지 않는다. 이런 자동화에 대 한 지원은 –각각의 데이터베이스 마다- 스키마(구조)는 특정 데이터베이스에서 SQL로서 무들테이블을 생성하는데 필요한 리스트를 만들 수 있다는데 있다. 이러한 파일들은 lib/db와 db라는 각 모듈의 서브디렉토리에 존재 한다.
현재는 단지 MySQL과 PostgreSQL만 완전하게 지원하고 있다.
코스 포맷 (Course Formats)
무들은 현재는 3가지의 다른 형식의 코스포맷을 지원한다. : weekly, topics, social
Documentation and articles
사용자가 튜토리얼이나, 기사, 학술적인 문서 들을 작성하기를 좋아 한다거나 무들에 대한 어떤것이라도 만들기를 좋아한다면 그렇게 하면된다,