(65) CentOS7 64bitにMoodle3.11をインストール
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 にアクセスしてインストールを開始します。
インストール途中でブラウザに表示される設定内容を/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
以上