Moodleの環境構築を行います。
今回の環境は以下とします。
ソフトウェア | バージョン | 備考 |
Apache | 2.4.6 | プリインストール(CentOS) |
MariaDB | 5.5.44 | MySQL互換 |
PHP | 5.4.16 | 関連モジュールもインストール |
Moodle | 2.9.2+ | 2.9.2の修正版 |
※CentOS7環境なので、DBはMySQL互換のMariaDBを使用
ちょっと長いですが、以下の手順で進めます。
長々したページになるので、①~⑥まで「その1」、⑦~⑫を「その2」で記述します。
①Moodleダウンロード
②Apacheインストール
③PHPインストール
④MariaDBインストール
⑤MariaDB初期設定
⑥Moodle用データベース/ユーザー作成
⑦ファイルのパーミッション変更
⑧データ用のディレクトリ作成
⑨.htaccessによるアクセス制限
⑩Moodleインストール
⑪Moodle設定
⑫その他の設定
①Moodleダウンロード
リンク先(公式サイト)からファイルをダウンロードします。
アクセス時の最新バージョンが記述されたボタンがあるので、押下。
上下に同じ「2.9.2」のバージョンがありますが、上は細かい修正を加えたバージョン。下が公式に発表している同バージョン。
どちらを選択するかは好みだと思いますが、Informationで修正入ってる方使ってね的な事が書いてあるので、今回は上の方を選択します。
Linuxなので「.tarz」のファイルをダウンロード。(Windowsの場合は.zipの方になります)
ファイル「moodle-latest-29.tgz」が取得できました。
②Apacheインストール
linuxの場合、導入方法は主に以下の2パターン。
(1)yumやrpm,deb等のパッケージ管理を使ってインストール
(2)ソースをDLし、コンパイル(make)してインストール
今回はプリインストールされている(1)のパッケージ管理されたApacheを使って作業を進めるのでインストール手順は割愛します。
もしlinuxマシンにパッケージ管理されたApacheが入っているかどうか調べたい場合のコマンドは以下。
yum list installed | grep httpd
httpd.x86_64等の表示がなされれば、既にApacheがインストールされている状態です。
未インストールの場合も適当に調べてインストールすれば手間取る事はないと思いますが、インストール方法やディストリビューションによって起動用シェルや設定ファイル、公開ディレクトリの場所が異なるので注意しましょう。(特にdebian系は設定ファイルのレイアウトがかなり異なります)
今回の環境では以下。
起動用シェル:/usr/sbin/httpd
設定ファイル:/etc/httpd/conf/httpd.conf
公開ディレクトリ(デフォルト):/var/www/html
③PHPインストール
まず以下コマンドでインストール確認。
yum list installed | grep php
何も表示されないのでインストールされていない様子。
とりあえず、以下の最低限必要なパッケージをインストールします。
・php:PHP本体
・php-mysql:PHPとMySQL(MariaDB)の連携モジュール
・php-mbstring:PHPでマルチバイト文字を扱うためのモジュール。
※インストールできるPHP系のパッケージを確認したい場合は以下のコマンドを実行する。
yum list | grep php
必要最低限のパッケージのみインストールします。
yum install php php-mysql php-mbstring
インストール確認。
yum list installed installed| grep php
どうやら関係するモジュールとして、以下も自動でインストールされるようです。
・php-cli
・php-common
・php-pdo
バージョン確認。
php -v
5.4.16が入っていました。
最後に、ApacheでPHPファイル(拡張子.php)をPHPモジュール経由で動作させるように設定ファイルを書き換えます。
sudo vi /etc/httpd/conf/httpd.conf
適当な場所(タグで囲われた中以外)に以下を記述します。良くわからない時は一番最後にでも記述すればよいです。
AddType application/x-httpd-php .php
Apache再起動。
sudo systemctl restart httpd.service
④MariaDBインストール
まず以下コマンドでインストール確認。
yum list installed | grep maria
mariadb-libs(他で利用するライブラリとしてプリインストール)以外は表示されないので、インストールされていない様子。
とりあえず、以下の最低限必要なパッケージをインストールします。
・mariadb:MariaDB本体
・mariadb-server:MariaDBサーバー
※インストールできるMariaDB系のパッケージを確認したい場合は以下のコマンドを実行する。
yum list | grep maria
必要最低限のパッケージのみインストールします。
sudo yum install mariadb mariadb-server
インストール確認。
yum list installed installed| grep maria
バージョン確認。
mysql --version
インストールはされているようですが、これはMariaDBのバージョンが表示されているわけではないようです。
MariaDB起動。
sudo systemctl start mariadb.service
MariaDB接続。
mysql -u root
※初期状態ではrootユーザーのパスワードなし状態(後で変更)
接続後、以下SQLを実行。
SELECT version(); exit;
バージョンは5.5.44と表示されました。
※MySQL5.5まではMariaDBのバージョンと対応しているようですが、MySQL5.6からはMariaDBのバージョンが10.xとなるようです
⑤MariaDB初期設定
とりあえず色々必要なセキュリティ対応等を対話式で行ってくれるmysql_secure_installationという便利コマンドがあるので、これを使います。
※以下、表示されるメッセージは一部省略しています
mysql_secure_installation
・rootログイン(パスワードは未設定なので入力なしでEnter)
Enter current password for root (enter for none):
・rootのパスワードを設定しますか?なのでy入力
Set root password? [Y/n]y
・rootのパスワードを入力
※入力値は画面表示されません
New password:
・rootのパスワードを再入力(確認)
※入力値は画面表示されません
Re-enter new password:
・誰でもログインできる状態を止める(anonymousユーザー削除)ので、y入力
Remove anonymous user? [Y/n]y
・rootユーザーのリモートからのログインは禁止するのでy入力
Disallow root login remotely? [Y/n]y
・デフォルトで存在するデータベースtestは不要なので削除(y入力)
Remove test database and access to it? [Y/n]y
・今すぐ変更を反映するか?なのでy入力
Reload privilege tables now? [Y/n]y
あとは文字コードを変更しておきます。
まずは現在の設定を確認するので、DB接続。
コマンド実行後、先ほど設定したrootユーザーのパスワードを入力。
mysql -u root -p
以下実行。(statusと入力)
MariaDB [(none)]>status
私の環境では以下のように表示されました。
Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1
文字コードが「latin1」になっているので、全て「utf-8」に変更しておきます。
ログアウト。
MariaDB [(none)]>exit
mariadbの設定ファイル構成は以下。
基本的にコマンドの引数を設定するファイルなので、それぞれ該当するファイルに設定を追記していく。
種類 | パス |
備考 |
メインの設定ファイル |
/etc/my.cnf | この中に/etc/my.cnf.d直下のファイルを読み込む設定がある |
mariadb-serverの設定 | /etc/my.cnf.d/server.cnf | サーバー系コマンドの引数設定 |
mariadb-libsの設定 | /etc/my.cnf.d/mysql-clients.cnf | クライアント系コマンドの引数設定 |
mariadbの設定 | /etc/my.cnf.d/client.cnf | クライアント系コマンドの引数設定 |
設定ファイルを開く。
sudo vi /etc/my.cnf.d/server.cnf
[mysql]と記入された行の下に以下を記述して保存。
character-set-server=utf8
設定ファイルを開く。
sudo vi /etc/my.cnf.d/mysql-clients.cnf
[mysqld]と記入された行の下に以下を記述。
default-character-set=utf8=utf8
同様に[mysqldump]と記入された行の下に以下を記述して保存。
default-character-set=utf8
設定ファイルを開く。
sudo vi /etc/my.cnf.d/client.cnf
[client]と記入された行の下に以下を記述して保存。
default-character-set=utf8
MariaDB再起動。
sudo systemctl restart mariadb.service
以下実行し、DB接続後にstatusを実行し、文字コードを確認する。
mysql -u root -p
MariaDB [(none)]>status
⑥Moodle用データベース/ユーザー作成
以下実行し、DB接続。
mysql -u root -p
作成するのは以下2つ。
・Moodle用のデータベース
・Moodle用のデータベースユーザー
まずはデータベースを作成します。(DB名は各自任意で)
MariaDB [(none)]>CREATE DATABASE DB名 DEFAULT CHARACTER SET 'utf8';
次に、データベースユーザーを作成します。
最低限の権限を持たせたユーザーにしましょうと書かれているのですが、どのぐらい権限が必要なのか分からないので、とりあえずMoodle用データベースに関する権限のみ全て与えました。
MariaDB [(none)]>GRANT ALL PRIVILEGES ON DB名.* TO 'ユーザー名'@'接続ホスト' IDENTIFIED BY 'パスワード';
※DB名は先に作成したMoodle用データベースの名前
※接続ホストは通常localhost(MySQLとMoodleのサーバーが別の場合はMoodleのサーバーのIPを設定)
※パスワードはユーザーがMariaDB接続時に使用するパスワード
続きはその2で。