#Moodleのインストール
ググるとMoodleのインストール手順を解説したメモが出てくるが、難ありと思われるものが多いのでメモしておく。
#Moodle 3.2.2以降の理由
Moodle 3.2.2からは(個人的に)待望だったMariaDB(MySQL)のutf8mb4に公式対応してくれたので、絵文字入りのフォーラム投稿などをするとデータベースエラーが表示されて投稿に失敗するような問題が無くなった。その代わりにMariaDB側で設定を追記する必要がある。
#インストール手順について
##目的
CentOS 7 x64がインストールされた環境にMoodle 3.2.2をインストール。最低限の内容とし、各種最適化などは今回は触れない。
##不足部分
以下については別途記載とする。
unoconvの設定
mod_xsendfileの設定
##手順
CentOS 7 x64をminimalでインストール。今回はクーポンが余っていたのでさくらのクラウドで実行した。インストール後にSSHなどでコンソールにログインする。
EPELリポジトリを有効にした状態で各種パッケージのアップデート。isoからインストール場合は事前にEPELリポジトリを追加しておく。
# yum install -y epel-release
# yum update -y --enablerepo=epel
PHP 7.1のため、remiレポジトリを追加。現時点でMoodleはPHP 7.2には対応していないらしいので注意。
PHP 7.2だと PHP Fatal error: Cannot use 'object' as class name as it is reserved in /path/to/moodle/lib/setuplib.php on line 66
となってしまう。
# yum localinstall -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
Apache httpd 2.4をインストール。
# yum install -y --enablerepo=epel httpd mod_ssl mod_xsendfile
PHP 7.1とMoodleのインストール完了に最低限必要な各種パッケージをインストール。
余談だがMoodle 3.0世代をPHP 7.1の環境で利用しようとするとQuickForm関連でエラーが出て正常に動作しなくなってしまう。
# yum install -y --enablerepo=remi-php71 php php-common php-cli php-json php-intl php-mbstring \
php-xml php-xmlrpc php-soap php-opcache php-pdo php-mysqlnd
# yum install -y --enablerepo=remi,remi-php71 php-pecl-zip php-gd
# yum install -y aspell graphviz ghostscript
MariaDBのインストールと初期設定
# yum install -y mariadb mariadb-server mariadb-libs
MariaDBの設定ファイルに下記のように追記
# vi /etc/my.cnf.d/server.cnf
[mariadb]
log-bin=mysql-bin
binlog_format=ROW
innodb_file_per_table = 1
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_large_prefix = ON
MariaDBの起動と自動起動設定
# systemctl start mariadb.service
# systemctl enable mariadb.service
MariaDBのrootパスワードの設定とテスト用DBの削除
# mysql_secure_installation
MoodleパッケージのDocumentRootへの設置
# yum install -y wget
# cd /usr/local/src/
# wget https://download.moodle.org/download.php/direct/stable32/moodle-3.2.2.tgz
# tar xzf moodle-3.2.2.tgz
# shopt -s dotglob
# mv moodle/* /var/www/html/
# rm -rf ./moodle
# chown -R apache:apache /var/www/html/
# restorecon -R /var/www/html/
Moodle用データディレクトリを作成
# mkdir -p /var/www/moodledata
# chown -R apache:apache /var/www/moodledata/
# restorecon -R /var/www/moodledata/
CLIでのMoodleのインストール
あとでサーバ証明書を導入する場合はウェブアドレスを**https://**で始まるものにしておく(あるいは後でconfig.phpを書き換える)。
# sudo -u apache /usr/bin/php /var/www/html/admin/cli/install.php --lang=ja
Moodle用cronの設定
# crontab -e
cronのログ捨てない派の人はmoodledataディレクトリ配下に保存するようにすると良いかも。
*/5 * * * * /usr/bin/php -f /var/www/html/admin/cli/cron.php > /dev/null 2>&1
Firewalldの設定を行い、外部からHTTP,HTTPSでの通信を許可
# yum install -y firewalld
# systemctl start firewalld
# systemctl enable firewalld
# firewall-cmd --permanent --zone=public --add-service=http
# firewall-cmd --permanent --zone=public --add-service=https
# firewall-cmd --reload
httpdの起動と自動起動設定
# systemctl start httpd.service
# systemctl enable httpd.service
Let's EncryptでのHTTPS用サーバ証明書の取得
(ssl.confの設定とhttpdの再起動はcertbotがしてくれる)
# yum install python2-certbot python2-certbot-apache --enablerepo=epel
# certbot --apache -d moodle.your.domain --agree-tos -m your@email.addr
サーバ証明書の自動更新設定
00 05 01 * * /usr/bin/certbot renew --force-renew && /usr/bin/systemctl reload httpd.service