目的
・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
(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 ファイルの内容(抜粋)
・編集後、Apache2 を再起動させ状態を確認
$ systemctl restart apache2
$ systemctl status apache2
(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
・テスト用ユーザ作成
▼テストユーザ設定情報
項目 | 設定 |
---|---|
ユーザ名 | 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;
設定されている文字コード確認
> SHOW VARIABLES LIKE "chara%";
・文字コードをUTF-8に統一
文字コードを修正
$ sudo nano /etc/mysql/my.cnf
下記をmy.cnfに追記
[mysqld]
character-set-server=utf8
mysql再起動&状態確認
$ systemctl restart mysql
$ systemctl status mysql
mysqlにログインし文字コードを確認
> SHOW VARIABLES LIKE "chara%";
CakePHP用のテストDB作成
> CREATE DATABASE testcake;
(4)CakePHPインストール
必要なパッケージがインストールされているか確認
$ php -m | grep -e mbstring -e SimpleXML -e intl
▼実行結果(intl がインストールされていないことが判明)
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
▼実行途中でこんなこと聞かれます
※ひとまず「y」でEnter
/var/www/html/testcake/config/app.phpを編集
$ sudo nano /var/www/html/testcake/config/app.php
以上!
蛇足
最後の Database の接続部分で少しハマりました。事前にMySQL上で用意した test ユーザに CakePHP 側からアクセスできないという問題でした。対策として 一旦 test ユーザを削除して、改めて作り直し、test ユーザでログイン可能かテストをした上で再度 CakePHP に設定したというような次第です。
あと、途中 CakePHP のインストールの説明にあった mod_rewrite の部分でもハマりました。こちらも、事前にしっかり設定していれば問題は起きないのですが、抜けると思わぬエラーに見舞われます。ご注意を!
References
サイト:
『mysqlへログインできない問題』
『Server World』
書籍:
『PHPフレームワーク CakePHP 3入門』(著)掌田 津耶乃