Moodleはフリーの教育管理システム(e-ランニング)です。まずMoodleサイトからDownloadする。
moodle1.6.1以降は日本語(ja)が選べたので、直接1.6.1がインストールできた。 この時は、特にlang用パッケージを事前にDownloadすることなく、インストール中に聞かれたときDownloadするこでインストールできた。
$ /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/更新等
Moodle > 管理 > 設定 > バックアップで スケジュール アクティブ:Yes にする
保存先:/home/www/moodlebackup等をしていしておく。ここの書き込み権限はwwwがあればよさそう。
実際にバックアップが実行されるのは以下のcronが実行されたとき指定時間が通過しているとbackupされる。cronがエラーしていてもbackupされたメールが届くこのあたりどうなっているか不明(Ver1.6.1)
Moodleはいくつかの処理を自動でする必要があるのでCronを以下のように設定しておく
以下のページが問題なく動作すことを確認し、
http://uso5001.abc-u.ac.jp/moodle/admin/cron.php
にアクセスよければ一般ユーザでいいから crontab -e で次のように設定。 (毎5分ごとに実行)
*/5 * * * * /usr/bin/wget -q -O /dev/null http://uso5001.abc-u.ac.jp/moodle/admin/cron.php
このとき
/usr/bin/wget 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 に変換
; 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の容量を変更できる。