コンテンツのエイリアス設定方法について

Re: コンテンツのエイリアス設定方法について

- Takahiro Miyamoto の投稿
返信数: 15

Yoshidaさま

色々とアドバイスありがとうございます。
もう一点だけ質問させていただきます。

MoodleのEC2へコンテンツ用のストレージを追加したとすると、Moodleから追加したコンテンツにアクセスするための設定はどこでできますでしょうか?

質問ばっかりで申し訳ありませんがよろしくお願いいたします。

Takahiro Miyamoto への返信

Re: コンテンツのエイリアス設定方法について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

恐らく、以下のAmazon S3 bucketのようなプラグインを使ってアクセスすることになるのだと思います。

[Moodle plugins directory: Amazon S3 bucket]
https://moodle.org/plugins/repository_s3bucket

Mitsuhiro Yoshida への返信

Re: コンテンツのエイリアス設定方法について

- Takahiro Miyamoto の投稿

Yoshidaさま

返信ありがとうございます。
S3を追加するのではなく、Moodleのサーバー自身に別ディスクとしてストレージを追加し、追加したストレージに保存した動画コンテンツにMoodleからアクセスできればよいのです。

S3 bucketへのアクセスではなく、追加した内部ストレージに対してのアクセスになります。

以上よろしくお願いいたします。

Takahiro Miyamoto への返信

Re: コンテンツのエイリアス設定方法について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

> S3を追加するのではなく、Moodleのサーバー自身に別ディスクとしてストレージを追加し、追加したストレージに保存した動画コンテンツにMoodleからアクセスできればよいのです。

「管理 > サイト管理 > プラグイン > リポジトリ > リポジトリを管理する」ページで「ファイルシステム」を「有効 & 表示」に設定変更した上で「別ディスク」内のディレクトリを「リポジトリインスタンス」として追加してください。

例えば、サーバに追加された「別ディスク」を「/data」としてマウントした場合、以下のようなLinuxコマンドにより、「別ディスク」内のディレクトリ「external_repository」をMoodleからアクセス可能なリポジトリインスタンスとして追加できます。

# cd /data
# mkdir external_repository
# chown apache. external_repository
# chmod 777 external_repository
# cd /var/www/moodledata/repository
# ln -s /data/external_repository

参考資料:
[File system repository - MoodleDocs]
https://docs.moodle.org/39/en/File_system_repository

Mitsuhiro Yoshida への返信

Re: コンテンツのエイリアス設定方法について

- Takahiro Miyamoto の投稿
Yoshidaさま

ご丁寧な説明ありがとうございます。
一度、チャレンジしご報告させていただきます。
色々とアドバイスいただきありがとうございました。
今後ともどうぞよろしくお願いいたします。
Takahiro Miyamoto への返信

Re: コンテンツのエイリアス設定方法について

- Takahiro Miyamoto の投稿

Yoshidaさま

お世話になっております。
あれから情報システム部に相談し、以下の対応をしていただきました。

1. 追加でファイルシステムを以下のようにマウント対応(ボールド部分)

Filesystem     1K-blocks     Used Available Use% Mounted on

devtmpfs         8202628       72   8202556   1% /dev
tmpfs             8213188        0   8213188   0% /dev/shm
/dev/xvda1      41151788 12037044  29014496  30% /
/dev/xvdf       102687672    61464  97366944   1% /var/www/html/moodledata

2.マウントしたディレクトリのパーミッションを以下に変更
drwxrwxrwx  3 apache apache 4096 Aug  3 10:12 moodledata

次のステップとしては、Moodle > サイト管理 > プラグイン > リポジトリ の「ファイルシステムのリポジトリの設定」でインスタンスをの作成かと思いますが、具体的にどのような作業になりますでしょうか?
リポジトリインスタンスを作成する > ファイルシステムリポジトリの設定 ページに移行しますが、「名称」に何を入力すればよいでしょうか?

Moodleの「config.php」にマウントしたディレクトリを追加する必要はないでしょうか?

以上よろしくお願いいたします。


Takahiro Miyamoto への返信

Re: コンテンツのエイリアス設定方法について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

> 次のステップとしては、Moodle > サイト管理 > プラグイン > リポジトリ の「ファイルシステムのリポジトリの設定」でインスタンスをの作成かと思いますが、具体的にどのような作業になりますでしょうか?

以下の手順ではいかがでしょうか。

  1. Moodleデータディレクトリ内のリポジトリディレクトリに移動する (例 cd /data/moodledata/repository)。
  2. マウントした外部ディスク内ディレクトリのシンボリックリンクを作成する (例 ln -s /var/www/html/moodledata)。
  3. Moodleにサイト管理者としてログインする。
  4. 「管理 > サイト管理 > プラグイン > リポジトリ > ファイルシステム」に移動する。
  5. 「ファイルシステムリポジトリの設定」セクションで「管理者によるコースへのファイルシステムリポジトリインスタンスの追加を許可する (管理者のみ設定可)」を有効 (チェック) にする。
  6. 「保存」ボタンをクリックする。
  7. 「管理 > サイト管理 > プラグイン > リポジトリ > リポジトリを管理する」に移動する。
  8. 「ファイルシステム」欄の右側にある「設定」リンクをクリックする。
  9. 「リポジトリインスタンスを作成する」ボタンをクリックする。
  10. 「名称」テキストボックスに任意のリポジトリ名を入力する (例 repository001)。
  11. 「保存」ボタンをクリックする。

> リポジトリインスタンスを作成する > ファイルシステムリポジトリの設定 ページに移行しますが、「名称」に何を入力すればよいでしょうか?

任意のリポジトリ名を入力してください。

> Moodleの「config.php」にマウントしたディレクトリを追加する必要はないでしょうか?

必要ありません。

Mitsuhiro Yoshida への返信

Re: コンテンツのエイリアス設定方法について

- Takahiro Miyamoto の投稿
Yoshidaさま

返信ありがとうございます。
手順の中で確認ですが、Moodleデータディレクトリ内で追加したディレクトリのシンボリックリンクを設定したとして、リポジトリインスタンスの作成で任意のリポジトリ名を入力するということですが、どのような関連性があるのでしょうか?

よろしくお願いいたします。
Takahiro Miyamoto への返信

Re: コンテンツのエイリアス設定方法について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

ご質問の内容ですが、「リポジトリディレクトリ内に設定したシンボリックリンクと任意のリポジトリ名に何の関係がありますか?」という理解で宜しいでしょうか?

もし、そうでしたら、「任意のリポジトリ名」はシンボリックリンクまたはディレクトリ名の別名 (エイリアス) であるとお考えください。また、ユーザがファイルピッカでリポジトリを選択しやすくするために「名称」 (任意のリポジトリ名) 欄があるとお考えください。

添付 file_picker.png
Mitsuhiro Yoshida への返信

Re: コンテンツのエイリアス設定方法について

- Takahiro Miyamoto の投稿

Yoshidaさま

ご返信ありがとうございます。
シンボリックリンクとリポジトリの関係性理解しました。
一度、ご教示頂いた手順にて試してみます。

また結果についてはご報告させていただきます。

Takahiro Miyamoto への返信

Re: コンテンツのエイリアス設定方法について

- Takahiro Miyamoto の投稿
Yoshidaさま

あれから情報システム部と連携し、追加したディスクに作成したディレクトリに対してシンボリックリンクを設定しました。
リポジトリインスタンスの作成まで無事に完了しました。

アクセス可能かどうか、Moodleのファイルピッカにて確認したのですが、追加したディレクトリにはアクセスできたのですがコピーした「Delivery]フォルダ内のHTMLファイルが表示されず選択できません。
権限設定の問題でしょうか?
Deriveryフォルダの権限が drwxrwxr-x となっているため775になっているので、777にしないといけないでしょうか?
またシンボリックリンクの権限設定は関係ないでしょうか?

以上よろしくお願いいたします。
ファイルピッカ
Takahiro Miyamoto への返信

Re: コンテンツのエイリアス設定方法について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

> 権限設定の問題でしょうか?

いいえ。

> Deriveryフォルダの権限が drwxrwxr-x となっているため775になっているので、777にしないといけないでしょうか?

いいえ。

> またシンボリックリンクの権限設定は関係ないでしょうか?

いいえ。

もしかして、Attoエディタの「イメージを挿入/編集する」または「Moodleメディアを追加する」ボタンをクリックしてファイルピッカを表示されていませんか?

もし、そうでしたら、画像または動画ファイルではないため、ファイルピッカのフォルダ内にHTMLファイルは表示されません。

添付 atto_editor.png
Mitsuhiro Yoshida への返信

Re: コンテンツのエイリアス設定方法について

- Takahiro Miyamoto の投稿

Yoshidaさま

お世話になります。
権限設定の件ではなく、ファイルピッカの使い方でした。
確認不足でした。

ファイルピッカの使い方で質問なのですが、イメージを挿入すると下記のメニューが表示されます。
・ファイルのコピーを作成する
・ファイルのエイリアス/ショートカットを作成する
を選択できますが、実際に「ファイルのエイリアス/ショートカットを作成する」にしても実際の選択したファイルのリンクと異なります。

実際のファイルパス(Moodelのファイルピッカで選択した順番)
movie_data/movies/lms/tdc/Design/*******.png

挿入後のファイルパス
https://aaa.bbb.com/draftfile.php/219/user/draft/135553526/*******.png

イメージファイルの前に「135553526」が付いています。
活動ページごとのID別にイメージがコピーされてしまうのでしょうか?

マウントしたexternal_repositoryに入っているファイルパスそのままを利用することはできないのでしょうか?

選択

Takahiro Miyamoto への返信

Re: コンテンツのエイリアス設定方法について

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

> イメージファイルの前に「135553526」が付いています。活動ページごとのID別にイメージがコピーされてしまうのでしょうか?

はい、そうです。以下のようにlib/weblib.phpの824行目あたりの関数make_draftfile_url()でイメージのURLにコンテクストID ($context->id) が付加されます。

    /**
     * Factory method for creation of url pointing to draft file of current user.
     *
     * @param int $draftid draft item id
     * @param string $pathname
     * @param string $filename
     * @param bool $forcedownload
     * @return moodle_url
     */
    public static function make_draftfile_url($draftid, $pathname, $filename, $forcedownload = false) {
        global $CFG, $USER;
        $urlbase = "$CFG->wwwroot/draftfile.php";
        $context = context_user::instance($USER->id);

        return self::make_file_url($urlbase, "/$context->id/user/draft/$draftid".$pathname.$filename, $forcedownload);
    }

> マウントしたexternal_repositoryに入っているファイルパスそのままを利用することはできないのでしょうか?

external_repository内のファイルにウェブアクセス可能であれば利用できると思いますが、恐らく、難しいのではないでしょうか。

このディスカッションスレッドは2020年 07月 27日(月曜日) 当初のご質問「コンテンツのエイリアス設定方法について」と異なる内容になっていると思われますため、今回の投稿で私からのお返事は終了とさせて頂きます。

Mitsuhiro Yoshida への返信

Re: コンテンツのエイリアス設定方法について

- Takahiro Miyamoto の投稿

Yoshidaさま

お世話になります。
色々アドバイスいただきありがとうございました。
外部ディスクをマウントしてもコンテンツ毎にIDが付加されるため、動画再生のパスをAWSロードバランサーで振分けできないことがわかりましたので、また別の方法を検討してみます。

今後ともどうぞよろしくお願いいたします。