Moodle

更新日 2007/07/14 Moodleはフリーの教育管理システム(e-ランニング)です。まずMoodleサイトからDownloadする。

Moodle1.6のインストール

moodle1.6.1以降は日本語(ja)が選べたので、直接1.6.1がインストールできた。 この時は、特にlang用パッケージを事前にDownloadすることなく、インストール中に聞かれたときDownloadするこでインストールできた。

MySQLでのmoodleDBのバックアップ/リストア

バックアップ $ /usr/local/bin/mysqldump -u root -p --default-character-set=utf8 moodle > moodle.out Enter password:

リストア もし、moodleというデータベースがない時は先に作成 $ /usr/local/bin/mysqladmin -u root -p create moodle Enter password:

$ /usr/local/bin/mysql -u root -p moodle < moodle.out Enter password: インストール

データベースとしてはMysqlを使用するので、事前にMysql側のSQL サーバにデータベースとしてmoodle、ユーザとしてmoodleuserを登録しておいて データベースにアクセスできるようにしておく。MySQLのインストールはここ。

ユーザ登録は

mysql> grant select,insert,update,delete,create,drop,index,alter on moodle.* to moodleuser@localhost IDENTIFIED BY '*****' WITH GRANT OPTION; Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)

$ tar zxvf moodle-latest-14.tgz $ su

# mv moodle /usr/local/apache2/htdocs/

phpの使用メモリが16MB以上必要なので/usr/local/lib/php.iniの

memory_limit = 8M を memory_limit = 32M に変更し、 magic_quotes_runtime = 0 (必ず) file_uploads = 1 session.auto_start = 0 session.bug_compat_warn = 0 tcpip_socket = true を確認して apacheを再起動

その後ブラウザで http://(マシン名)/moodle/ でアクセスしてパラメータを設定する

Choose a languageでJapanese(jp)を選択

「PHP設定を確認しています ...」でパスを確認 GDについてはパスするにはphpコンパイル時オプション --with-gd が必要

「Moodleのインストール先を確認してください。」で ウェブアドレス:http://(マシン名)/moodle Moodleディレクトリ:/usr/local/apache2/htdocs/moodle データ:/usr/local/moodledata

注)このとき/usr/local/moodledataを作成し、wwwに書き込み権限を与える またこのディレクトリ場所は直接webアクセス出来ない場所にする。

「DataBaseの設定」 タイプ:postgres7 ホストサーバ:(サーバ名orIPアドレス) データベース:moodle ユーザ:moodle パスワード:(なし) <---postgresql側でIPで制限する テーブル接頭辞:mdl_

注)このとき事前に createdb moodle でdbを作成しておく

「設定が完了しました。」

?php /// Moodle Configuration File

unset($CFG);

(略)

?>

上記のphpスクリプトを/usr/local/apache2/htdocs/moodle/config.phpに入れる このファイルがないので作成しコピー&ペーストすればよい

apache2がlinkされていると以下のようなエラーが出る

Please fix your settings in config.php: You have: $CFG->dirroot = "/usr/local/apache2/htdocs/moodle"; but it should be: $CFG->dirroot = "/usr/local/apache2050/htdocs/moodle";

のでconfig.phpを指示どおり書き換える。

うまく行くと「著作権表示」が表示される

「データベースの設定」

Home ≫ データベースの設定


成功 <---成功を確認


(以下略)

データベースのアップグレードが完了しました。

全てが成功したことを確認して「続ける」

「詳細設定] http://uso5001.abc-u.ac.jp/moodle/admin/config.php

2-3画面進み

「データベースのアップグレード」で成功を確認

「ブロックテーブルの設定」で設定確認

最後までいくと「workshop テーブルが正常に設定されました。」 が表示されるその後 「サイトセッティング」をセットする

設定

管理者は ユーザ名:admin

       パスワード:admin

http://uso5001.abc-u.ac.jp/moodle/login/index.php からloginしてまずパスワードを変更

設定変更は右画面の「管理...」をクリック メールの日本語の問題(1.6では問題なさそうなので不要) Moodle から自動で出されるメールが生 EUC-JP の Quoted-Printableになるので文字化けを起こすそこで、 奥村先生のページを参考に以下のパッチを当てる。今回使用したPHPはVer5.0.1で このときmb_convert_encoding関数はmb_convert_encoding($mail->FromName, 'ISO-2022-JP', 'EUC-JP')のようにソースのencodeを'EUC-JP'と指定する必要があった。

moodle/lib/moodlelib.php の1750行目あたりと

   $messagehtml = false;  // HTMLメールはいやよ  <---追加
   if ($messagehtml) {
       $mail->IsHTML(true);
       $mail->Encoding = "quoted-printable";           // Encoding to use
       $mail->Body    =  $messagehtml;
       $mail->AltBody =  "\n$messagetext\n";
   } else {
       $mail->IsHTML(false);
       $mail->Body =  "\n$messagetext\n";
   }

1770行あたり

   if ($attachment && $attachname) {
       if (ereg( "\\.\\." ,$attachment )) {    // Security check for ".." in dir path
           $mail->AddAddress("$adminuser->email", fullname($adminuser) );
           $mail->AddStringAttachment("Error in attachment.  User attempted to

attach a filename with a unsafe name.", "error.txt", "8bit", "text/plain");

       } else {
           include_once("$CFG->dirroot/files/mimetypes.php");
           $mimetype = mimeinfo("type", $attachname);
           $mail->AddAttachment("$CFG->dataroot/$attachment", "$attachname", "base64", "$mimetype");
       }
   }

(以下追加)

  $mail->FromName =  mb_convert_encoding($mail->FromName, 'ISO-2022-JP', 'EUC-J

P');

  $mail->FromName = "=?ISO-2022-JP?B?".base64_encode($mail->FromName)."?=";
  $mail->Subject  =  mb_convert_encoding($mail->Subject, 'ISO-2022-JP', 'EUC-JP

');

  $mail->Subject  = "=?ISO-2022-JP?B?".base64_encode($mail->Subject)."?=";
  $mail->Body     =  mb_convert_encoding($mail->Body, 'ISO-2022-JP', 'EUC-JP');
  $mail->CharSet  =  'ISO-2022-JP';
  $mail->Encoding =  '7bit';
  $i = 0;
  while($mail->to[$i][1]) {
     $mail->to[$i][1] = mb_convert_encoding($mail->to[$i][1], 'ISO-2022-JP', 'E

UC-JP');

     $mail->to[$i][1] = "=?ISO-2022-JP?B?".base64_encode($mail->to[$i][1])."?=";
     $i++;
  }
  $i = 0;
  while($mail->cc[$i][1]) {
     $mail->cc[$i][1] = mb_convert_encoding($mail->cc[$i][1], 'ISO-2022-JP', 'EUC-JP');
     $mail->cc[$i][1] = "=?ISO-2022-JP?B?".base64_encode($mail->cc[$i][1])."?=";
     $i++;
  }
  $i = 0;
  while($mail->bcc[$i][1]) {
     $mail->bcc[$i][1] = mb_convert_encoding($mail->bcc[$i][1], 'ISO-2022-JP',

'EUC-JP');

     $mail->bcc[$i][1] = "=?ISO-2022-JP?B?".base64_encode($mail->bcc[$i][1])."?=";
     $i++;
  }

ゲストログインボタンの削除

moodle/config.phpに

$CFG->guestloginbutton=false; を追加 ユーザプロファイルの電話番号、住所の登録画面の削除

moodle/user/edit.htmlの270行目あたりの

?php } ?>

!--

tr valign=top>

   <td align=right><p><?php print_string("phone") ?> 1:</td>
   <td><input type="text" name="phone1" size="25" maxlength="20" value="<?php p

($user->phone1) ?>"> <?php p($teacheronly) ?>

   <?php if (isset($err["phone1"])) formerr($err["phone1"]); ?>
   </td>

/tr>

(略)

p($user->address) ?>"> <?php p($teacheronly) ?>

   <?php if (isset($err["address"])) formerr($err["address"]); ?>
   </td>

/tr>

の表示部をコメントアウト。 ユーザ登録画面の削除

moodle/login/signup.phpに以下を追加

10行目程度に

   error("Sorry, you may not use this page.");

$CFG->auth変数の値がemailになっているが、どこで設定いているか不明なので、強制的に禁止した。

また、login画面で「初めての方ですか」のページの部分を表示させないようにするには、 管理->認証オプション ->認証方法の選択を「Emailベースの認証」から「手動アカウント作成のみ」に変更するし、説明のところを空白にする。説明のところに、説明文を入れると、初めての方ですかが表示されその下に説明文が表示される。どちらにせよ「新しいアカウントを作成する」のボタンは表示されない セキュリティメモ

セキュリティメモ 2005年5月6日の内容により、admin/delete.php を削除。 Backup/Cron/更新等 Backup

Moodle > 管理 > 設定 > バックアップで スケジュール アクティブ:Yes にする

保存先:/home/www/moodlebackup等をしていしておく。ここの書き込み権限はwwwがあれば よさそう。

実際にバックアップが実行されるのは以下のcronが実行されたとき指定時間が通過しているとbackupされる。

Cron

Moodleはいくつかの処理を自動でする必要があるのでCronを以下のように設定しておく

以下のページが問題なく動作すことを確認し、 http://uso5001.abc-u.ac.jp/moodle/admin/cron.php

にアクセスよければ一般ユーザでいいから crontab -e で次のように設定。 (毎5分ごとに実行)

/5 * * * * wget -q -O /dev/null http://uso5001.abc-u.ac.jp/moodle/admin/cron.php

更新

# cd /usr/local/apache2/htdocs

# mv moodle moodle-bak

# tar xvzf moodle-latest-XXX.tgz

# cp -a moodle-bak/config.php moodle/

moodle/lib/weblib.php の htmlentities を htmlspecialchars に変換

設定上のポイント

1)小テストの時間制限の最大値は管理->設定->詳細設定の中のsessiontimeout: の時間から10分引いた値まで設定できる。(設定表示が20分の場合はsessiontimeout:が 30分に設定されている) 2)小テスト最大評点を「評点無し」以外に設定すると学生が試験終了後これをベースにした評点が表示される。「評点無し」では表示されない。またレポート->概要も評点は表示されなくなる。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS