インストール

目次

Ver. 3.x インストール方法

こちらでは a-blog cms Ver.3.x のインストール方法について紹介します。

1. サーバー環境

PHP 8.1.0 - 8.4.x & MySQL 5.x - 8.4 の動作するウェブサーバーをご用意ください。

旧バージョンである Ver. 2.11.x までであれば、PHP 5.3.3 - 7.4.x で動作させることができます。詳しくは 旧バージョンのインストール方法 をご覧ください。

簡単にテストで試してみたいという方については、無料で30日間のお試し可能な a-blog cms インストール済みのレンタルサーバーサービスとして ablogcms.io を提供しておりますので、そちらもご活用ください。



2.ダウンロード & アップロード

ダウンロードページより新規インストールパッケージをダウンロードください。

新規インストールパッケージ ダウンロード

ZIPファイルを解凍すると ablogcms フォルダがありますので、ablogcms フォルダ自身はアップロードぜずに、ablogcms フォルダの中のファイルのみをサーバーの指定場所にアップロードしてください。

ファイル数 7,000ファイル以上で 90MB以上のデータ量を FTP する際には時間がかかりますので、20KBほどの PHPファイル1つをアップロードするだけで、この 2. 3. 4. の工程を自動化する「簡単セットアップ」というプログラムが用意されていますので、こちらの利用もおすすめ致します。



omake フォルダには、build・snippets 等が用意されていますので、必要に応じてご活用ください。

CMSの設置場所について

一般的には、ドキュメントルートに設置することが通常ですが、ディレクトリの中に設置することも可能です。またインストール後に、他のディレクトリに移すことも可能です。その場合、ファイルを移動するだけで問題なく動作します。

3.パーミッションの設定

PHP の動作モードによって設定が異なります。

共用サーバー

共用サーバーをご利用の場合には、一般的には CGIモードで動作していることが多く、この場合にはパーミッションの変更をする必要はありません。もし、インストーラーの画面で「パーミッションの変更が必要」だとメッセージが表示されるようであれば「専用サーバー / VPS など」と同様の設定を行ってください。

専用サーバー / VPS など

専用サーバーや VPS のようなサーバーについては、モジュールモードで PHP が動作していることが多いですので、読み書き可能な権限を設定します。

  • config.server.php
  • archives
  • archives_rev
  • media
  • storage
  • cache
  • themes

パーミッションの設定については、サーバーのセキュリティに関わることになりますので、分かる方が自己責任で対応ください。

4.ファイル名の変更

アップロードしたファイルの中に htaccess.txt というファイルが、いくつかあります。このファイルを .htaccess というファイル名に変更してください。

  • htaccess.txt
  • archives/htaccess.txt
  • archives_rev/htaccess.txt
  • media/htaccess.txt
  • storage/htaccss.txt
  • cache/htaccess.txt
  • private/htaccess.txt
  • themes/htaccess.txt

また、htaccess.txt 以外に、以下の 3つのファイルも同様にドットをファイル名の前につけて、.txt を消してください。

  • editorconfig.txt
  • env.txt
  • gitignore.txt

FTPソフトによっては、ドットで始まるファイルは初期設定では表示させないこともありますので、名前を変更した時点で見えなくなってしまうことがあります。

5.セットアップの開始

Webブラウザから、各ファイルをアップロードした URL にアクセスします。 最初に利用規約のページが表示されますので、ご利用規約をよくお読みのうえ、[同意してインストールを続ける]を押してください。


インストール画面が表示されます。事前準備を確認し必要な作業・情報確認をおこなってください。



セットアップページのメッセージに従って、セットアップを進めます。

5-1. 動作環境のチェック

3 4 の作業が完了しているかのチェックが行われます。



5-2. ドメインの設定

一般的には、インストール環境から自動的にドメインが編集されます。



5-3. データベースの設定

データベースの情報を設定します。以下情報を環境に合わせて設定ください。


項目名 説明 デフォルト値
データベースサーバー名 MySQLサーバーのホストを指定ください。ポートが3306では無い場合「hostname:port」のようにポート番号を指定することができます。
データベース名 MySQLのデータベース名を指定ください。
データベースユーザー名 MySQLのユーザー名を指定ください。
データベースパスワード MySQLのパスワードを指定ください。
テーブル先頭文字列 作成されるテーブルの先頭文字(接頭辞)になります。必要がなければ変更する必要はありません。 acms_
データベース文字コード データベースの文字コードを設定します。必要がなければ変更する必要はありません。(utf8mb4だと絵文字が利用可能になります) utf8mb4
データベース照合順序 データベースの照合順序を設定します。詳しくは以下を参照ください。 utf8mb4_general_ci

照合順序について

照合順序は文字を並び替えや比較・検索するときのルールになります。 大文字と小文字の区別や、文字の並び順を指定します。

例えば「utf8(mb4)_general_ci」は、アルファベットの大文字小文字は区別しませんが他は全て区別します。「utf8(mb4)_unicode_ci」は、大文字小文字/全角半角を区別しないようになります。

これにより、検索などで「utf8(mb4)_unicode_ci」を使用すると、曖昧な検索ができるようになります。

比較表 区別する場合は「×」、区別せず同じ扱いになるのが「○」になります。


照合順序 A、a はは、ぱぱ はは、ハハ びょういん、びよういん ?、? +、+
utf8mb4_unicode_ci
utf8mb4_general_ci × × × ×
utf8mb4_0900_ai_ci ×
utf8mb4_0900_as_ci × ×
utf8mb4_ja_0900_as_cs × × × ×
utf8mb4_ja_0900_as_cs_ks × × × × ×


5-4. テーブルの作成

データベースの接続情報が正しければ、テーブルが作成されます。


5-5. ブログとユーザーの設定

初心者の方は「beginner テーマ」を、多くの機能を試したい方は「siteテーマ」、モダンな開発環境でスタートしたい方は「developテーマ」を選択されることをおすすめします。



6.セットアップの終了

セットアップを最後まで進め、「セットアップ完了」というメッセージが表示されたら、setup ディレクトリの名前を変更する事で全てインストール作業が完了となります。

以下の画面で(移動)ボタンをクリックすれば、自動で setup ディレクトリがリネームされます。



setup ディレクトリーを変更するまで他のページにはアクセスすることができません。 インストールが完了すると setup ディレクトリーはメンテナンス用のログイン画面に役割が変わります。



これで a-blog cms のインストールが完了しました。サイトにアクセスし、表示できることを確認しましょう。

管理ページにアクセスする際には URL の後に /login をつけてアクセスしてください。


パーミッション


a-blog cms を動かすときのファイル・ディレクトリのパーミッションと所有権(owner / group)をまとめます。インストール時の権限エラー、メディアのアップロード失敗、オンラインアップデートの中断は、たいてい owner かパーミッションが原因で発生します。まずはここを確認してください。

基本は一律でこのパーミッション

ファイル・ディレクトリは、原則として全体を次の値にしておけば問題ありません。インストール・運用・アップデートで必要なパーミッションが変わることはなく、この一律の設定で足ります。

対象

単一ユーザー環境

共有グループ環境

ディレクトリ

755

775

ファイル

644

664

775 / 664 は、FTP ユーザーと PHP 実行ユーザーが別で、同一グループにまとめて運用する環境向けです。mod_php で PHP が www-data などの共通ユーザーで動くケースがこれにあたります。suEXEC や PHP-FPM のユーザー別プールのように、PHP がサイト所有者のアカウントで動くなら 755 / 644 で足ります。

パーミッションの数字よりも、owner と group が揃っているかのほうが効いてきます。owner が揃っていないと、パーミッションが正しくても書き込みや置換に失敗します。

本番で 777 にすると誰でも書き換えられるため、セキュリティ上避けてください。

なお archives/ media/ storage/ cache/ private/ は CMS が書き込みを行うディレクトリです。とはいえパーミッションは上の一律設定のままでよく、owner が PHP 実行ユーザーと合っていることが重要です。

PHP がどの OS ユーザーで動くか

推奨パーミッションが分かれる理由は、SAPI の種類ではなく PHP プロセスの実効 UID にあります。

SAPI / 構成

実行ユーザー

推奨パーミッション

mod_php(Apache DSO)

Web サーバ共通ユーザー(www-data 等)

775 / 664

CGI + suEXEC / suPHP

サイト所有者アカウント

755 / 644

PHP-FPM(ユーザー別プール)

サイト所有者アカウント

755 / 644

PHP-FPM(共通プール)

プールの共通ユーザー

775 / 664

SAPI 名から推測せず、実機で確認したほうが確実です。

<?php
echo posix_getpwuid(posix_geteuid())['name'], PHP_EOL; // 実効ユーザー名
echo php_sapi_name(), PHP_EOL;                          // fpm-fcgi, apache2handler 等
// posix 拡張が無ければ exec('whoami')

CMS が生成するファイルのパーミッション

アップロードやキャッシュ生成では、CMS 自身もファイル・ディレクトリを作成します。そのパーミッションは config.server.php の 定数で決まります。

定数

既定値

用途

CHMOD_DIR

(0775 & ~umask())

CMS が作るディレクトリ

CHMOD_FILE

(0664 & ~umask())

CMS が作るファイル

既定はグループ書き込みあり(775 / 664 相当)が前提なので、上の一律設定と整合します。& ~umask() が掛かるため、実効パーミッションは PHP プロセスの umask 次第になります。意図したパーミッションにならないときは、 umask を確認してください。


所有権が重要

パーミッションよりも owner / group の一致のほうが、重要です。

いちばん堅いのは、CMS ファイル一式の owner を PHP 実行ユーザーに統一する方法です。これなら 755 / 644 で足ります。PHP 実行ユーザーと FTP ユーザーが別であれば、両者を同一グループに入れて group write(775 / 664)を付けてください。

よくある失敗が、FTP で上げたファイル(FTP ユーザー owner)と CMS が作ったファイル(PHP 実行ユーザー owner)が混ざり、ファイルごとに owner がばらばらになった状態です。これだとアップロードやアップデートで書き込みできなくなります。FTPでファイルを差し替えたら、owner とパーミッションを直してから運用・再アップデートしてください。直さずに再実行すると、同じ箇所で止まります。

POSIX 判定の順序に注意

POSIX のアクセス判定は owner → group → other の順で、最初に一致したクラスのビットだけを使います。後ろのクラスがいくら緩くても評価されません。

たとえばパーミッション 604rw- --- r--、group ビットが 0)の場合は、次のようになります。

  • owner なら read / write できます

  • PHP 実行ユーザーが当該ファイルの group に属していると、group ビット --- で確定し、other に read があっても EACCES になります

  • owner でも group でもない(other)なら read だけです

「other に read を付けたから大丈夫」のつもりでも、group が一致すると先に弾かれます。604 のような group ビットだけ 0 のパーミッションは避けてください。


困ったとき

オンラインアップデートで「書き込み権限がありません」と出て進まない。

アップデートはファイルを置換する前に、置換対象(php/ js/ themes/system/ など)とバックアップ先が書き込み可能かを事前チェックします。多くの権限問題はここで止まり、対象パスがメッセージに出ます。出ているパスの owner とパーミッションを直してからアップデートを再実行してください。

オンラインアップデートが途中で止まり、php/themes/system/ が消えた。

置換は旧ファイルを private/backup{YmdHis}/ に退避してから新ファイルを設置します。途中で失敗しても、通常は退避物から自動でロールバックされるため、消えたままにはなりません。問題になるのはロールバックできなかったときで、タイムアウトやメモリ不足でプロセスごと落ちると例外を捕捉できずロールバックが走りません(ロールバック自身も書き込めなければ途中で止まります)。その結果、退避物が private/backup{YmdHis}/ に残ったまま元の場所が空に見えます。退避物を確認し、owner とパーミッションを直してから戻してください。

メディアのアップロードや生成で 書き込みエラー。

archives/ media/ storage/ cache/ のどれかに、PHP 実行ユーザーから書き込みできていません。owner とパーミッションを確認してください。ディレクトリは実行権限も必要です。中のファイルへ辿るのに必要で、欠けていると読み取り・書き込み以前にアクセスできません。

パーミッションは正しいのに動かない。

表示上のパーミッションが合っていても、次の理由で 書き込みできないことがあります。

  • umask — CMS が新規生成するファイル/ディレクトリの権限は (0775 & ~umask()) のように umask がデフォルトで適用されます。手で設定した値が正しくても、CMS が作るファイルだけ 書き込みできないなど、実効値が意図とずれることがあります。

  • owner の不一致 — group / other に 書き込み権限を振っていない構成では、書けるのは owner だけです。親ディレクトリやファイルが別ユーザー所有だと、PHP 実行ユーザーが 書き込みできず rename や上書きに失敗します。chmod もファイル所有者しかできません。パーミッションの数字には owner が現れないので見落としがちです。

  • open_basedir — PHP がアクセスできるパスを制限する設定です。OS のパーミッションが正しくても、範囲外のパスは PHP から触れません。

  • SELinux / AppArmor — OS の通常パーミッションとは別の強制アクセス制御(MAC)レイヤーです。chmod / chown が正しくても、ポリシー側で拒否されることがあります。


コマンド例

実行前にバックアップを取り、<user> <group> は実環境の PHP 実行ユーザー/グループに置き換えてください。owner 変更には root 権限が必要で、共有ホスティングではホスティング側の対応が要る場合があります。

# owner を PHP 実行ユーザーに統一
chown -R <user>:<group> .

# 単一ユーザー環境: ディレクトリ 755 / ファイル 644
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

# 共有グループ環境: ディレクトリ 775 / ファイル 664
find . -type d -exec chmod 775 {} \;
find . -type f -exec chmod 664 {} \;