注意(2020/05/20追記)
現在、iroha board最新バージョンは 10.4
ですが、本記事は 10.2
に対応したインストール方法です。10.3
よりインストール方法に変更がありました。ご注意ください。
はじめに
MoodleやCanvasLMS、Sakaiといったe-ラーニング(LMS)システムが世の中にはいくつかありますが、これらは機能が多いものの大規模であり、たとえば社内の1部所だけで必要な教材を管理したい場合にはランニングコストや管理コストの面で不適となるでしょう。
そこで今回は国産軽量LMSのiroha boardを紹介すると共に、その構築までを記事にまとめます。
また、現在記事として上がっているiroha boardの環境はCentOS上で作られているものが多く、Ubuntu環境のものがあまりなかったこともモチベーションになっております。
この記事の環境
Ubuntu 18.04
必要なパッケージをインストールする
この記事ではApacheからPHPを呼びます。なお、irohaboardのRDBはMySQLのみ対応しているみたいです。
# パッケージレポジトリの更新
sudo apt-get update
# PHP、Git、MySQL、curlをインストール
sudo apt-get install -y php php-mbstring php-mysql apache2 git mysql-server mysql-client curl
ソースコードのインストール
つぎにcakephp本体と、irohaboardの本体を/var/www/cake
と/var/www/html
に配置します。この階層関係以外の場合ではwebroot/index.phpの編集が必要になるようです。
# ソースコードのダウンロード
curl -o /tmp/cakephp.tar.gz https://codeload.github.com/cakephp/cakephp/tar.gz/2.10.19
curl -o /tmp/irohaboard.tar.gz https://codeload.github.com/irohasoft/irohaboard/tar.gz/v0.10.2
# cakeを配置するフォルダの作成
mkdir /var/www/cake
# ファイルの展開
tar xvzf /tmp/cakephp.tar.gz -C /var/www/cake --strip-components=1
tar xvzf /tmp/irohaboard.tar.gz -C /var/www/html --strip-components=1
# アーカイブファイルの削除
rm -f /tmp/cakephp.tar.gz /tmp/irohaboard.tar.gz
apacheを設定する
apacheはウェブサーバーで、外部からのhttpリクエストに反応してphpを実行させることができます。
Ubuntuの環境ではapacheの設定ファイルは/etc/apache2/
以下に分割されています。
今回はこのフォルダの中の主な設定ファイルである/etc/apache2/apache2.conf
をファイルを編集し、/var/www/html
への設定を行います。
デフォルトでは159行目あたりにある、以下の内容を後述する内容に書き換えます。
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
この内容に追記して、下記のように変えます。
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ディレクトリーに/var/www/html
が指定されていて、AllowOverride All
が設定されていることを確認してください。
その後、以下の操作を行います。
# apache自身のユーザーであるwww-dataにファイルの所有権を与える
sudo chown -R www-data:www-data /var/www/html /var/www/cake
a2enmod rewrite && a2enmod headers # apacheのrewriteモジュールとheadersモジュールを有効化する
設定しおえたら、以下のコマンドでapacheを起動しましょう。
service apache2 start # apacheサービスを起動する
MySQLを設定する
irohaboardはMySQLに依存していますので、次はその設定を行います。
以下のコマンドでDBやユーザーの設定を行いましょう。ユーザー名やパスワードの設定はお好みで。後ほどMySQLへの接続の際にこれらの情報を用いるのでどっかに控えてください。
# irohaboardという名前のDBをutf8の文字設定で作る
mysql -uroot -e 'CREATE DATABASE irohaboard CHARACTER SET utf8;'
# irohapassというパスワードのirohaadminというユーザーをlocalhostに作る
mysql -uroot -e "CREATE USER 'irohaadmin'@'localhost' IDENTIFIED BY 'irohapass';"
# 管理者権限を与えて反映させる
mysql -uroot -e "GRANT ALL PRIVILEGES ON *.* TO 'irohaadmin'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;"
database.phpを設定する
/var/www/html/Config/database.php
に上の項目で設定したホスト名、DB名、ユーザー名などをここで登録することで、irohaboardがMySQLに接続できるようになります。
localhostのMySQLの場合はSocket通信を行うので、unix_socket
という設定項目が必要になります。
これはsocketのパスを設定する項目で、デフォルトだと/var/run/mysqld/mysqld.sock
になります。
<?php
class DATABASE_CONFIG {
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => true,
'host' => 'localhost',
'unix_socket' => '/var/run/mysqld/mysqld.sock',
'login' => 'irohaadmin',
'password' => 'irohapass',
'database' => 'irohaboard',
'prefix' => 'ib_',
'encoding' => 'utf8'
);
}
irohaboardへのアクセスとインストール
これまでの設定を終えた後、http://localhost/installへアクセスすると、irohaboardのインストール画面が出てきますので、画面の指示に従って入力してください!
デバッグ情報
何かエラーが起こった場合、より詳細な情報をみたくなることがあるかと思います。その際は、apacheのエラーなのか、cakephpのエラーなのかで参照するファイルが変わってきます。
- apacheのエラーログは
/var/log/apache2
- cakeのエラーログは
/var/www/html/tmp/logs
にあるので、エラったときには参照すると良いでしょう。
おまけ
上記の環境をherokuにデプロイするべく、Docker上のUbuntuで構築しました。
また、レポジトリに apache2.conf
と database.php
を含めたものを公開しておりますので、参考にされてください。
herokuへのデプロイ用のレポジトリ
Dockerfile
は下記になります。
# herokuにデプロイする用のイメージ
FROM heroku/heroku:18
# mysqlインストール時に対話が発生しインストールが止まってしまう場合への処理
ENV DEBIAN_FRONTEND=noninteractive
# install php and some extensions
RUN apt-get update && apt-get install -y php php-mbstring php-mysql apache2 git mysql-client
# debug用のエディタ microコマンドで起動
# RUN cd /usr/bin && curl https://getmic.ro | bash
# ソースコードのインストール
RUN curl -o /tmp/cakephp.tar.gz https://codeload.github.com/cakephp/cakephp/tar.gz/2.10.19
RUN curl -o /tmp/irohaboard.tar.gz https://codeload.github.com/irohasoft/irohaboard/tar.gz/v0.10.2
RUN mkdir /var/www/cake
RUN tar xvzf /tmp/cakephp.tar.gz -C /var/www/cake --strip-components=1
RUN tar xvzf /tmp/irohaboard.tar.gz -C /var/www/html --strip-components=1
RUN rm -f /tmp/cakephp.tar.gz /tmp/irohaboard.tar.gz
# apache2とdatabaseの設定をコピーする
COPY apache2.conf /etc/apache2/apache2.conf
COPY database.php /var/www/html/Config/database.php
RUN chown -R www-data:www-data /var/www/html /var/www/cake
RUN a2enmod rewrite && a2enmod headers
# For heroku container debugging
# heroku上のコンテナにbashで入る為に必要
ADD ./.profile.d /app/.profile.d
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
# 起動しつづけるようにFOREGROUNDで実行する必要がある
# また、heroku環境だとポートが動的に割り振られるので、80番をハードコードすると「同じポートは開けないよ」というエラーがでる
CMD sed -i "s/80/$PORT/g" /etc/apache2/sites-enabled/000-default.conf /etc/apache2/ports.conf && apachectl -D FOREGROUND
さいごに
この記事は以上になります。追加で、herokuへのデプロイ編を予定しておりますが、そちらは未定です。
何かわかりにくいところや間違えているところがありましたらコメントください。
参考リンク
ほしい物リスト
もしこの記事が役に立ったのであれば、本や食料を買っていただけるととても嬉しいです。
https://www.amazon.jp/hz/wishlist/ls/1P644LOPKXCLP?ref_=wl_share