Moodle環境構築 その1

Pocket

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ダウンロード
リンク先(公式サイト)からファイルをダウンロードします。

アクセス時の最新バージョンが記述されたボタンがあるので、押下。

e_01_install_1

上下に同じ「2.9.2」のバージョンがありますが、上は細かい修正を加えたバージョン。下が公式に発表している同バージョン。

どちらを選択するかは好みだと思いますが、Informationで修正入ってる方使ってね的な事が書いてあるので、今回は上の方を選択します。

Linuxなので「.tarz」のファイルをダウンロード。(Windowsの場合は.zipの方になります)
e_01_install_2

ファイル「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で。

広告

Pocket