最初にすること
私はVagrant+virtual box環境にCakephp3をインストールしました。
なのでここではその前提で話を進めていきます。
必要なPHPのパッケージをインストール
まず必要なパッケージをインストールします。
$ sudo yum -y install php-intl php-mbstring php-xml
IUSレポジトリを使っている場合は以下のように書かないとインストールできません。その場合は以下のようにバージョンを指定してインストールします。
$ sudo yum -y install php71u-intl php71u-mbstring php71u-xml
必要なパッケージがインストールできたらApacheの再起動をします。
CentOS 7でのコマンドできたら共有フォルダに行きます。
$ sudo systemctl restart httpd.serviceCentOS 6でのコマンド
$ sudo service httpd restart
$ cd /vagrant
composerのインストール
composerをインストールします。インストールしたcomposerをさらにどこからでもコマンドとして使えるようにbinの中に入れます。
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
以下のコマンドを実行して画像のようなComposerが表示されれば成功です。
$ composer
「composer」コマンドを実行してこれが表示されればインストール成功です。
無事インストールできたら一応composerのバージョンを最新にします。
$ composer self-update
CakePHP3のインストール
cakephp3のインストールは次のようにcomposer経由でします。
$ composer create-project --prefer-dist cakephp/app cake
もしcomposerのインストールに失敗するなら以下のように管理者権限でインストールしましょう。管理者権限でcomposerのインストールは本来はあまり良くないです。
$ su
# composer create-project --prefer-dist cakephp/app cake
cakephp3のインストールが終わるとこういうふうに質問されます。
Created `config/app.php` file
Set Folder Permissions ? (Default to Y) [Y,n]?
これはフォルダのパーミッションをいい感じに書き換えてもいい?という質問です。特にフォルダのパーミッションにこだわりがなければyを入力・エンターで自動でパーミッションの設定をします。まずはビルトインサーバーを使用してcakephp3がちゃんと動いている確認します。
以下のコマンドで共有フォルダからcakeのフォルダに移動します。
$ cd /vagrant/cake
以下のコマンドでサーバーを動かします。-Hオプションはホストの指定をするオプションです。vagrant内で動かしホスト側のブラウザからアクセスしたい場合は0.0.0.0を指定します。。
$ bin/cake server -H 0.0.0.0
するとサーバーが動きます。
Welcome to CakePHP v3.4.9 Console
---------------------------------------------------------------
App : src
Path: /vagrant/cake/src/
DocumentRoot: /vagrant/cake/webroot
---------------------------------------------------------------
built-in server is running in http://0.0.0.0:8765/
You can exit with `CTRL-C`
Ctrl + cでビルトインサーバーを終了します。
もしvagrantのプライベートネットワークを使っている場合、ipは192.168.33.10なはずです。その場合、http://192.168.33.10:8765/とポート指定したURLを使ってホストのブラウザからcakephp3のindexにアクセスします。
私の場合はパブリックネットワークを使っているので、URLはこんな感じです。→ http://192.168.11.100:8765/
(vagrantを使っていない場合、普通にhttp://localhost:8765/からアクセスできるはず)
すべて問題なくできている場合、以下のように表示されます。
うまく表示できました。
今度はApacheの設定を変えます。以下のコマンドでApacheの設定ファイルを編集します。
$ sudo vi /etc/httpd/conf/httpd.conf
vi (あるいはvim) の操作法
「a」を押すと編集モードになります。エスケープキー(esc)を押すと編集モードを終了、コマンドモードに戻ります。「?aaa」と入力すると「aaa」という文字列でそのファイルの中を検索し、最初のヒット内容に移動します。「n」を押すことで次のヒット内容に移動します。
何もせずにファイルを閉じるにはコマンドモードで「:q!」を入力します。編集内容を保存してファイルを閉じるには「:wq」を入力します。
さてApacheの設定ファイルを開き、.htaccess overrideが許可されていることを確認します。さらにAllowOverrideがAllになっていることを確認します。Requireはデフォルトでall grantedだったのでそのままにしました。
<Directory "/var/www/html" />
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
気をつけてほしいのは同じような設定が書かれた設定が複数あることです。必ず編集しようとしている設定のディレクトリが「<Directory "/var/www/html" />」であることを確認したうえで編集してください。
できたら :wq を入力してファイルを保存して閉じます。
Apacheの再起動をします。
CentOS7の場合
$ sudo systemctl restart httpd.service
$ sudo service httpd restart
今度はポート番号なしでcakephp3のURLにアクセスします。
プライベートネットワーク → http://192.168.33.10/cake/
パブリックネットワーク → http://(自分で設定したIP)/cake/
以下のようにうまく表示されれば成功です。
うまく行きました
--- 表示できたけどエラーが出てる場合 ---
Vagrantでcakephp3を使用している場合キャッシュに書き込めないとかいうエラーがでることがあります。その場合はフォルダのownerをapacheに変えます。
$ sudo chown -R apache:apache /vagrant/cake
Vagrantのバージョンが古いのかよくわかりませんが共有フォルダ内のownerが変更できないことがあります。その場合は一旦仮想マシンを終了、Vagrantfileに以下をそのまま書き加えます。環境に応じて書き換えたりする必要はありません。
config.vm.synced_folder "./", "/vagrant", owner: 'vagrant', group: 'apache', mount_options: ['dmode=777', 'fmode=777']
それで仮想マシンをもういちど起動します。なおファルダ・ファイルの権限はls -lコマンドで確認できます。
それでも治らない場合はSE Linuxが悪さをしている可能性があります。
以下のようにSE Linuxをオフにします。
$ sudo getenforce
Enforcing
$ sudo setenforce 0
$ sudo getenforce
Permissive
それで仮想マシンを再起動します。Enforcing
$ sudo setenforce 0
$ sudo getenforce
Permissive
-----------------------------------------------------
cakephp3のindexの表示までうまくいったら、今度はcakephp3用のデータベースの設定をします。mysqlのユーザー名をroot、パスワードもrootとすると以下のコマンドでtestという名前のデータベースを作成します。
$ mysql -u root -proot
mysql> CREATE DATABASE test;
mysql> exit
mysql> CREATE DATABASE test;
mysql> exit
今度はcakephp3のapp.phpを書き換えます。
$ sudo vi /vagrant/cake/config/app.php
Datasourcesのusername, password, databaseの値を書き換えます。
「?Datasources」で検索するとすぐ見つかると思います。
'Datasources' => [
'default' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => 'localhost',
/**
* CakePHP will use the default DB port based on the driver selected
* MySQL on MAMP uses port 8889, MAMP users will want to uncomment
* the following line and set the port accordingly
*/
//'port' => 'nonstandard_port_number',
'username' => 'root',
'password' => 'root',
'database' => 'test',
'encoding' => 'utf8',
'timezone' => 'UTC',
'cacheMetadata' => true,
'default' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => 'localhost',
/**
* CakePHP will use the default DB port based on the driver selected
* MySQL on MAMP uses port 8889, MAMP users will want to uncomment
* the following line and set the port accordingly
*/
//'port' => 'nonstandard_port_number',
'username' => 'root',
'password' => 'root',
'database' => 'test',
'encoding' => 'utf8',
'timezone' => 'UTC',
'cacheMetadata' => true,
できたら再度cakephp3のindexにアクセスします。
以前はデータベースの部分にエラーがありました。
設定後はエラーが消えているはずです。
これでcakephp3のインストール終了!
リンク:
1. vagrantとvirtual box
2. アパッチのインストール
3. MySQLのインストール
4. PHPのインストール
5. CakePHP3のインストール
6. MigrationとBake