(4) RedHat EL7上のMoodle3.9を3.11にアップデート
Moodle3.9から3.11にアップデート
このサイト記載の「RedHat EL7にMoodle3.9をインストール」の環境で設定されたMoodleサイトをバージ>ョン3.11にアップデートします。
備忘録的なメモなので、これを見て作業して問題が起きても、当方では責任を持ちません。
Moodleモジュールの中には新しい3.11に対応していないものもあるので、モジュールを使っていた場合は特に注意が必要です。
1.Moodleの各バージョンによる必要環境の違いは下記です。今回はついでにPHPとMariaDBのバージョンを新しくします。
Moodle3.11 PHP7.3 MariaDB10.2.29
Moodle3.9 PHP7.2 MariaDB10.2.29
2.下記の手順でアップグレードします
・Moodleサイトを閉鎖します。
・念のために現在のサイト(Moodle3.9)をバックアップ
・Moodle3.11をダウンロードして解凍
・Moodle3.9サイトをリネームして保存
・解凍したMoodle3.11を今まで3.9が置いてあった場所に移動
・Moodle3.9のconfig.phpファイルをMoodle3.11ディレクトリにコピー
・PHP7.3モジュール関係をアンインストール
・PHP7.4モジュールをインストール
・MariDB10.2関係をアンインストール
・MariaDB10.5をインストール
・ブラウザでMoodleにアクセスしてアップグレードを開始
・データベースフォーマットや文字コード設定で警告が出た場合はコンバート
3.実際の作業は下記のように行いました
Moodleサイトを閉鎖します。
[ダッシュボード]--[サイト管理]--[サーバ]--[メンテナンスモード]
メンテナンスモードをYesにします。
# cd /
# mkdir /usr/local/src/bkup
# tar cvz data -f /usr/local/src/bkup/data.tar.gz
MariaDB上のMoodleのデータベースをダンプします
# cd /usr/local/src/bkup
# mysqldump -u [データベースユーザー] -p[データベースのパスワード] --opt moodle > moodle.sql
・Moodle3.11をダウンロードして解凍
# cd /usr/local/src
# tar xvfz moodle-3.11.5.tgz
・古いMoodle3.1サイトをリネームして保存
# cd /data/html
# mv moodle moodle_old
・解凍したMoodle3.11を今まで3.9が置いてあった場所にコピー
# cp -r /usr/local/src/moodle /data/html/.
・Moodle3.9のconfig.phpファイルをMoodle3.11を載せたディレクトリにコピー
# cp /data/html/moodle_old/config.php /data/html/moodle/config.php
・PHP7.3関係をアンインストール
# rpm -qa |grep php (インストールされているphpを確認)
# yum erase php73-php-process php73-php-cli php73-php-mbstring php73-runtime php73-php-opcache php73-php-pecl-zip php73-php-common php73 php73-php-intl php73-php-pear php73-php-pecl-apcu php73-php-xml php73-php-gd php73-php-json php73-php-xmlrpc php73-php-fpm php73-php-soap php73-php php73-php-mysqln php73-php-pdo oniguruma5php
・PHP のパッケージ情報を確認します
# yum info php74 --enablerepo=remi
・php7.4をremiリポジトリからインストールします
# yum install --enablerepo=remi --skip-broken httpd httpd-devel httpd-tools mod_ssl php74-php.x86_64 php74 php74-php-cli php74-php-common php74-php-devel php74-php-gd php74-php-intl php74-php-json php74-php-mbstring php74-php-opcache php74-php-pdo php74-php-pear php74-php-pecl-apcu php74-php-pecl-zip php74-php-process php74-php-soap php74-php-xml php74-php-xmlrpc php74-php-mysqlnd php74-php-devel php74-php-fpm
php74-php-fpmをインストールし忘れるとWebサイトが全く動かないので注意します
毎回のように php74 コマンドを使用するのは不便なので、alternatives の機能を利用して「php」で呼び出せるように設定します。
# which php74
/usr/bin/php74
# update-alternatives --display php
php -ステータスは自動です。
リンクは現在 /usr/bin/php73 を指しています。
/usr/bin/php73 - 優先度 1
/usr/bin/php74 - 優先度 1
現在の「最適」バージョンは /usr/bin/php73 です。
# update-alternatives --remove php /usr/bin/php73
# update-alternatives --install /usr/bin/php php /usr/bin/php74 1
# update-alternatives --display php
php -ステータスは自動です。
リンクは現在 /usr/bin/php74 を指しています。
/usr/bin/php74 - 優先度 1
現在の「最適」バージョンは /usr/bin/php74 です。
php 単体で実行できるようになりました。
# php --version
PHP 7.4.27 (cli) (built: Dec 14 2021 17:17:06) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.27, Copyright (c), by Zend Technologies
今回のphp.iniの場所はいつもの/etcではありません
# php -r "echo phpinfo();" | grep "php.ini"
Configuration File (php.ini) Path => /etc/opt/remi/php74
Loaded Configuration File => /etc/opt/remi/php74/php.ini
旧バージョンのmaridbをチェックしてアンインストールします
# rpm -qa | grep MariaDB
MariaDB-compat-10.2.41-1.el7.centos.x86_64
MariaDB-server-10.2.41-1.el7.centos.x86_64
MariaDB-client-10.2.41-1.el7.centos.x86_64
MariaDB-common-10.2.41-1.el7.centos.x86_64
# yum erase MariaDB*
MariaDB 10.5をインストールします(10.6はMoodleインストール中にエラーになりました)
下記のURLを参照
https://downloads.mariadb.org/mariadb/repositories/#distro=RedHat&distro_release=rhel8-amd64 --rhel8&mirror=kku&version=10.5
# ls /var/cache/yum
# \rm -r /var/cache/yum/x86_64/7Server/mariadb
(環境によっては /var/cache/yum/x86_64/7/mariadb になっているかもしれません)
# yum clean all
# rm /etc/yum.repos.d/mariadb.repo
# vi /etc/yum.repos.d/mariadb.repo
# MariaDB 10.5 RedHat repository list - created UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
baseurl = https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/yum/10.5/rhel7-amd64
gpgkey=https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
# yum update
# yum install MariaDB-client MariaDB-server MariaDB-common MariaDB-compat boost-program-options galera
# systemctl restart mariadb
# systemctl enable mariadb
httpdの環境設定が前と同じか一応確認します
# cd /etc/httpd/conf
# vi httpd.conf
下記の設定になっていればOKです。
DocumentRoot “/data/html”
<Directory “/data/html”>
DirectoryIndex index.php index.html
httpdを起動します
# systemctl restart httpd.service
# systemctl restart php74-php-fpm
httpdが自動起動するように設定します
# systemctl enable httpd.service
# systemctl enable php74-php-fpm
phpの設定をするので、一応、オリジナルの設定ファイルを保存しておきます
# cp /etc/opt/remi/php74/php.ini /etc/opt/remi/php74/php.ini.org
phpの設定をします
# vi /etc/opt/remi/php74/php.ini
;date.timezone =
↓
date.timezone = 'Asia/Tokyo'
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
↓
error_reporting = E_ALL & ~E_NOTICE
;error_log = php_errors.log
↓
error_log = "/var/log/php/php_errors.log"
memory_limit = 128M
↓
memory_limit = 256M (多めにすることを推奨)
post_max_size = 8M
↓
post_max_size = 51M (アップロードしそうなファイルの最大値)
upload_max_filesize = 2M
↓
upload_max_filesize = 51M (アップロードしそうなファイルの最大値)
;max_input_vars = 1000
↓
max_input_vars = 5000
;mbstring.language = Japanese
↓
mbstring.language = Japanese
;mbstring.internal_encoding =
↓
mbstring.internal_encoding = UTF-8
;mbstring.http_input =
↓
mbstring.http_input = pass
;mbstring.http_output =
↓
mbstring.http_output = pass
;mbstring.encoding_translation = Off
↓
mbstring.encoding_translation = Off
;mbstring.detect_order = auto (そのまま)
;mbstring.substitute_character = none
↓
mbstring.substitute_character = none;
;mbstring.func_overload = 0
↓
mbstring.func_overload = 0
;mbstring.strict_detection = On
↓
mbstring.strict_detection = Off
;mbstring.http_output_conv_mimetype= (そのまま)
テストページを作って動作確認します
# cd /data/html
# vi test.php
下記の3行を記入します。
<?php
phpinfo();
?>
phpの設定変更を反映させるためにhttpdをリスタートします
# systemctl restart httpd
# systemctl restart php74-php-fpm
ブラウザでこのサーバーにアクセスしてPHPテスト画面が出ればOKです。
http://( FQDN )/test.php
テストページは後で必ず削除してください。
# rm /data/html/test.php
MariaDBの追加設定をします
# vi /etc/my.cnf.d/server.cnf
# this is read by the standalone daemon and embedded servers
[server]
character-set-server=utf8 <--追加
max_allowed_packet=10MB <--追加
connect_timeout=360 <--追加
net_read_timeout=360 <--追加
# vi /etc/my.cnf.d/mysql-clients.cnf
[mysql]
default-character-set = utf8 <--追加
MariaDBを起動します
# systemctl restart mariadb
MariaDBが自動起動するように設定します
# systemctl enable mariadb
以前のMoodle用データベースが残っているのでそのまま利用できるはずです。
もしも問題が起きた場合は予め採っておいたデータベースのダンプデータを読み込ませます。
ブラウザでMoodleサイトの管理ページにアクセスします。
http://[FQDN]/moodle/admin
アップデートの確認画面が表示されたら「続ける」ボタンをクリックして作業を続けます。
サーバーの環境チェックが始まります
警告が表示された場合は必要な対応をします
ログインページが表示されたら管理ユーザーアカウントでログインします。
新しい機能の設定画面が表示されるので、適宜設定します。
閉鎖されていたMoodleサイトを公開します。
[ダッシュボード]--[サイト管理]--[サーバ]--[メンテナンスモード]
メンテナンスモードをNoにしてから[変更を保存する]ボタンをクリックします。