CentOS7 64bitにMoodle3.11をインストールします。

はじめにCentOS7 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-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 php74 --enablerepo=remi
読み込んだプラグイン:fastestmirror, langpacks
名前                : php74
アーキテクチャー    : x86_64
バージョン          : 1.0
リリース            : 3.el7.remi
容量                : 2.6 k
リポジトリー        : remi
要約                : Package that installs PHP 7.4
ライセンス          : GPLv2+
説明                : This is the main package for php74 Software Collection,
                    : that install PHP 7.4 language.

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

php7.4をremiリポジトリからインストールします
# yum  install --enablerepo=epel,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」で呼び出せるように設定します。
# 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.33 (cli) (built: Dec 19 2022 13:17:59) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies 
with Zend OPcache v7.4.33, 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-libs-5.5.68-1.el7.x86_64

# yum erase mariadb*
依存性関連での削除をします:
postfix                       x86_64                  2:2.10.1-9.el7
postfixも一緒に削除されてしまうので、必要な場合は後で再インストールします。

MariaDB 10.5をインストールします
# vi /etc/yum.repos.d/mariadb.repo
# MariaDB 10.5 CentOS repository list - created 2023-02-03 01:53 UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
#  baseurl = https://rpm.mariadb.org/10.5/centos/$releasever/$basearch
baseurl = https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/yum/10.5/centos/$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

MariaDBリポジトリの追加を反映させるためにupdateします。
# yum update

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

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

httpdが自動起動するように設定します
# systemctl enable httpd.service
# systemctl enable php74-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/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 = 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 = 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 php74-php-fpm

ブラウザでこのサーバーにアクセスしてPHPテスト画面が出ればOKです。
http://( FQDN )/test.php

テストページは後で必ず削除してください。
# rm /data/html/test.php

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

MariaDBの追加設定をします
# vi /etc/my.cnf.d/server.cnf
 # this is read by the standalone daemon and embedded serverr
[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)
 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サイトにアクセスして、Moodle3.11をダウンロードしてインストールします
URL  https://moodle.org/
Moodle3.11のインストール条件はRequires: PHP 7.3以降, MariaDB 10.2.29)以降

# cd /usr/local/src (ダウンロード先が/usr/local/srcの場合)

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

解凍したMoodleをドキュメントルートにコピーします。
# cp -r moodle /data/html/.

# cd /data/html/moodle

# ls 
CONTRIBUTING.txt           blocks           customfield    help_ajax.php  notes                repository
COPYING.txt                blog             dataformat     index.php      npm-shrinkwrap.json  rss
Gruntfile.js               brokenfile.php   draftfile.php  install        package.json         search
INSTALL.txt                cache            enrol          install.php    payment              security.txt
PULL_REQUEST_TEMPLATE.txt  calendar         error          iplookup       phpcs.xml.dist       tag
README.txt                 cohort           favourites     lang           phpunit.xml.dist     theme
TRADEMARK.txt              comment          file.php       lib            pix                  tokenpluginfile.php
admin                      competency       files          local          plagiarism           user
analytics                  completion       filter         login          pluginfile.php       userpix
auth                       composer.json    githash.php    media          portfolio            version.php
availability               composer.lock    grade          message        privacy              webservice
backup                     config-dist.php  group          mnet           question
badges                     contentbank      h5p            mod            rating
behat.yml.dist             course           help.php       my             report

httpdから書き込む可能性のあるディレクトリの所有者をapacheユーザーにします。
# chown apache:apache mod
# chown apache:apache theme

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

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

開いているポートをチェックしてFiewallの設定をします
デフォルトではポート22/TCP(ssh)しか開いていないのでhttp,https,smtpなど必要なポートを追加します
# firewall-cmd --list-all-zones (開いているポートをチェック public (active)の項目を確認)
# 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 (開いているポートを再チェック)

下記のようになっていればOKです。
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources: 
  services: dhcpv6-client http https smtp ssh   <----開いている
  ports: 

ブラウザで http://[FQDN]/moodle にアクセスしてインストールを開始します。

Moodle Install








インストール途中でブラウザに表示される設定内容を/data/html/moodle/config.phpに書込む必要があります。

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

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

Moodle内で一定時間毎に動作するタスクのトリガーにするため、crontabの設定をします。
# crontab -e
MAILTO = ""   (毎回メイルで報告されないように設定します。)
 */5 * * * * php -q  /path to Moodle/admin/cli/cron.php  1> /dev/null  2> /dev/null

CentOS7ではcron.dailyの実行時刻がランダム化されているので、設定した時刻に実行されるようにします。
現在の設定を確認(何も設定されていません)
#  cat /etc/crontab 

動作時刻のランダム化をしないモジュール(cronie-noanacron)をインストールします。
#  yum install cronie-noanacron

動作時刻のランダム化をしているモジュール(cronie-anacron)をアンインストールします。
#  yum remove cronie-anacron

実行時刻の設定
# vi  /etc/cron.d/dailyjobs
# Run the daily, weekly, and monthly jobs if cronie-anacron is not installed
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# run-parts
02 4 * * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.daily
22 4 * * 0 root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.weekly
42 4 1 * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.monthly

以上


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