2020年4月29日水曜日

Cakephp4の設定

以下の環境にCakephp4を設定していきます。
前提条件として、
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

(2) PHPモジュール「intl」のインストール
cakephpに必要なintlをインストールします。
[root@localhost ~]# yum install php73-php-intl.x86_64
intl.soの場所を確認
[root@localhost ~]# find / -name 'intl.so'
このパスを書き込みます。
[root@localhost ~]# vi /etc/php.ini
extension=/opt/remi/php73/root/usr/lib64/php/modules/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',
この3つを編集します。


保存して、もう一度アクセスすると、データベースが接続されています。

次に、パーミッションの設定をしておきます。
[root@localhost mzn]# chmod -R 777 tmp
(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;

次に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テーブルに登録します。
次にcarsテーブルに登録します。
これで基本的な形ができました。以上です。

0 件のコメント:

コメントを投稿