LoginSignup
0
0

More than 1 year has passed since last update.

Moodle 3.11 をコマンドライン上だけでCentOS8 にインストール

Last updated at Posted at 2021-11-25

Moodle 3.11 を、ウェブブラウザを使わずに、コマンドライン上だけで CentOS 8 にインストールする方法です。

Moodleのインストールは、 通常は、
https://docs.moodle.org/3x/ja/Moodle%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
に説明されているように、最後の仕上げにウェブブラウザを使いますが、以下のような PHPスクリプトを使うと、コマンドラインだけでMoodleをインストールすることができます。

まずは、

sudo yum -y update
sudo reboot

を実行して CentOS 全体の update をしておきます。再起動が終わりログインしたら、さらに、

sudo dnf -y install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo dnf -y module list php
sudo dnf -y module reset php
sudo dnf -y module enable php:remi-7.4
sudo dnf -y install php

を実行して、PHP をコマンドラインで実行できるようにします。
その後、

nano moodleinst.php

など何かエディタを使って、(以下に示すような)moodleinst.php を作成して

sudo chmod 600 moodleinst.php  # 念の為
sudo php moodleinst.php

のように実行すると、Moodleのインストールが完了します。
(moodleinst.php の中身は下の通り)

moodleinst.php
<?php
// サーバによって違う parameters (各自編集してください):
$host = "xxx.xxx.xxx.xxx";  // set host IP address
// $host = "your.host.jp";  // or DNS hostname
$ver = "311"; // Moodle 3.11
$mdpass= 'your%pass-word'; // moodle admin, mysql user ('&'はダメみたい)
$adminemail = "youradminmail@foo.bar";

$md = 'moodle'; // 同一サーバ上で2つ目のMoodleをセットアップする時は変える

// Moodle 動作に必要な packages をインストール
system("dnf -y install php-opcache php-gd php-curl php-mysqlnd php-xmlrpc php-soap php-xml php-mbstring php-intl php-pecl-zip php-sodium php-ldap ");
system("dnf -y install httpd mod_ssl mariadb-server git");
system("firewall-cmd --add-service=http --add-service=https");
system("firewall-cmd --runtime-to-permanent");

system("systemctl enable httpd");
system("systemctl start httpd");
system("systemctl enable mariadb");
system("systemctl start mariadb");

// Download Moodle
$mdroot = "/var/www/html/${md}";
if ($md == "moodle"){
  system("cd /var/www/html/ ; git clone git://git.moodle.org/moodle.git");
}else{
  system("cd /tmp/ ; git clone git://git.moodle.org/moodle.git");
  system("mv /tmp/moodle ${mdroot}");
}
system("cd ${mdroot}/; git checkout -b local_${ver}_STABLE origin/MOODLE_${ver}_STABLE");
system("chmod 755 ${mdroot}");

// data dir
$dataroot = "/var/www/${md}d";
system("mkdir ${dataroot}; chown apache:apache ${dataroot}/");

// DB
$dbuser = "dbu${md}";
system("mysql -u root -e \"CREATE DATABASE $md  DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; \";");
system("mysql -u root -e \"CREATE USER ${dbuser}@localhost IDENTIFIED BY '$mdpass'; \"; ");
system("mysql -u root -e \"GRANT ALL ON ${md}.* TO ${dbuser}@localhost ; \"; ");
// mysql パスワードありの場合は、 mysql -u root -pmysqlpassword -e ... と書く

// moodle directory を書き込み可能に
system("chown -R apache:apache ${mdroot}");

$url = "http://${host}/${md}";  // if apache documentroot is as default

// non-interactive install command
system("cd ${mdroot}/;  sudo -u apache /usr/bin/php  admin/cli/install.php --non-interactive --agree-license --lang=ja --wwwroot=\"${url}\" --dataroot=\"${dataroot}\" --dbtype=mariadb --dbname=$md --dbuser=${dbuser} --dbpass=$mdpass --fullname=\"${md} site\" --shortname=${md} --adminpass=$mdpass --adminemail=$adminemail");

// moodle directory を書き込みできないように
system("chown -R root:root ${mdroot}");
system("chmod 644 ${mdroot}/config.php");

echo("$url でMoodleが使えます。\n adminパスワードは $mdpass です。\n 以下を crontab に追加してください: \n* * * * * php ${mdroot}/admin/cli/cron.php > /dev/null 2>&1 \n");

// おまけ: Let's encrypt の設定
// system("yum -y install certbot");
// system("certbot certonly -n --webroot -w /var/www/html -d $host -m $adminemail --agree-tos ");
// system("certbot install --apache --no-redirect");  // これがもしダメなら手動で ssl.conf を変更。

以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0