CentOS7上のMoodle-3.11を4.1.にアップデートします。
このサイト記載の「CentOS7 64bitにMoodle3.11をインストール」の環境で設定されたMoodleサイトをバージ>ョン4.1にアップデートします。
備忘録的なメモなので、これを見て作業して問題が起きても、当方では責任を持ちません。

Moodleモジュールの中には新しい4.1に対応していないものもあるので、モジュールを使っていた場合は特に注意が必要です。

1.Moodleの各バージョンによる必要環境の違いは下記です。今回はついでにPHPとMariaDBのバージョンを新しくします
Moodle4.1     PHP7.4以降   MariaDB10.4以降
Moodle3.11   PHP7.3以降   MariaDB10.2以降

2.下記の手順でアップグレードします
・Moodleサイトを閉鎖します。
・念のために現在のサイト(Moodle3.11)をバックアップ
・Moodle4.1.1をダウンロードして解凍
・Moodle3.11サイトをリネームして保存
・解凍したMoodle4.1.1を今まで3.11が置いてあった場所に移動
・Moodle3.11のconfig.phpファイルをMoodle4.1.1ディレクトリにコピー
・PHP7.3モジュール関係をアンインストール
・PHP8.1モジュールをインストール
・MariaDB10.5関係をアンインストール
・MariaDB10.6をインストール
・ブラウザでMoodleにアクセスしてアップグレードを開始
・データベースフォーマットや文字コード設定で警告が出た場合はコンバート

3.実際の作業は下記のように行います

Moodleサイトを閉鎖します。
[ダッシュボード]--[サイト管理]--[サーバ]--[メンテナンスモード]
メンテナンスモードをYesにします。

念のためにMoodle3.11サイトとデータベースをバックアップします。
/data下にMoodle3.11サイトとmoodledataディレクトリがあるので、tarしてまとめます。
# 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

Moodle4.1.1をダウンロードして解凍
ブラウザでMoodleサイトにアクセスしてソフトをダウンロードします。
# cd  /usr/local/src    (ブラウザのファイルダウンロード先が/usr/local/srcに設定されている場合)

# \rm  -r  moodle  (以前に解凍した古いバージョンのMoodleを削除します)

ダウンロードしたMoodleを解凍します。
# tar  xvfz  moodle-4.1.1.tgz

古いMoodle3.11サイトをリネームして保存します。
# cd  /data/html
# mv  moodle  moodle_old

解凍したMoodle4.1.1を今まで3.11が置いてあった場所にコピーします
# cp  -r  /usr/local/src/moodle   /data/html/.

Moodle3.11のconfig.phpファイルをMoodle4.1を載せたディレクトリにコピーします
# cp  /data/html/moodle_old/config.php   /data/html/moodle/config.php

PHP7.4関係をアンインストール
# rpm -qa  |grep  php (インストールされているphpを確認)

# yum erase php74-php-pear php74-php-intl php74-php-process php74-php-sodium php74-php-cli php74-php-pecl-apcu php74-runtime php74-php-devel php74-php-soap php74-php-xml oniguruma5php php74-php-xmlrpc php74-php-common php74-php-mbstring php74-php-gd php74-php-pdo php74-php php74-php-fpm php74-php-opcache php74-php-json php74-php-pecl php74 gd3php php74-php-mysqlnd 

PHP のパッケージ情報を確認します
# yum  info  php81  --enablerepo=remi

php8.1をremiリポジトリからインストールします
# yum  install --enablerepo=epel,remi --skip-broken httpd httpd-devel httpd-tools mod_ssl  php81-php.x86_64 php81 php81-php-cli php81-php-common php81-php-devel php81-php-gd php81-php-intl php81-php-json php81-php-mbstring php81-php-opcache php81-php-pdo php81-php-pear php81-php-pecl-apcu php81-php-pecl-zip php81-php-process php81-php-soap php81-php-xml php81-php-xmlrpc  php81-php-mysqlnd php81-php-devel php81-php-fpm

php81-php-fpmをインストールし忘れるとWebサイトが全く動かないので注意します

毎回のように php81 コマンドを使用するのは不便なので、alternatives の機能を利用して「php」で呼び出せるように設定します。
# which php81
 /usr/bin/php81

# update-alternatives  --display php
php -ステータスは自動です。
リンクは現在 /usr/bin/php74 を指しています。
  /usr/bin/php74 - 優先度 1
現在の「最適」バージョンは /usr/bin/php74 です。

# update-alternatives  --remove  php  /usr/bin/php74
# update-alternatives  --install   /usr/bin/php  php    /usr/bin/php81  1

# update-alternatives  --display  php
php -ステータスは自動です。
リンクは現在 /usr/bin/php81 を指しています。
 /usr/bin/php81 - 優先度 1
 現在の「最適」バージョンは /usr/bin/php74 です。

php 単体で実行できるようになりました。
# php  --version
PHP 8.1.14 (cli) (built: Jan  4 2023 06:45:14) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.14, Copyright (c) Zend Technologies
with Zend OPcache v8.1.14, Copyright (c), by Zend Technologies

今回のphp.iniの場所はいつもの/etcではありません
# php  -r  "echo phpinfo();"  |  grep  "php.ini"
Configuration File (php.ini) Path => /etc/opt/remi/php81
Loaded Configuration File => /etc/opt/remi/php81/php.ini

旧バージョンのmariadbをチェックしてアンインストールします
# rpm -qa | grep MariaDB
MariaDB-client-10.5.18-1.el7.centos.x86_64
MariaDB-common-10.5.18-1.el7.centos.x86_64
MariaDB-server-10.5.18-1.el7.centos.x86_64
MariaDB-compat-10.5.18-1.el7.centos.x86_64

# yum  erase  MariaDB*

MariaDB 10.6をインストールします
下記のURLを参照
https://mariadb.org/download/?t=repo-config&d=Red+Hat+EL+7+%28x86_64%29&v=10.6&r_m=yamagata-university

# 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.6 RedHat repository list - created 2023-01-24 07:36 UTC
 # https://mariadb.org/download/
 [mariadb]
 name = MariaDB
baseurl = https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/yum/10.6/rhel7-amd64
gpgkey=https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1

# yum update

MariaDBをインストールします。
# yum install MariaDB-client MariaDB-server MariaDB-common MariaDB-compat boost-program-options galera

MariaDBを起動します。
# systemctl restart mariadb

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 php81-php-fpm

httpdが自動起動するように設定します
# systemctl enable httpd.service
# systemctl enable php81-php-fpm

phpの設定をするので、一応、オリジナルの設定ファイルを保存しておきます
# cp  /etc/opt/remi/php81/php.ini  /etc/opt/remi/php81/php.ini.org

phpの設定をします
# vi /etc/opt/remi/php81/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 = 50M (アップロードしそうなファイルの最大値)

upload_max_filesize = 2M
  ↓
upload_max_filesize = 50M  (アップロードしそうなファイルの最大値)

;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 php81-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にしてから[変更を保存する]ボタンをクリックします。

リネームして保存してあった古いバージョンのMoodleを削除します。
#  cd  /data/html

#  \rm  -r  moodle_old


最終更新日時: 2023年 10月 13日(金曜日) 10:53