1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Moodle 4.0 をコマンドライン上だけでUbuntu 20.04 にインストール

Last updated at Posted at 2022-08-18

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

Moodleのインストールは、 通常は、
https://docs.moodle.org/400/en/Step-by-step_Installation_Guide_for_Ubuntu
に説明されているように、最後の仕上げにウェブブラウザを使いますが、以下のような PHPスクリプトを使うと、コマンドラインだけでMoodleをインストールすることができます。

まずは、

sudo apt -y update
sudo apt -y upgrade
sudo reboot

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

sudo apt -y install php7.4-cli

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

nano moodleinst.php

のように何かのエディタで(以下に示すような)moodleinst.php を作成します。

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

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

// Moodle 動作に必要な packages をインストール
system("apt -y install apache2 mysql-client mysql-server php7.4 libapache2-mod-php");
system("apt -y install git graphviz aspell ghostscript clamav php7.4-pspell php7.4-curl php7.4-gd php7.4-intl php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-ldap php7.4-zip php7.4-soap php7.4-mbstring");
system("systemctl restart apache2.service");

// 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 www-data:www-data ${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 www-data:www-data ${mdroot}");

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

// non-interactive install command
system("cd ${mdroot}/;  sudo -u www-data /usr/bin/php  admin/cli/install.php --non-interactive --agree-license --lang=ja --wwwroot=\"${url}\" --dataroot=\"${dataroot}\" --dbtype=mysqli --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("a2ensite default-ssl ; a2enmod ssl"); // apache の sslを有効に
// system("snap install --classic certbot");
// system("certbot certonly -n --webroot -w /var/www/html -d $host -m $adminemail --agree-tos ");
// system("certbot install --apache --no-redirect");  // これがもしダメなら手動で ssl.conf を変更。

moodleinst.php が作成できたら、

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

のように実行すると、Moodleのインストールが完了します。

以上です。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?