設置方法
設置
必要な環境
- 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');