Moodle

更新日 2012-12-18 (火) 10:34:05

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);

(略)

// MAKE SURE WHEN YOU EDIT THIS FILE THAT THERE ARE NO SPACES, BLANK LINES,
// RETURNS, OR ANYTHING ELSE AFTER THE TWO CHARACTERS ON THE NEXT LINE.
?>

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

apache2がapache2.0xなんかに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 ≫ データベースの設定    ----- (postgres7): CREATE TABLE mdl_config ( id SERIAL PRIMARY KEY, name  varchar(255) NOT NULL default , value text NOT NULL default , CONSTRAINT mdl_config_name_uk UNIQUE (name)) -----    成功 <---成功を確認  ----- (postgres7): CREATE TABLE mdl_course ( id SERIAL PRIMARY KEY, category integer NOT NULL default '0', sortorder integer NOT NULL default '0', password varchar(50) NOT NULL default , fullname varchar(254) NOT NULL default , shortname varchar(15) NOT NULL default , idnumber varchar(100) NOT NULL default , summary text NOT NULL default , format varchar(10) NOT NULL default 'topics', showgrades integer NOT NULL default '1', modinfo text NOT NULL default , blockinfo    (以下略)

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

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

 「詳細設定] 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行目あたりと

// Edit By JE2ISM
    $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");
       }
   }

(以下追加)

// 日本語化 Edit By JE2ISM
   $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++;
   }

//--------------------------------------------

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

1.6.1では 管理> ユーザ> 認証オプションで

 認証方法の選択: 手動アカウント作成のみ

を選択、説明にメッセージを適当に書くこと(必要)

 ゲストログインボタン:非表示

でゲストログインボタンが 消えた。

以前の方法

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>
-->
<tr>
    <td></td>
    <td align=right><input type="submit" value="<?php  print_string("updatemyprof
ile") ?>"></td>
</table>

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

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 [#ze0aefab]

更新

# 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. 小テスト最大評点を「評点無し」以外に設定すると学生が試験終了後これをベースにした評点が表示される。「評点無し」では表示されない。またレポート->概要も評点は表示されなくなる。
  3. アップロードファイルの容量については2MBがデフォルトのようだが、php.iniの以下のパラメータを変更
; Maximum size of POST data that PHP will accept.
post_max_size = 8M
; Maximum allowed size for uploaded files.
;;upload_max_filesize = 2M
upload_max_filesize = 8M

httpd.conf関係の存在すればLimitRequestを削除

したら、Moodlenoの詳細設定のパーミッションmaxbytesや

管理 >設定 >モジュール管理 >課題のassignment_maxbytesは変更できたが

その後コース設定の最大アップロードサイズを変更すると課題でUploadの容量を変更できる。


元ページ

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