Help us understand the problem. What is going on with this article?

Moodle 3.2.2(以降)のインストール手順メモ

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
/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
papillon
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした