« Moodle 1.5/EUC-JP/Postgres をバージョンアップする方法(作業内容編) | トップページ | 「情報科教育法」(オーム社)の改訂 »

2009年1月21日 (水)

FreeBSD に Moodle 1.9 を新規インストール

前回の作業の結果を別の観点で見ると、「Moodleを入れていない FreeBSD ユーザでも、こうすればインストールできる…」というのが見えてきました。さらに FreeBSD の Ports には Moodle があり活用しない手はありません。ということで、今度は標準的な FreeBSD のインストール状態からの Moodle 1.9 立ち上げを書いておきます。なお、この記述は日本国内では利用者が多いPostgresql を使用する場合です。MySQLの場合は奥村先生のWiKiを御参照ください。

なお、FreeBSDやUnixに詳しくない人は、コマンドをみてすぐに実行せずに、一度最後まで読んで理解し、わからないコマンドは、検索して他の人の説明で意味を理解するなどの十分な準備をしておいてください。

以下の内容は僕専用の備忘録です。掲載直後はバグ、書き間違い、忘れていることも多数あると思いますので、わかっている人以外は真似をしないでください。また、間違いなどがありましたら、御指摘大大大大大歓迎です。
●準備

まず、次の条件を満たすホストを構築してください。通常、FreeBSDをWebサーバに使っていれば標準的だとは思います。

  • FreeBSD-6.x 以上 (7.xでもOK)
  • Ports から Apache 2.0 以上を導入済。(以下の例では Apache 2.2)
  • http:///your-web-site.example.jp/moodle/ は、 /usr/local/www/data/ に対応(Portsの標準位置)
  • PHP-5.x を導入済。
●Postgresql用のユーザ作成

まず、 sysinstall を使って、DBの操作権限をもつアカウント pgsql を作ります。

% su
# sysinstall
(Configure → User Management → Add User)

pgsql の home は、どこでもいいですが、今回は /home/pgsql としておきます。

●Postgresql-8.1 の導入

DB を導入しましょう。

/usr/ports/database の下を見るとたくさんのバージョンがあって悩みますが、Moodle 1.9 を安定して動かせるのは 8.1.x です。8.2以上ではエラーがでます。

# cd /usr/ports/databases/postgresql81-server
# make install

導入がおわったら、いつもの /etc/rc.conf に動作環境を設定します。この例では DB を /home/pgsql/data の下に作ります。運用をすると容量が大きくなるので注意。

# echo postgresql_class=\"postgres\" >> /etc/rc.conf
# echo postgresql_data=\"/home/pgsql/data\" >> /etc/rc.conf
# echo postgresql_initdb_flags=\"--encoding=UTF8 --lc-collate=C \" >> /etc/rc.conf
# echo postgresql_enable=\"YES\" >> /etc/rc.conf
# mkdir /home/pgsql/data
# chown pgsql /home/pgsql/data

環境設定がおわったら、DBの初期化をし、そしてDBのデーモンを起動します。

# /usr/local/etc/rc.d/postgresql initdb
# /usr/local/etc/rc.d/postgresql start

次に、Moodle用の DBの雛型を構築します。ここで、moodleuser というのは、Unixのアカウント pgsql が、DB に接続するときの DBサーバへに対するユーザ名です。また、p-a-s-u-w-a-d-o は、その際のパスワードです。p-a-s-u-w-a-d-o の部分は、自分で好きなものにしてください。

# su - pgsql
% psql -c "create user moodleuser createdb;" template1
% psql -c "alter user moodleuser password 'p-a-s-u-w-a-d-o';" template1
% psql -c "create database moodle16;" -U moodleuser template1
% psql -c "alter user moodleuser nocreatedb;" template1
% psql -l (←出来たかどうかの確認)
% exit
●Moodle 1.9 を用意する

まっさらから入れるので Ports を使います。

# cd /usr/ports/www/moodle
# make config
(PGSQL にチェックをつけます。)
# make install

これで Moodle-1.9.x がインストールされます。

●データディレクトリの退避

Moodleを動作させると、大きく2つのディレクトリが作成されます。

Moodleのプログラムとコンフィグファイル
/usr/local/www/moodle
Moodleのコースデータ
/usr/local/www/moodledata

このうち、コンフィグファイルは1つしかない(しかも非常に小さい)ので、前者のディレクトリは運用をしていっても容量が増えません。一方、後者のディレクトリは運用をすると容量が増えていきます。また、FreeBSDの場合は deinstall をすると、このディレクトリがどちらも消去されます。アップグレードのときなどにトラブルになる可能性もあります。そこで、後者のディレクトリを退避させておきます。

# mkdir /home/moodledata
# chown www:www /home/moodledata
# cd /usr/local/www
# mv moodledata moodledata.orig
# ln -s /home/moodledata
●Apacheの設定変更

まず、php5-pgsql を入れます。

# cd /usr/pors/lang/php5-extensions
# make config
(MBSTRING と PGSQLにチェックをつける)
# make install

次に、httpd.conf に、Moodle 対応をします。以下の内容を httpd.conf に追加します。追加場所は、最後でいいと思います。

   Alias /moodle /usr/local/www/moodle/
   AcceptPathInfo On
   <Directory /usr/local/www/moodle>
      AllowOverride None
      Order Allow,Deny
      Allow from all
   </Directory>
   <Directory /usr/local/www/moodledata>
      AllowOverride None
      Order Allow,Deny
      Deny from all
   </Directory>

おわったら、apacheを再起動します。

# /usr/local/etc/rc.d/apache22 restart
●初期設定

Moodleの設定は、webで行ないます。

  1. http:///your-web-site.example.jp/moodle/ にアクセスしてください。
  2. 言語設定は「日本語(ja)」
  3. ウェブアドレスは http:///your-web-site.example.jp/moodle/
  4. データディレクトリは、 /usr/local/www/moodledata (←注意)
  5. データベースの指定
    • タイプは PostgreSQL(postgres7) です。7と書いてありますが大丈夫。
    • ホストサーバー: localhost(defaultのまま)
    • データベース: moodledb です。(この記事の上の方で作成したときの名称)
    • ユーザ: moodleuser
    • パスワード: p-a-s-u-w-a-d-o
    • テーブル接頭辞: mdl_ (defaultのまま)
  6. サーバーチェックのときに openssl について苦情をいわれるかも知れませんが、無視していいです。
  7. 言語パックのダウンロードで、「日本語(ja)」言語パックをダウンロードしてください。
●Cron登録

Moodleは daemon ではないので、定期的にメール配送などをするきっかけを必要とします。通常は cron に以下の内容を設定します。(メール配送などは10分間隔にする場合)

*/10 * * * * /usr/bin/fetch -q -o /dev/null http:///your-web-site.example.jp/moodle/admin/cron.php

実際には、上記の1行を書いたファイル(/tmp/crontab-moodle)を用意しておいて、

# cd /tmp
# crontab -l > crontab.now
# cat crontab.now crontab-moodle > crontab.new
# crontab crontab.new

とすればよいでしょう。これでインストール完成です。

●運用

運用をすると容量が変化するディレクトリは、次の2つです。

  • /home/pgsql/data
  • /home/moodledata

これらのバックアップをとっておく必要があります。

  1. Postgresql のバックアップは、次のようにしてとっておきましょう。
    # su - pgsql
    % pg_dump -Ft moodledb | gzip -c > moodledb.tar.gz

    moodleのDBが飛んでしまったときは、apacheを止め、次のコマンドで、それ以前に取ってあったDBをリストアします。

    # su - pgsql
    % psql -l (DBの名前を確認)
    % dropdb moodledb (←大変危険なコマンドなので超注意)
    % psql -l (壊れたDBが消えたことを確認)
    % psql -c "alter user moodleuser createdb;" template1
    % psql -c "create database moodledb with template template0;" -U moodleuser template1
    % psql -c "alter user moodleuser nocreatedb;" template1
    % psql -l (←出来たかどうかの確認)
    % gzip -dc < moodle.tar.gz | pg_restore -d moodledb
  2. moodledataのバックアップは、普通に Unix 的な方法で取っておきましょう。
  3. また、Moodle自体にコースバックアップの機能があります。これを使うと、各コース毎にバックアップが作成されます。
    /home/moodledata/(コース番号)/backupdata/backup-コース名-年月日-時刻.zip

    このファイルをどこかに保管しておいて、コースが壊れたときにMoodleのコース設定画面からリストアをすることで復活させることもできます。


とりあえず以上です。間違いがあるかも知れないので、御指摘大歓迎です。

|

« Moodle 1.5/EUC-JP/Postgres をバージョンアップする方法(作業内容編) | トップページ | 「情報科教育法」(オーム社)の改訂 »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: FreeBSD に Moodle 1.9 を新規インストール:

« Moodle 1.5/EUC-JP/Postgres をバージョンアップする方法(作業内容編) | トップページ | 「情報科教育法」(オーム社)の改訂 »