11
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-05-26

#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
11
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?