3
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

【環境構築】Ubuntu18.04にCakePHP3のテスト環境構築

目的

・CakePHP3の開発用テスト環境を構築する

環境

項目 内容
Host OS Windows10
仮想ツール VirtualBox 5.2.16
仮想 OS Ubuntu 18.04

前提

(1)Windows10上にVirtualBoxがインストール済み
(2)VirtualBox上にUbuntu18.04が設置済み

作業手順

(1)PHP、その他必要パッケージインストール
(2)Apacheインストール
(3)MySQLインストール
(4)CakePHPインストール

内容

(1)PHP、その他必要パッケージインストール

phpとその他必要パッケージインストール
$ sudo apt -y install php php-cgi libapache2-mod-php php-common php-pear php-mbstring php7.2-mysql php-sqlite3 sqlite3
インストール後のPHPのVersion確認
$ php -v

▼実行結果
php_02.PNG

(2)Apacheインストール

apache2インストール
$ sudo apt -y install apache2
apache2設定ファイルを編集
$ sudo nano /etc/apache2/apache2.conf
追記内容
<Directory />
 ...
 #None から All へ変更
 AllowOverride All
</Directory>
...
<Directory /var/www>
 ...
 #None から All へ変更
 AllowOverride All
</Directory>

▼編集時の apache2.conf ファイルの内容(抜粋)
apache_02.PNG

・編集後、Apache2 を再起動させ状態を確認

$ systemctl restart apache2
$ systemctl status apache2

▼実行結果の画面(成功した場合)
apache_04.PNG

(3)MySQLインストール

mysqlパッケージインストール
$ sudo apt -y install mysql-server mysql-client
mysqlセットアップ
$ sudo mysql_secure_installation

▼セットアップ実行時の問いに対する回答例(今回の設定)

質問 回答
Press y|Y for Yes, any other key for No: [Enter]
New password: password1
Re-enter new password: password1
Remove anonymous users? y
Disallow root login remotely? y
Remove test database and access to it? y
Reload privilege tables now? y
設定完了後にmysqlにログインテスト
$ sudo mysql -u root -p
Enter password: password1

▼ログイン成功時
mysql_03.PNG

・テスト用ユーザ作成

▼テストユーザ設定情報

項目 設定
ユーザ名 test
パスワード test0123
mysqlログイン
$ sudo mysql -u root -p
Enter password: password1
ユーザ作成&権限付与
> CREATE USER 'test'@'localhost' IDENTIFIED BY 'test0123';
> GRANT ALL ON *.* TO 'test'@'localhost';
ユーザテーブル確認
> SELECT user,host FROM mysql.user;

▼実行結果(最下部にテストユーザが追加されている)
mysql_04.PNG

設定されている文字コード確認
> SHOW VARIABLES LIKE "chara%";

▼実行結果
mysql_05.PNG

・文字コードをUTF-8に統一

文字コードを修正
$ sudo nano /etc/mysql/my.cnf
下記をmy.cnfに追記
[mysqld]
character-set-server=utf8

▼編集画面
mysql_06.PNG

mysql再起動&状態確認
$ systemctl restart mysql
$ systemctl status mysql

▼実行画面
mysql_07.PNG

mysqlにログインし文字コードを確認
> SHOW VARIABLES LIKE "chara%";

▼実行結果(latin1 が utf8 に変更されている)
mysql_08.PNG

CakePHP用のテストDB作成
> CREATE DATABASE testcake;

▼実行結果
mysql_09.PNG

(4)CakePHPインストール

必要なパッケージがインストールされているか確認
$ php -m | grep -e mbstring -e SimpleXML -e intl

▼実行結果(intl がインストールされていないことが判明)
cakephp_01.PNG

intlパッケージインストール
$ sudo apt -y install php-intl
composerをインストール
$ sudo apt -y install composer
mod_rewriteの設定を有効にする※重要
$ sudo a2enmod rewrite
$ systemctl restart apache2
CakePHPのプロジェクト(testcake)を作成
$ cd /var/www/html
$ sudo composer create-project --prefer-dist cakephp/app ./testcake

▼実行途中でこんなこと聞かれます
cakephp_03.PNG
※ひとまず「y」でEnter

▼処理完了後、フォルダ一覧表示
cakephp_04.PNG
※無事設定完了!

▼ブラウザからアクセス(下記が表示されれば成功)
cakephp_05.PNG

▼Database の箇所でエラーが表示される
cakephp_06.PNG

/var/www/html/testcake/config/app.phpを編集
$ sudo nano /var/www/html/testcake/config/app.php

▼Datasources の内容を下記に変更
cakephp_08.PNG

▼再度ブラウザからアクセス(Database を確認)
cakephp_09.PNG

以上!

蛇足

 最後の Database の接続部分で少しハマりました。事前にMySQL上で用意した test ユーザに CakePHP 側からアクセスできないという問題でした。対策として 一旦 test ユーザを削除して、改めて作り直し、test ユーザでログイン可能かテストをした上で再度 CakePHP に設定したというような次第です。
 あと、途中 CakePHP のインストールの説明にあった mod_rewrite の部分でもハマりました。こちらも、事前にしっかり設定していれば問題は起きないのですが、抜けると思わぬエラーに見舞われます。ご注意を!

References

サイト:
mysqlへログインできない問題
Server World

書籍:
『PHPフレームワーク CakePHP 3入門』(著)掌田 津耶乃

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
3
Help us understand the problem. What are the problem?