ランサーズ等のサービスを開発・運用する中で得た知識やノウハウを紹介しています。

Labels:  DevOps 投稿者:numahe

Vagrant上で PHP7 & CakePHP3の開発環境構築

こんにちは!2017年新卒のnumaheです。

現在インターン期間中なのですが、cakephpを勉強する!ためにvagrantで開発環境を構築しました。「どうせだったら最新のphpとcakephpで作ろうか」という上司の一声もあり、今回はPHP7とCakephp3で動かしてみます。

Vagrantのダウンロード & セットアップ

下記のURLから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

これですぐに開発環境が構築できます。
こんなに簡単に様々な環境が作れるなら、いろんな環境を作ってみるのもおもしろそうです。
以上です!

ランサーズではサービスを成長させてくれるエンジニア、デザイナーを募集しています!
ご興味がある方は、以下URLよりご応募ください。

Webエンジニア(Wantedly)
Rubyエンジニア(Wantedly)
フロントエンドエンジニア(Wantedly)
インフラエンジニア(Wantedly)
2017新卒エンジニア(Wantedly)
エンジニアインターン(Wantedly)
その他採用情報

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

究極のPDCA!その名も「PD鮨A」でプロダクト開発を超速化!

ランサーズのtsuyoshiです。 今回も社内コミュニケーションを活性化させ、プロダクトをよりよくするような【ネタ】です。 サービスやプロダクト開発のPDCAにおいて、日々カイゼン要望を吸収し、高速なPDCAを回すことが必要不可欠です。 ですが、よくよく考える …

thumbnail
日々の開発について

ランサーズ Advent Calendar 2016 6日目の記事です。 エンジニアのmakoです。 入社して半年経ちランサーズの開発で使用している技術について書きたいと思います。 業界として最近では使われることも多い技術や手法ですが入社前まではほとんど経験が …

thumbnail
プロジェクトにおける7つの問いを元にアジャイル開発しているおはなし。

こんにちは。 ランサーズエンジニアの@sayaです。 ふだんはランサーズの機能追加や改善を担当しています。   いきなり本題で恐縮ですが、ランサーズには、先日弊社CTOが提唱した『プロジェクトにおける7つの問い』があります。 # 詳細に関してはこちら …