設置方法

設置

必要な環境

  • PHP 8 以上
  • MariaDB 10 以上、もしくは MySQL 8 以上

データベースの作成

MariaDBもしくはMySQLでデータベースを作成しておく。
一例として、以下で作成する。

データベース名
freo2
文字コード
utf8mb4

このデータベースには、以下の情報で接続できるものとする。

接続先
localhost
ユーザー名
username
パスワード
password

プログラムの取得

https://github.com/refirio/freo2 からプログラムを取得し、プログラムを実行できる場所に配置する。
(一例だが「Code → Download ZIP」からZIPファイルをダウンロードして展開する。)
ここでは、公開フォルダ直下に index.php などのファイルを配置するものとする。

files 内の各ディレクトリのパーミッションを 0777 に設定する。
(プログラムから読み書きできるようにする。)

プログラムの設定

config.default.php を複製して config.php を作成し、設定を行う。
まずは設置URLの設定を行う。今回は https://example.net/ に設置するものとする。

define('APP_HTTP_URL', 'https://example.com');
↓
define('APP_HTTP_URL', 'https://example.net');

さらにデータベースの設定を行う。
データベースの情報は「データベースの作成」で準備したものを使用する。

define('DATABASE_HOST', '');
define('DATABASE_PORT', '');
define('DATABASE_USERNAME', '');
define('DATABASE_PASSWORD', '');
define('DATABASE_NAME', '');
↓
define('DATABASE_HOST', 'localhost');
define('DATABASE_PORT', '');
define('DATABASE_USERNAME', 'username');
define('DATABASE_PASSWORD', 'password');
define('DATABASE_NAME', 'freo2');

セットアップ

以下にアクセスし、「levis: PHP Framework」という画面が表示されることを確認する。
なお管理者以外の者がこのページにアクセスするのはセキュリティ上の問題がある。
後述の「セキュリティ設定」にあるとおり、必ずアクセス制限を行う。

https://example.net/?_mode=info_levis

「Menu」の「migrate」リンクをクリックし、ページ下部の「status」がすべて「success」になっていることを確認する。

初期設定

以下にアクセスし、トップページが表示されることを確認する。

https://example.net/

メニューの「ログイン」リンクをクリックし、認証画面が表示されることを確認する。
以下の情報でログインし、ダッシュボードが表示されることを確認する。

ユーザー名
admin
パスワード
abcd1234

画面右上の「管理者さん」から「ユーザー情報編集」をクリックし、必要に応じて各種情報を更新する。
登録完了すると、ダッシュボード画面に戻ってくる。
画面左のメニューから「設定」をクリックする。さらに「基本設定」をクリックし、必要に応じて各種情報を更新する。

セキュリティ設定

※公開サーバーに設置する場合、必ず設定すること。

config.php で以下のように設定する。
「任意のパスワード」は、半角英数字で任意のパスワードを設定する。

define('DEBUG_PASSWORD', '');
↓
define('DEBUG_PASSWORD', '任意のパスワード');

これで、以下のページにアクセスする際にパスワードが必要になる。
https://example.net/?_mode=info_levis

動作確認

最低限、以下の動作を確認する。

  • 管理画面でデータを登録できるか
  • お問い合わせからメールを送信できるか

バージョンアップ

  • ファイルの差分を配置する
  • 以下にアクセスしてデータベースの更新を行う。(更新が必要なら実行される。)
    https://example.net/?_mode=db_migrate

補足

プログラムを公開ディレクトリ外に配置する

「プログラムの取得」までは同じように進める。
以下のようにファイルを配置する。つまり公開ディレクトリと同じ階層に levis ディレクトリを作成し、config.default.php・app・libs・migrate・plugins・test をその中に移す。

home /
  |
  +-- html / index.php
  |     |    .htaccess
  |     |
  |     +-- css /
  |     |
  |     +-- files /
  |     |
  |     +-- img /
  |     |
  |     +-- js /
  |     |
  |     +-- scenario /
  |
  +-- levis / config.default.php
        |
        +-- app /
        |
        +-- libs /
        |
        +-- migrate /
        |
        +-- plugins /
        |
        +-- test /

.gitignore と README.md は無くても動作に支障は無い。
html/index.php を以下のように修正する。(index.php から見た config.php へのパス。)

require_once 'config.php';
↓
require_once '../levis/config.php';

さらに levis/config.default.php を複製して levis/config.php を作成し、以下のとおりパスの設定を行う。

define('MAIN_LIBRARY_PATH', '');
define('MAIN_APPLICATION_PATH', '');
define('DATABASE_MIGRATE_PATH', 'migrate/');
define('DATABASE_SCAFFOLD_PATH', 'scaffold/');
define('DATABASE_BACKUP_PATH', 'backup/');
define('PAGE_PATH', 'page/');
define('TEST_PATH', 'test/');
define('LOGGING_PATH', 'log/');
↓
define('MAIN_LIBRARY_PATH', '../levis/');
define('MAIN_APPLICATION_PATH', '../levis/');
define('DATABASE_MIGRATE_PATH', '../levis/migrate/');
define('DATABASE_SCAFFOLD_PATH', '../levis/scaffold/');
define('DATABASE_BACKUP_PATH', '../levis/backup/');
define('PAGE_PATH', '../levis/page/');
define('TEST_PATH', '../levis/test/');
define('LOGGING_PATH', '../levis/log/');

以降は「プログラムの設定」と同様に、データベースの設定を行う。

プログラムをサブディレクトリに設置する

公開ディレクトリ直下に freo2 というディレクトリを作成し、その中に設置するものとする。
config.php で以下のように設定する。

define('APP_HTTP_URL', 'http://example.net');
define('APP_HTTP_PATH', '/freo2/');
define('APP_STORAGE_TYPE', 'file');
define('APP_STORAGE_URL', APP_HTTP_URL . '/freo2/');

アップロードファイルの保存先にS3を使用する

あらかじめ、AWSコンソールなどからS3バケットを作成しておく。

import('libs/vendor/autoload.php'); で参照できるように、AWS SDKを配置しておく。
(AWS SDKは、あらかじめ「composer require aws/aws-sdk-php」などでインストールしておく。)

必要な権限が与えられたアクセスキーを発行しておく。
ここでは、以下の情報が用意できているものとする。

アクセスキー
XXXXXXXXXX
シークレットアクセスキー
YYYYYYYYYY
S3バケット名
ZZZZZZZZZZ

この場合、config.php で以下のように設定する。

define('APP_STORAGE_TYPE', 'file');
define('APP_STORAGE_URL', APP_HTTP_URL . '/');
↓
define('APP_STORAGE_TYPE', 's3');
define('APP_STORAGE_URL', APP_HTTP_URL . '/');
define('APP_AWS_CREDENTIAL_KEY', 'XXXXXXXXXX');
define('APP_AWS_CREDENTIAL_SECRET', 'YYYYYYYYYY');
define('APP_AWS_REGION', 'ap-northeast-1');
define('APP_AWS_VERSION', 'latest');
define('APP_AWS_BUCKET', 'ZZZZZZZZZZ');