前提条件として、
https://mizunolab.sist.ac.jp/2020/04/centos7lamp.html
の内容が設定済みとします。
OS : CentOS7.7
PHP : PHP7.3
MySQL : 5.7
今回はrootにて、ドキュメントルート /var/www/html に設定します。
プロジェクト名は「mzn」とします。
[説明動画]
(1) composerのインストール
[root@localhost ~]# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
[root@localhost ~]# php composer-setup.php
[root@localhost ~]# php -r "unlink('composer-setup.php');"
composerをどこでも使えるようにします。
[root@localhost ~]# mv composer.phar /usr/local/bin/composer
[root@localhost ~]# composer self-update
[root@localhost ~]# mv composer.phar /usr/local/bin/composer
[root@localhost ~]# composer self-update
(2) PHPモジュール「intl」のインストール
cakephpに必要なintlをインストールします。
[root@localhost ~]# yum install php73-php-intl.x86_64
intl.soの場所を確認
[root@localhost ~]# find / -name 'intl.so'
このパスを書き込みます。
httpdを再起動して設定を反映させます。
[root@localhost ~]# systemctl restart httpd
(3) cakephpプロジェクト作成
/var/www/htmlにcakephpプロジェクト「mzn」を作成します
[root@localhost html]# composer self-update && composer create-project --prefer-dist cakephp/app:4.* mzn
プロジェクトにアクセスしてみます。
http://IPアドレス/mzn/
この表示が少しおかしくなっています。これは/var/www/html/でやっていることでAllowOverride設定をする必要があります。
[root@localhost html]# vi /etc/httpd/conf/httpd.conf[root@localhost html]# systemctl restart httpd
もう一度、アクセスしてみると表示が修正されています。
(4)データベースとの連携
今回はMySQL(phpMyAdmin)で次のデータベースを作っておきます。
[データベース情報]
ユーザ: root
パスワード: rootのパスワード
データベース名:mzn (今回はテーブルは未作成)
# cd /var/www/html/mzn
[root@localhost mzn]# vi config/app_local.php
'username' => 'root',
'password' => 'CentOS7@',
'database' => 'mzn',
'username' => 'root',
'password' => 'CentOS7@',
'database' => 'mzn',
この3つを編集します。
保存して、もう一度アクセスすると、データベースが接続されています。
(5) 簡単なサイトの作成
データベース「mzn」にテーブル「users」「classes」を作成します。
テーブル:users
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
テーブル:cars
CREATE TABLE IF NOT EXISTS `cars` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`user_id` int(11) NOT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
データベース「mzn」にテーブル「users」「classes」を作成します。
テーブル:users
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
テーブル:cars
CREATE TABLE IF NOT EXISTS `cars` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`user_id` int(11) NOT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
次にbakeをしていきます。まずcakeコマンドに実行権限を与えます。
[root@localhost mzn]# chmod +x bin/cake
usersのモデルを作成します。
[root@localhost mzn]# bin/cake bake model users
usersのコントローラを作成
[root@localhost mzn]# bin/cake bake controller users
usersのテンプレート(ビュー)を作成
[root@localhost mzn]# bin/cake bake template users
同様にcarsも作成しますが、model, controller, templateを一度に作成することも可能です。
[root@localhost mzn]# bin/cake bake all cars
動作確認のため、サイトにアクセスします。
http://IPアドレス/mzn/users
もし、パーミッションのワーニングが出た場合には
# chmod -R 777 tmp
を実行してください。
http://IPアドレス/mzn/cars
usersテーブルに登録してから、carsテーブルに登録します。