本日はjoomla!をインストールします。Joomlaは、ウェブサイトを作成・管理するためのオープンソースのコンテンツ管理システム(CMS)です。ユーザーがプログラミングスキルを持っていなくても、ウェブサイトのコンテンツを編集したり、デザインを調整したりできます。
OracleCloudのインスタンスにDockerを使用してインストールします。旧WappyのWADAXでもインストールできました。ですのでPleskでもインストールできることになります。こちらはファイルをダウンロードして、それを解凍してデータベースの設定をするだけで簡単に設置することができました。今回の記事はdockerを使用する設置の仕方を説明します。joomlaの公式イメージがあるので比較的容易に設置できます。
まずは簡単なコマンドで立ち上げます。コンテナの中を調査するためです。
docker run --name test -d joomla
しかし、起動しないのでログを確認します。
docker logs test
error: missing JOOMLA_DB_HOST and MYSQL_PORT_3306_TCP environment variables
Did you forget to –link some_mysql_container:mysql or set an external db
with -e JOOMLA_DB_HOST=hostname:port?
どうやらデータベース情報がないと立ち上がらないようです。コンテナを削除します。
docker rm test
データベース情報を追記してコマンドを入力します。
docker run \
--name test \
-e JOOMLA_DB_HOST=10.0.0.107:3306 \
-e JOOMLA_DB_NAME=joomla \
-e JOOMLA_DB_USER=mamushi \
-e JOOMLA_DB_PASSWORD=testpass \
-d joomla
この時、データベース情報が間違っているとコンテナが途中で停止します。どうやらデータベースに接続を試みているみたいです。コンテナが立ち上がったのでコンテナ内を調査します。
docker exec -ti test bash
ファイルやディレクトリの場所は下記のようになっていました。また、www-dataがドキュメントルートの所有者であることを覚えておきます。
/etc/apache2→webサーバーの設定ファイル
/usr/local/etc/php→PHP関連
/var/www/html→ドキュメントルート
コンテナからホストにこれらのファイルをコピーしてきます。コンテナに入らずにファイルを編集できるようにするためです。
docker cp test:/usr/local/etc/php /root/joo-php/
docker cp test:/etc/apache2 /root/joo-apache2/
docker cp test:/var/www/html /root/joomla/
ファイルをコピーしたことにより、ドキュメントルートの所有権がrootに変更になってしまったので修正します。
chown -R www-data:www-data /root/joomla
必要なファイルはホストに取り寄せたので、コンテナを停止して削除します。
docker stop test
docker rm test
ここまででjoomlaを運用できる準備が整いました。マウントするオプションも追加してコマンドを入力します。
docker run \
--name jcms \
-p 8881:80 \
-v /root/joo-php:/usr/local/etc/php \
-v /root/joo-apache2:/etc/apache2 \
-v /root/joomla:/var/www/html \
-e JOOMLA_DB_HOST=10.0.0.107:3306 \
-e JOOMLA_DB_NAME=joomla \
-e JOOMLA_DB_USER=mamushi \
-e JOOMLA_DB_PASSWORD=testpass \
-d joomla
ホスト側のポートのトラフィックを許可しておきます。
ufw allow 8881/tcp
ブラウザでアクセスします。
http://IPアドレス:8881/
日本語ファイルも管理画面でダウンロードしてインストールすることができる親切設計です。