AWSのEC2・Linuxに自分でMoodleを構築する方法
AWSのEC2に自分でMoodleを構築する方法は面倒くさいです。デメリットは面倒くさいこと。メリットは特にありません。自分で苦労して作った達成感くらいが味わえる、くらいですかね。
手順
ざっくりとした手順です。
- AWS上にEC2を作成する
- 必要なプロダクトをインストールする
ここで、必要なプロダクトというのは、Apache(Webサーバー)、データベース(MySQL)、Moodleを動かすためのモジュール(?というのか?)であるPHPです。
これらを次の順番で入れていきます。
- Apache
- PHP
- MySQL
- Moodle
これらを順番に入れていきます。ちなみにMoodleの最新バージョン(この時3.10)に合わせて各プロダクトのバージョンは次のようにしています。
- MySQL – 最小バージョン 5.1.33 →なのでインストールしたのは (mysqld 5.7.34)
- Apache -(httpd -v)で2.4.46
- PHP 7.3
入れる前にMariaDB削除
さっそくサーバーを作っていきます。ここで大事なことはMariaDBを削除することです。MariaDBとはAWSがMySQLを改良したデータベースで、EC2のAmazon Linuxに初めから導入されています。これをまずアンインストールします。
sudo yum list installed | grep mariadb →すでにインストールされているMariaDBを探す
sudo yum remove mariadb-libs*→インストールされているMariaDBを削除
ApacheWebサーバーを入れる
作成したEC2上のAmazon LinuxにApache Webサーバーをインストールします。
sudo yum install -y httpd →Apacheをインストール
PHPをインストール
Apacheが無事インストール出来たら、続いてはPHPをインストールします。
sudo amazon-linux-extras install php7.3
続いて拡張モジュールも次のコマンドでインストール
sudo yum install php-cli php-common php-devel php-fpm php-gd php-mysqlnd php-mbstring php-pdo php-xml php-intl php-xmlrpc php-soap
データベースMySQLをインストール
1、MySQL公式のyumリポジトリを追加
$ sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
→mysql8.0リポジトリの追加(このリポジトリに5.7も含まれています)
2、MySQL8.0無効化とMySQL5.7有効化
$ sudo yum-config-manager -–disable mysql80-community
$ sudo yum-config-manager -–enable mysql57-community
3、mysql5.7がインストールできるか確認
$sudo yum info mysql-community-server
4、MySQL のインストール
$ sudo yum install mysql-community-server -y
そのあと、下記コマンドでMySQLのバージョンを確認
$ mysqld –version
MySQLの自動起動を設定します。Webサーバーもね。
systemctl enable mysqld.service
5、MySQLのrootパスワードを変える
続いて、MySQLの初期パスワードを変更します。初期パスワードはMySQLをインストールしたログファイルにrootのパスワードが記載されています。
/var/log/mysqld.logの中を探す
[Note] A temporary password is generated for root@localhost: Xg/g;#B/f6Y;みたいな感じで。
このパスワードを「mysql_secure_installation 」を使って変更します。
# mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root: 初期パスワードを入力する。ここでは「Xg/g;#B/f6Y;」
The existing password for the user account root has expired. Please set a new password.
New password: 新しいパスワードを入力する
Re-enter new password: 再度同じ新しいパスワードを入力する
パスワードを忘れないようにメモしながら入力すると良いです。その他、DB管理に関することもいくつか聞かれます。セキュリティも考えて、すべて「y」にしています。
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.・・・・・
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.・・・・・
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y Success.・・・・・
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.
という感じ。
6、Moodle用のDBを作成する
➀MySQLにログインする。
mysql -u root -p
→このとき先ほど設定したMySQLのパスワードを聞かれるので、普通にパスワードを入力する。
②MySQLにログイン出来たら、テーブルを作成する
CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ここでは「moodle」という名前のデータベースにしていますが、名前は何でもいいですw
コマンドラインではこんな感じ。
mysql> CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Query OK, 1 row affected (0.00 sec)
③「show databases;」でDBが作成できているか確認する
mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| moodle |
| mysql |
| performance_schema |
| sys |
+——————–+
5 rows in set (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
④MoodleがDBを操作できるように権限付与
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodle.* TO ‘moodleuser’@’localhost’ IDENTIFIED BY ‘DBのパスワード’;
Moodleのインストール
ここまでおぜん立てして、いよいよMoodleのインストールです。
1、gitをインストール
Moodleのモジュールをダウンロードするため、gitをインストールします。
sudo yum install git
2、Moodleのモジュールをダウンロード
git clone -b MOODLE_310_STABLE git://git.moodle.org/moodle.git
このとき、Moodleのモジュールをダウンロードするフォルダを「/var/www/html」にしましょう。Apacheのドキュメントルートが「/var/www/html」だからね。
3、Moodleインストールのための設定
moodledataディレクトリを作る
/var/www/html以下にmoodledataフォルダを作成し、書き込み権限を与えます。
mkdir moodledata
chmod 777 moodledata/
4、オーナーを変える
chown apache /var/www/html/moodle
結果、こうなります。
drwxr-xr-x 58 apache root 4096 Jun 5 03:50 moodle
drwxrwxrwx 4 root root 47 Jun 5 02:06 moodledata
インストール終了後はオーナーを戻しておきます
5、moodleのインストール画面でインストール
後は「http://ホストアドレス/moodle」にアクセスし、Moodleのインストールを実行するだけです。この時エラーが出ます。
インストール時のノウハウ
Database Connection Failedが出る
DBを先に作ってないのに、Moodleをインストールしようとすると、Database Connection faildが出ます。当然ちゃ当然ですが、わからずはまりました。Moodleのインストールには、先に空のデータベースを作っておきましょう。

PHPのintlモジュールでエラー
Moodleをインストールする際、PHP拡張モジュールのインストールを促されます。追加モジュールとしてyum install phpのintlして、成功しても全く有効化されませんでした。phpinfo();でも出てこない。
困り果てたので、一度PHPを全削除、再度PHPをインストール、拡張モジュールの中にintlを入れて再導入することで治りました。
これからはMoodle側の運用について調べていきます。
■サーバー立ててみる。話はそれからです。■
PHP 7.2, MariaDB 10.2.29 or MySQL 5.7 or Postgres 9.6 or MSSQL 2012 or Oracle 11.2