はじめにRedHat EL7 64bitを通常インストールし、サブスクリプション登録しておきます。
ただしhttpd,php,MariaDBは標準装備の物よりも新しいバージョンを使いたいのでインストールはしません。

Selinuxの無効化をします (無効化するとセキュリティーが低下するので、もしもやる場合は各自の責任で行ってください)
# cd /etc/selinux
# vi config
 SELINUX=enforcing
  ↓
 SELINUX=disabled (無効化設定します)

OSモジュールのアップデートとリブートをします。
サブスクリプション登録を完了していないとアップデートができません。
# yum  update
# reboot

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

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

# yum repolist epel
読み込んだプラグイン:langpacks, product-id, search-disabled-repos, subscription-manager
リポジトリー ID  リポジトリー名                               状態
epel/x86_64  Extra Packages for Enterprise Linux 7 - x86_64   無効
repolist: 0

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

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

# yum repolist remi
読み込んだプラグイン:langpacks, product-id, search-disabled-repos, subscription-manager
リポジトリー ID    リポジトリー名                                            状態
remi               Remi's RPM repository for Enterprise Linux 7 - x86_64     無効
repolist: 0

PHP のパッケージ情報を確認します
# yum info php73 --enablerepo=remi
読み込んだプラグイン:langpacks, product-id, search-disabled-repos, subscription-manager
remi                                          | 3.0 kB  00:00:00
remi/primary_db                               | 3.2 MB  00:00:03
利用可能なパッケージ
名前                : php73
アーキテクチャー    : x86_64
バージョン          : 2.0
リリース            : 1.el7.remi
容量                : 2.3 k
リポジトリー        : remi
要約                : Package that installs PHP 7.3
ライセンス          : GPLv2+
説明                : This is the main package for php73 Software Collection,
                    : that install PHP 7.3 language.

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

php7.3をインストールします
# yum install --enablerepo=epel,remi --skip-broken httpd httpd-devel httpd-tools mod_ssl  php73-php php73 php73-php-cli php73-php-common php73-php-devel php73-php-gd php73-php-intl php73-php-json php73-php-mbstring php73-php-opcache php73-php-pdo php73-php-pear php73-php-pecl-apcu php73-php-pecl-zip php73-php-process php73-php-soap php73-php-xml php73-php-xmlrpc  php73-php-mysqlnd php73-php-devel php73-php-fpm

php73-php-fpmをインストールし忘れるとWebサイトが全く動かないので注意します
php73-phpを入れておかないとPHP本体がインストールされません。

毎回のように php73 コマンドを使用するのは不便なので、alternatives の機能を利用して「php」で呼び出せるように設定します。
# which php73
 /usr/bin/php73
# update-alternatives --install /usr/bin/php php /usr/bin/php73 1
php 単体で実行できるようになりました。
# php --version
PHP 7.3.33 (cli) (built: Nov 16 2021 11:18:28) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.33, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.33, Copyright (c) 1999-2018, by Zend Technologies

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

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

MariaDB 10.2をインストールします
# vi /etc/yum.repos.d/mariadb.repo
# MariaDB 10.2 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.2/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

httpdを起動します
# systemctl restart httpd.service
# systemctl restart php73-php-fpm

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

httpdの環境設定をします
Webサイトをのせるディレクトリをたとえば下記のように作ります
# mkdir /data
# 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/php73/php.ini /etc/opt/remi/php73/php.ini.org

phpの設定をします  ↓
# vi  /etc/opt/remi/php73/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 = 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 php73-php-fpm

ブラウザでこのサーバーにアクセスしてPHPテスト画面が出ればOKです。
http://( FQDN )/test.php
テストページは後で必ず削除してください。
# rm /data/html/test.php

一応php.iniの定位置にリンクを張っておきます
# ln  -s  /etc/opt/remi/php73/php.ini  /etc/php.ini

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の初期設定をします
# mysql_secure_installation
 Enter current password for root (enter for none): (最初はパスワードが無いから何も無しでenter)
 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サイトにアクセスして、Moodle3.9.11をダウンロードしてインストールします
URL  https://moodle.org/
(Moodle3.9.11のインストール条件は Requires: PHP 7.2, MariaDB 10.2.29 )
# cd /usr/local/src (ダウンロード先が/usr/local/srcの場合)
# tar xvfz moodle-latest-39.tgz
# cp -r moodle /data/html/.

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

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

開いているポートをチェックして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 (開いているポートを再チェック)

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

サーバチェックの中で下記のような警告が出るかもしれません
 名称  情報    レポート        プラグイン      ステータス
 php_extension sodium  最適な動作のためインストールおよび有効化してください。

ただし、PHP 7.2.0 以降、この拡張機能は PHP 本体にバンドルされているようです。
それより前の PHP のバージョンでは、 この拡張機能は PECL 経由で利用可能です。

以上

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