(68) Almalinux 9.2にMoodle4.2+をインストール
はじめに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 = ""