4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

記事投稿キャンペーン 「2024年!初アウトプットをしよう」

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

Last updated at Posted at 2024-01-02

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

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

まずは、

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

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

sudo apt -y install php8.1-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 = "401"; // Moodle 4.1
$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 php8.1 libapache2-mod-php");
system("apt -y install git graphviz aspell ghostscript clamav php8.1-pspell php8.1-curl php8.1-gd php8.1-intl php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-ldap php8.1-zip php8.1-soap php8.1-mbstring");

// PHP設定 max_input_vars を 5000 に
system("cp /etc/php/8.1/apache2/php.ini /etc/php/8.1/apache2/php.ini.orig");
system("sed -i '/max_input_vars = .*/a\max_input_vars = 5000' /etc/php/8.1/apache2/php.ini");
system("cp /etc/php/8.1/cli/php.ini /etc/php/8.1/cli/php.ini.orig");
system("sed -i '/max_input_vars = .*/a\max_input_vars = 5000' /etc/php/8.1/cli/php.ini");

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");

// 80番, 443番ポートを開く
system("ufw allow http; ufw allow https");

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のインストールが完了します。

以上です。

4
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
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?