最近業務で使ったMoodleというLMS(Learning Management System)平たく言えばe-Learningのシステムの構築を今回は題材にしてみたい。
構築する環境としては、
https://arm-lab.blogspot.com/2018/06/centos-minimal.html
こちらの記事で作ったCentos 7 Minimalインストールの環境をベースにしていく。
※おおむね此方の方の手順(
http://www.unix-power.net/networking/post-730)で行けたが、
- 現在のMoodleの最新版(3.5)ではCentosのyumリポジトリで入れられるphpより新しいバージョンのphpを要求される点
- Centos 7 ではSELinuxのおかげで「Fatal error: $CFG->dataroot is not writable, admin has to fix directory permissions! Exiting.」が出力される点
- 次のエラーの解決
mysql_full_unicode_support#File_format
this test must passYour database uses Antelope as the file format. Full UTF-8 support in MySQL and MariaDB requires the Barracuda file format. Please switch to the Barracuda file format. See the documentation MySQL full unicode support for details.
Check
mysql_full_unicode_support#File_per_table
this test must passFor full support of UTF-8 both MySQL and MariaDB require you to change your MySQL setting 'innodb_file_per_table' to 'ON'. See the documentation for further details.
Check
mysql_full_unicode_support#Large_prefix
this test must passFor full support of UTF-8 both MySQL and MariaDB require you to change your MySQL setting 'innodb_large_prefix' to 'ON'. See the documentation for further details.
Check
等々細々いろいろ引っかかった点を、現在実現可能な手順に修正・追加・検証し、Centos7 + Moodle 3.5+で成功する手順を確立している。
maria DBのインストール
# sudo yum install -y mariadb mariadb-server
httpd(apache)のインストール
# sudo yum install -y httpd httpd-devel mod_ssl
※Moodle3.2では「Moodle 3.2 or later requires at least PHP 5.6.5」と要求されるがyumでインストールすると2018年6月現在「php-common-5.4.16-45.el7.x86_64」が入ってしまい、エラーを吐く経験があり今回使用するMoodle3.5でも当然phpのバージョンはyumリポジトリより新しいものが必要なので、epelリポジトリとRemiリポジトリを追加する。
epelリポジトリの追加
# sudo yum install -y epel-release
Remiリポジトリの追加
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
php 7.1と必要なモジュールのインストール
# sudo yum install -y --enablerepo=remi,remi-php71 php php-devel php-mysql php-mbstring php-gd php-pear httpd-devel php-mysqli php-intl php-soap php-xmlrpc php-xml php-ldap php-pecl-zip
追加リポジトリの無効化
phpのと関連モジュールのインストールが終わったら、viでepelリポジトリの設定ファイルを開き、
# vi /etc/yum.repos.d/epel.repo
epelのenableを0=Falseに変更。
[epel]
~中略~
enabled=0
~後略~
※これをしておかないとyum update時に公式のパッケージもepelで置き換わってしまう。
ちなみに
# cat /etc/yum.repos.d/remi.repo
で確認したところRemiリポジトリの方はインストール後のデフォルト値がenable=0なので特に弄らないでよさそう。
phpの設定
# vi /etc/php.ini
変更点は次の通り
memory_limit = 2048M ※環境及び環境次第
post_max_size = 2048M ※環境及び環境次第
default_charset = "UTF-8"
upload_max_filesize = 2048M ※環境及び運用次第
date.timezone = 'Asia/Tokyo';1660行目
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
MariaDBの文字コード設定と有効化
# vi /etc/my.cnf
以下の内容に修正
[client]
default-character-set = utf8mb4
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
skip-character-set-client-handshake
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
[mysql]
default-character-set = utf8mb4
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
# sudo systemctl enable mariadb.service
# sudo systemctl start mariadb.service
# sudo mysql_secure_installation
Enter current password for root (enter for none):[そのままエンター]
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n][そのままエンター]
New password:[your password]
Re-enter new password:[your password]
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
~後略~
ここから先は全部エンターでOK。
Moodle用DB作成
# mysql -u root -p
Enter password:[YourRootPassWord]
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 5.5.56-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>create database moodle default character set utf8;
MariaDB [(none)]>grant all on moodle.* to moodle@localhost identified by '[YourDBPassWord]';
MariaDB [(none)]>flush privileges;
MariaDB [(none)]>quit;
Moodleのダウンロード
# sudo yum install -y wget
# cd /var/www/html/
# wget https://download.moodle.org/stable35/moodle-latest-35.tgz
ファイルの展開と権限設定
# tar xvzf moodle-latest-35.tgz
# rm -rf moodle-latest-35.tgz
# mkdir /var/www/moodledata
# chmod -R 755 /var/www/
# chown -R apache.apache /var/www/
config.phpの設定
# mv config-dist.php config.php
# vi config.php
以下を変更
$CFG->dbtype = 'mariadb'; // 'pgsql', 'mariadb', 'mysqli', 'sqlsrv' or 'oci'
$CFG->dbuser = 'moodle'; // your database username
$CFG->dbpass = '[YourDBPassWord]'; // your database password
$CFG->wwwroot = 'http://localhost/moodle';
$CFG->dataroot = '/var/www/html/moodledata';
SE Linuxの無効化
# setenforce 0
# vi /etc/selinux/config
SELINUX=enforcing
の部分を、
SELINUX=permissive
に変更。
Apacheの有効化と起動
# sudo systemctl enable httpd.service
# sudo systemctl start httpd.service
Firewallの設定
# sudo firewall-cmd --add-port=80/tcp --permanent
# sudo firewall-cmd --reload
80番ポートのフォワーディング設定を追加
※今回VirtualBoxをネットワークNATで使用しているため。
詳しくは↓の記事参照。
ブラウザから諸設定
ブラウザで http://localhost/moodle/admin/index.php へ接続。
Continueをクリック。
チェックステータスの確認
あとはウィザードに従えばとりあえずログイン可能な状態までは終わるはず。
無事完了。
後日バーチャルアプライアンスで配布予定の設定は次の通り。
OS:root/root
Moodle:admin/Mood1e@Adm1n
一度仕事でやったことがあった割には1人日くらいかかった。やっぱメモとか手順って大事。