普段はブログを作るときに WordPress を使っていますが、ablog cms に触れる機会があったのでまとめておきます。
公式サイト:http://ablogcms.org/
ablog cms は国産の CMS ということもあり、日本語リファレンスが読みやすいです。ただ php などのプログラミング言語を書くことができず独自の記法を学ぶ必要があるため、最初が大変かもしれません。
既存 ablog からのエクスポート/インポート
エクスポート
DBはsetup/index.php
にアクセスすることでエクスポート画面 に進むことができます。ただ、setup/
ディレクトリはリネームされているはずなので、import.php 、export.php などが置いてあるディレクトリを探して、その中の index.php にアクセスします。
DBを直接ダンプしてもいいですが、ablog のインポート機能を使うとパスなどを置換してくれるっぽいのでこちらからやったほうが良さそうです。ちなみに僕はうまくいかなかったので DB を直接ダンプしました。
セキュリティ上、普通はリネームではなくディレクトリごと削除することが推奨されています。
インポート
後述するローカル環境構築後、同じように setup/index.php にアクセスし、エクスポートファイルをインポートします。
ローカル開発環境の構築
Docker を使うのが楽なので、まずは docker-compose をインストールします。その後で、ルートディレクトリの一つ上の階層にdocker-compose.yml
を作成します。
docker-compose.yml
こちらのサイト(https://h2ham.net/a-blog-cms-docker/)が参考になります。基本的にはこちらと同じことを書いているので、このサイトを見た方がわかりやすいと思います。
version: '2'
# service
services:
# mysql
mysql:
image: mysql:5.7
ports:
- "3306:3306"
volumes:
- ./db/mysql_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
# proxy
proxy:
image: jwilder/nginx-proxy:latest
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
ports:
- "8080:80"
# www
www:
image: atsu666/ioncube:5.5 # phpのバージョンにあったものを指定
privileged: true
volumes:
- ./www:/var/www/html # host, guest間のファイル同期
links:
- mysql:mysql
environment:
- VIRTUAL_HOST=acms.lab,www.acms.lab # host名を指定
- APACHE_DOCUMENT_ROOT=/var/www/html # ドキュメントルートを指定
- TZ=`ls -la /etc/localtime | cut -d/ -f8-9`
- port
8080:80
にしているのは、すでに 80 番を使っていてそちらに持って行かれてしまうので、あえて変更しています。普通なら80:80
で良いはずです。 image: atsu666/ioncube:5.5
は欲しいバージョンを指定します。こちらを参照して任意のバージョンを記述します。今回は php のバージョン 5.5 を使っています。
hosts
hosts ファイルを書き換えて振り分けを行います。
::1 acms.lab
127.0.0.1 acms.lab
::1 www.acms.lab
127.0.0.1 www.acms.lab
終わったら、ablog のサーバー側のファイルを用意します。
- 新規構築ならこちらからダウンロードします
- 既存の ablog があるなら、FTPか何かでサーバーに接続してファイルを落とします
落としてきたファイルはwww
ディレクトリに置いておきます。
最終的な構造
/
│- docker-compose.yml
│- www/
│ │- ablog のファイルなど
│- db/
ファイルの修正
これだけでは ablog のインストールができません。
www/
の中の .htaccess が .htaccess.txt という名前になっていないかどうか確認します。.txt がついていたら消しておきます。
起動
コマンドを実行して起動
docker-compose -d up
同じ設定なら、acms.lab:8080でアクセスできます。
テーマ
テーマディレクトリは/themes
になります。ここは WordPress と似てますね。
テーマ名@親テーマ名
という名前にすると、親テーマのファイルを引き継ぐことができるthemes/テーマ名/admin/
で管理画面を拡張できる
WordPress との違い
ざっくりですが、ablog CMS は
- PHP などのバックエンド言語は使えない
- 「投稿タイプ」のような概念はなく「カテゴリー」を投稿タイプの代わりに使う
- テンプレート側でクエリを投げて記事を呼び出すのではなく、管理画面でクエリを設定するような感じ(モジュールID)
モジュールID の概念で少し戸惑いましたが、慣れると管理画面でぽちぽちするだけで欲しい記事を取得することができます。
テンプレートの分割
ページで使う共通部分や、繰り返し出てくるものはコンポーネント化しておきます。例えばテーマディレクトリで/include/header.html
を作成したら、下記で読み込みます。
<!--#include file="/include/header.html" -->
次回は一覧ページの出力についてです。