今回は、nfs ではなくて、同じサーバに moodledata を置いてみました。
SELinux を有効にして再起動すると、以下のようなよく見るエラーになりました。
Fatal error: $CFG->dataroot is not writable, admin has to fix directory permissions! Exiting.
前回 AWS の EC2 上で動作する Moodle の SELinux を有効にする でやったことのうち、file context は手動で設定することをまずはやってみる。
semanage コマンドがインストールされていなくても、以下のようにすればOK
ここで、$CFG->dataroot は、/var/www/html/moodledata であるとする。
# vim /etc/selinux/targeted/contexts/files/file_contexts.local
/var/www/html/moodle(/.*)? system_u:object_r:httpd_sys_rw_content_t:s0
/var/www/html/moodledata(/.*)? system_u:object_r:httpd_sys_rw_content_t:s0
# restorecon -R -v /var/www/html
moodle ディレクトリも設定しているのは、プラグインをインストールできなくなるため。
なお、これは、semanage コマンドで以下を実行したのと同じである。semanage がこのファイルに記述するため。なお、semanage が使える状況では、ファイルを直接編集すると、消されてしまうので注意。
要すれば、手動で上記ファイルを編集するのはダメです。
つねに、semanage コマンドを使いましょう。
semanage コマンドのインストール方法とともに、正しいラベルの張り替え方を教えます。
# yum -y install policycoreutils-python
# semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/moodle(/.*)?"
# semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/moodledata(/.*)?
# restorecon -R -v /var/www/html
これもやっておく必要がある。
# setsebool -P httpd_can_network_connect 1
ページが表示された。
もし、sshd のポートを 2222 で運用しているのなら、以下をやる必要がある。
# semanage port -a -t ssh_port_t -p tcp 2222
Apache からメールを送らせるのなら、これも必要。
# setsebool -P httpd_can_sendmail 1