こんにちは!2017年新卒のnumaheです。
現在インターン期間中なのですが、cakephpを勉強する!ためにvagrantで開発環境を構築しました。「どうせだったら最新のphpとcakephpで作ろうか」という上司の一声もあり、今回はPHP7とCakephp3で動かしてみます。
Vagrantのダウンロード & セットアップ
ダウンロードが完了したら
vagrant boxを追加(http://www.vagrantbox.es/)
↓
ディレクトリを作成
↓
vagrant init
↓
vagrant up
↓
vagrant ssh
していきます。
※今回boxはDebian Jessie 8.0 Release x64 (Minimal, Shrinked, Guest Additions 4.3.26)
を使用します。
vagrant box add Debian/Jessie8.0 https://github.com/holms/vagrant-jessie-box/releases/download/Jessie-v0.1/Debian-jessie-amd64-netboot.box mkdir cakephp_test cd cakephp_test vagrant init Debian/Jessie8.0
ここで、作成されたVagrantfile private_networkをコメントアウトを外します。
vi Vagrantfile config.vm.network "private_network", ip: "192.168.33.10"
vagrant up vagrant ssh
これで無事vagrant sshできました。
php7 & Apache & MySQL のインストール
vagrant の仮想環境上で諸々インストールしていきます。
# PHP 7.0インストール # /etc/apt/sources.list に http://packages.dotdeb.org を追加 vi /etc/apt/sources.list http://packages.dotdeb.org wget https://www.dotdeb.org/dotdeb.gpg sudo apt-key add dotdeb.gpg sudo apt-get update sudo apt-get install php php -v PHP 7.0.12-1~dotdeb+8.1 (cli) ( NTS )
# Apache/2.4.10インストール sudo aptitude -y install apache2 vi /etc/apache2/conf-enabled/security.conf # 26行目:変更 ServerTokens Prod sudo apache2 -v Server version: Apache/2.4.10 (Debian)
# Mysql5.7.16インストール mkdir ~/src cd ~/src wget http://dev.mysql.com/get/mysql-apt-config_0.6.0-1_all.deb sudo dpkg -i mysql-apt-config_0.6.0-1_all.deb sudo apt-get update sudo apt-get install mysql-server Server version: 5.7.16 MySQL Community Server (GPL)
完了です。
composerのインストール & cakePHPプロジェクトの作成
今回は、cakephpの公式のインストール方法として, Composerを使用します。
アプリ名はtest_app
cd /vagrant curl -s https://getcomposer.org/installer | php php composer.phar create-project --prefer-dist cakephp/app test_app Problem - cakephp/cakephp 3.3.7 requires ext-intl * -> the requested PHP extension intl is missing from your system.
!
どうやらintlという拡張機能が必要らしいです。
apt-cache search intl # intlと検索し、php7.0のintlをインストールします。 sudo apt-get install php7.0-intl # 一度test_appを削除してプロジェクトを再作成します。 rm -rf test_app php composer.phar create-project --prefer-dist cakephp/app test_app Problem - cakephp/cakephp 3.3.7 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
!
mbstringという拡張機能も必要らしいです。
apt-cache search mbstring # 同じようにmbstringと検索し、php7.0のmbstringをインストールします。 apt-cache search mbstring sudo apt-get install php7.0-mbstring rm -rf test_app php composer.phar create-project --prefer-dist cakephp/app test_app # もう一度test_appを削除してプロジェクトを再再作成します。
今度はうまくいきました。
database設定
次にデータベースの設定を行っていきます。
データベースを作成し、test_appの設定を書き換えます。
mysql -uroot -p # パスワードを入力してmysql にログインします。 mysql> create database test_app_db; exit; bye
app.default.php
'Datasources' => [ 'default' => [ 'className' => 'Cake\Database\Connection', 'driver' => 'Cake\Database\Driver\Mysql', 'persistent' => false, 'host' => 'localhost', 'username' => 'root', 'password' => ‘xxxx', 'database' => ’test_app_db', 'encoding' => 'utf8', 'timezone' => '+09:00', 'flags' => [], 'cacheMetadata' => true, 'log' => false,
ついでにbootstrap.phpのtimezoneも変更
bootstrap.php
date_default_timezone_set('Asia/Tokyo’);
ブラウザで確認
ここまで設定したら、最後にブラウザで確認してみましょう。
bin/cake server -H 192.168.33.10
ブラウザでに接続
cakephpの画面が表示されました。
これでPHP7とCakephp3の開発環境が完成しました。
ついでに
また新しく同じ仮想環境を作成したい場合面倒なので、この環境をcustam_debian_cakephpという名前でbox化してしまいます。
#vagrantからログアウト vagrant halt vagrant package vagrant box add custam_debian_cakephp package.box
これですぐに開発環境が構築できます。
こんなに簡単に様々な環境が作れるなら、いろんな環境を作ってみるのもおもしろそうです。
以上です!