はじめにAlmalinux 9.2 64bitを通常インストールしておきます。
ただしhttpd,php,MariaDBは標準装備の物よりも新しいバージョンを使いたいのでインストールはしません。
固定IP Addressを設定しDNSで名前の正引きができるようにネットワーク環境を整えます。

Selinuxの無効化をします。
無効化するとセキュリティーが低下するので、もしもやる場合は各自の責任で行ってください。
# cd /etc/selinux

# vi config
 SELINUX=enforcing
  ↓
 SELINUX=disabled (無効化設定します)

変更前のオリジナルの設定ファイルを保存します。
# cd /etc/default
# cp  grub  grub.org

設定ファイルにオプションのselinux=0を追加します。
#  vi grub
  GRUB_CMDLINE_LINUX="resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet"
  ↓
  GRUB_CMDLINE_LINUX="resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet selinux=0"

変更を反映させます。
# grub2-mkconfig  -o  /boot/grub2/grub.cfg

OSモジュールのアップデートとリブートをします。
# dnf  update
# reboot

Moodleのコミュニティーサイトにブラウザでアクセスして利用したいMoodleバージョン(Moodle 4.2.1+)の必要環境を調べておきます。
https://download.moodle.org/releases/latest/
Requires: PHP 8.0, MariaDB 10.6.7 or MySQL 8.0 or Postgres 13 or MSSQL 2017 or Oracle 19c
今回はPHP8.2とMariaDB10.10をインストールします。

epelリポジトリを追加します
# cd /usr/local/src
# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

通常はepelリポジトリを有効にしないように設定ファイルを修正します
# vi /etc/yum.repos.d/epel.repo
 enabled=1
 ↓
 enabled=0

# dnf repolist epel
  repo id              repo の名前                                                    状態
  epel      Extra Packages for Enterprise Linux 9 - x86_64    無効化

remiリポジトリを追加します
# dnf install http://rpms.famillecollet.com/enterprise/remi-release-9.rpm

通常はremiリポジトリを有効にしない設定にします
# vi /etc/yum.repos.d/remi-safe.repo
 enabled=1
 ↓
 enabled=0

# dnf repolist remi
  repo id                repo の名前                                                                    状態
  remi        Remi's RPM repository for Enterprise Linux 9 - x86_64       無効化

PHP のパッケージ情報を確認します
# dnf info php82 --enablerepo=remi
  利用可能なパッケージ
名前         : php82
バージョン   : 8.2
リリース     : 5.el9.remi
Arch         : x86_64
サイズ       : 7.2 k
ソース       : php82-8.2-5.el9.remi.src.rpm
リポジトリー : remi
概要         : Package that installs PHP 8.2
ライセンス   : GPL-2.0-or-later
説明         : This is the main package for php82 Software Collection,
                : that install PHP 8.2 language.

旧バージョンのPHPがインストールされているかチェックし、もし有ればアンインストールします
# rpm -qa |grep php
# dnf erase php*

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

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

なぜか php-fedora-autoloader-1.0.1-7.el9.noarch php-cli-8.0.27-1.el9_1.x86_64 php-common-8.0.27-1.el9_1.x86_64 php-nikic-php-parser4-4.16.0-1.el9.remi.noarch がインストールされてしまったので、削除します。
# dnf erase php-fedora-autoloader-1.0.1-7.el9.noarch php-cli-8.0.27-1.el9_1.x86_64 php-common-8.0.27-1.el9_1.x86_64 php-nikic-php-parser4-4.16.0-1.el9.remi.noarch

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

# update-alternatives  --install   /usr/bin/php  php    /usr/bin/php82  1

# update-alternatives  --display  php
  php - status is auto.
  link currently points to /usr/bin/php82
  /usr/bin/php82 - priority 1
  Current `best' version is /usr/bin/php82.

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

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

いつもの場所にリンクを張っておきます。
# ln  -s  /etc/opt/remi/php82/php.ini  /etc/php.ini

旧バージョンのmariadbをチェックして、もし有ればアンインストールします
# rpm -qa | grep MariaDB
# dnf  erase  MariaDB*

MariaDB 10.10をインストールしrpm -qa | grep MariaDBます
下記のURLを参照
https://mariadb.org/download/
「MariaDB Server Repositories」のタグをクリックして設定をします。
表示されたレポジトリデータを元に設定ファイルを作ります。
# vi /etc/yum.repos.d/MariaDB.repo
  # MariaDB 10.10 RedHatEnterpriseLinux repository list - created 2023-07-19 06:52 UTC
  # https://mariadb.org/download/
  [mariadb]
  name = MariaDB
  # rpm.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details.
  # baseurl = https://rpm.mariadb.org/10.10/rhel/$releasever/$basearch
  baseurl = https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/yum/10.10/rhel/$releasever/$basearch
  # gpgkey = https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
  gpgkey = https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/yum/RPM-GPG-KEY-MariaDB
  gpgcheck = 1

# dnf update

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

httpdの環境設定をします
Webサイトをのせるディレクトリをたとえば下記のように作ります
# mkdir /data           (ここにMoodle関係のサイトデータを載せます)
# mkdir /data/html  (ここをドキュメントルートにします)

# cd /etc/httpd/conf

一応、オリジナルの設定ファイルを保存しておきます
# cp httpd.conf httpd.conf.org

httpdの設定をします
# vi httpd.conf
 DocumentRoot “/var/www/html”
  ↓
 DocumentRoot “/data/html”    <--こちらに修正

 <Directory “/var/www/html”>
  ↓
 <Directory “/data/html”>     <--こちらに修正

 DirectoryIndex index.html
  ↓
 DirectoryIndex index.php index.html  <--こちらに修正

mime.typesの設定追加をします
# vi /etc/mime.types
  application/x-httpd-php           php
  application/x-httpd-php-source    phps

phpの設定をします
ログを記録するディレクトリを作ります
# mkdir /var/log/php
# chown apache:apache /var/log/php
# chmod 755 /var/log/php

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

phpの設定をします  ↓
# vi  /etc/opt/remi/php82/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();
  ?>

動作チェックの為にhttpdをスタートします
# systemctl start httpd
# systemctl start php82-php-fpm

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

開いているポートをチェックしてFiewallの設定をします
デフォルトではポート22/TCP(ssh)しか開いていないのでhttp,https,smtpなど必要なポートを追加します
# firewall-cmd --list-all-zones (開いているポートをチェック)
# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --add-service=https --zone=public --permanent
# firewall-cmd --add-service=smtp --zone=public --permanent
# firewall-cmd --reload
# firewall-cmd --list-all-zones (開いているポートを再チェック)

ブラウザでこのサーバーにアクセスして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 start mariadb

MariaDBが自動起動するように設定します
# systemctl enable mariadb

mariadbの初期設定をします
10.6からはmysql_secure_installationが無くなって、mariadb-secure-installationコマンドになりました
# mariadb-secure-installation
 Enter current password for root (enter for none): (最初はパスワードが無いから何も無しでenter)
    Switch to unix_socket authentication [Y/n] n
 Set root password? [Y/n] Y
 New password:  (適当なパスワード)
 Re-enter new password:(適当なパスワード)
 Remove anonymous users? [Y/n]Y
 Disallow root login remotely? [Y/n] Y
 Remove test database and access to it? [Y/n]  Y
 Reload privilege tables now? [Y/n] Y
 Thanks for using MariaDB!

Moodle用のベータベースをMariaDBに作ります
# systemctl restart mariadb.service

# mysql -u root -p(パスワード) (-pとパスワードの間にスペースを入れない)
  > select host,user,password from mysql.user;
  > create database moodle character set utf8mb4 COLLATE utf8mb4_unicode_ci; 
  > show databases;
  > exit

ブラウザでmoodle.orgサイトにアクセスして、Moodle4.2+をダウンロードしてインストールします
URL  https://moodle.org/
(Moodle4.2+のインストール条件は Requires: PHP 8.0, MariaDB 10.6.7)

# cd /usr/local/src (ダウンロード先が/usr/local/srcの場合)
# tar xvfz moodle-latest-402.tgz
# cp -r moodle /data/html/.

Moodle用のデータ搭載用ディレクトリを作ります
# mkdir /data/moodledata

httpdから書き込めるようにします
# chown apache:apache /data/moodledata

ブラウザで http://[FQDN]/moodle にアクセスしてインストールを開始します。
インストール途中でブラウザに表示される内容を/data/html/moodle/config.phpに書込む必要があります。

すべての設定が終わってMoodleサイトが立ち上がったら、忘れずにcron設定を行います。
# crontab -e
  */5 * * * * php -q  /path to Moodle/admin/cli/cron.php  1> /dev/null  2> /dev/null

crontab -e で設定したファイルは /var/spool/cron/root にあります。
cron動作のメイル連絡を止めるには、下記の1行を追加します。
MAILTO = ""


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