* Moodle 1.6 [#o654343e]

Moodle 1.5 については [[Moodle]] 参照。

三重大学版は [[三重大学版Moodleソース:https://portal.mie-u.ac.jp/src/]] で配布中。
三重大学版は [[三重大学版Moodleソース:https://portal.mie-u.ac.jp/src/]] で配布中(8月19日版より古いものはhttps:でない環境で使うと発現する重大なバグがありました)。

[[PHP]] と,[[MySQL]] または [[PostgreSQL]] が必要。
以下では Linux + Apache + MySQL + PHP の環境でインストール。

** Apache [#ge314563]

Apache 2.x の場合,httpd.conf に必ず AcceptPathInfo on を入れる。

** MySQL [#r6d8f4a9]

MySQL 4.1.16以上が必要。ただし4.1.21はMoodleに影響するバグがある。
MySQL 4.1.16以上が必要。ただし4.1.21はMoodleに影響するバグがある([[Using Moodle: MySQL 4.1.21 Bug:http://moodle.org/mod/forum/discuss.php?d=51881]])。

次のようにしてデータベースを作っておく(データベース名 moodle,ユーザ名 moodleuser,Webサーバのホスト名 hostname,パスワード himitsu の場合)。

 mysql -u root -p
 create database moodle default character set utf8 collate utf8_unicode_ci; 
 grant select,insert,update,delete,create,drop,index,alter on moodle.* 
   to moodleuser@'hostname' identified by 'himitsu'; 
 quit 

Apache と MySQL が同居する場合は 'hostname' は localhost でよい。
そうでない場合は 'oku' あるいは 'oku.edu.mie-u.ac.jp'
のようにする(単に 'oku' とするのは /etc/hosts に oku が oku.edu.mie-u.ac.jp より先に書いてある場合)。

** PHP [#c85125c4]

php.ini は次のようにする。

 magic_quotes_gpc = 1      (推奨?,ただし下記参照)
 magic_quotes_runtime = 0  (必ず)
 file_uploads = 1
 session.auto_start = 0
 session.bug_compat_warn = 0

うちは magic_quotes_gpc = off で使っている。このほうが安全。

** Moodle [#yac0e293]

Moodle をダウンロードして htdocs 以下に展開(以下では moodle というディレクトリに展開)。
これは当然ながら所有者は apache 以外にして,管理人以外には書き込み権限を与えない。

データ用ディレクトリを htdocs の外に設定,apache が読み書きできるようにする。
アップロードされたファイルはここに入る。

http://サーバ名/moodle/install.php をアクセスする。

質問に答えていけば設定ファイル config.php が作られるが,moodle ディレクトリに apache が書き込めないので,表示された config.php をコピーしてエディタにペーストし,moodle ディレクトリに保存する。
その際,$CFG->unicodecleanfilename = true; を追加する。

質問は「続く」でたくさんのページがあるが必ず最後まで答える。
質問中でURLが http://.../moodle のようになるが最後に / を補わないこと。

途中で「「日本語(ja)」言語パックをダウンロードする」ボタンが現れるが,三重大学版の1.6では言語パックも含んでいるので,このボタンは押さない。

詳細設定の画面は例えば次のようにする:

 lang: 日本語(ja)
 docroot: http://docs.moodle.org/ja
 country: 日本
 allowcoursethemes: Yes
 sessioncookiepath: /moodle/  ←Moodleをインストールしたパス
 sitemailcharset: ISO-2022-JP

あとは http://サーバ名/moodle/ をアクセスするだけ。

動作確認したら cron を設定する。
まず http://サーバ名/moodle/admin/cron.php をブラウザで見てうまく働くことを確認。
よければ一般ユーザでいいから crontab -e で次のように設定。

 */5 * * * * wget -q -O /dev/null http://サーバ名/moodle/admin/cron.php

以下では三重大版Moodleでの変更点の一部を挙げておく。

** 姓と名の順番が逆 [#o9d96314]

名姓の順で聞いてくるので学生がほとんど逆に入れてしまって困った。
これを直す一番簡単な方法は,firstname を姓,lastname を名と訳すことである。
lang/ja_utf8/moodle.php の中で次のような変更をする。

 $string['firstname'] = '姓';
 $string['lastname'] = '名';
 $string['fullnamedisplay'] = '$a->firstname $a->lastname';
 $string['missingfirstname'] = '姓が入力されていません。';
 $string['missinglastname'] = '名が入力されていません。';

あと,「$a->lastname さん、こんにちは」のような挨拶は $a->firstname に変える。

ちなみに,このファイルは大学の状況に合わせて変更するといい。
例えば国,都道府県などは所属,学部などに変える。

** メールの文字コードがおかしい [#o69c154d]

Moodle 1.6からは設定で sitemailcharset: ISO-2022-JP とできるようになった。
しかし,これでもquoted printableになったりして,メーラによってはまともに読めない。
直すには,まず lib/moodlelib.php で


    if ($messagehtml && $user->mailformat == 1) { // Don't ever send HTML to users who don't want it
        $mail->IsHTML(true);
        $mail->Encoding = 'quoted-printable';           // Encoding to use
        $mail->Body    =  $messagehtml;
        $mail->AltBody =  "\n$messagetext\n";
    } else {
        $mail->IsHTML(false);
        $mail->Encoding = '7bit';  // この行を追加
        $mail->Body =  "\n$messagetext\n";
    }

さらに

    $user->mailformat = 1;  // Always send HTML version as well

の 1 を 0 にする。
また,lib/db/mysql.sql の

  `mailformat` tinyint(1) unsigned NOT NULL default '1',

の 1 を 0 にすればテキストメールがデフォルトになる。
ついでに,メールアドレス非公開をデフォルトにするには,同じファイルの

  `maildisplay` tinyint(2) unsigned NOT NULL default '2',

の 2 を 0 にする。
さらについでに,フォーラム投稿をメールで送らないをデフォルトにするには

  `autosubscribe` tinyint(1) unsigned NOT NULL default '1',

の 1 を 0 にする。
こうしておかないと携帯に転送している学生が泣くことになる。

すでにインストールされているMoodleで上記 lib/db/mysql/sql の変更の効果を出すためには,次のようにして設定を変更できる。

 alter table mdl_user alter mailformat set default 0;
 update mdl_user set mailformat=0;
 alter table mdl_user alter maildisplay set default 0;
 update mdl_user set maildisplay=0;
 alter table mdl_user alter autosubscribe set default 0;
 update mdl_user set autosubscribe=0;