15分でcakephpを始める方法(nseg 2013-11-09 )

20
15 15 分で 分で CakePHP CakePHP を始める方法 を始める方法 hiro345@SSS(G)

Upload: hiro345

Post on 20-Jun-2015

2.491 views

Category:

Technology


2 download

DESCRIPTION

「15分でCakePHPを始める方法」を提供するためにVeeweeとVagrantでCentOS6でLinux+Apache+MySQL+PHP+CakePHPの環境構築とVagrant Boxを用意した話

TRANSCRIPT

Page 1: 15分でCakePHPを始める方法(Nseg 2013-11-09 )

1515分で分でCakePHPCakePHPを始める方法を始める方法hiro345@SSS(G)

Page 2: 15分でCakePHPを始める方法(Nseg 2013-11-09 )

自己紹介● hiro345

twitter: @hiro345 blog: http://www.sssg.org/blogs/hiro345/

● 執筆 @IT ... Java, Eclipse, Android, C 日経Linux ... Java, Dart, Cloud 日経ソフトウェア ... Java Java World, WEB+DB Press など

Page 3: 15分でCakePHPを始める方法(Nseg 2013-11-09 )

Veeweeとは● jedi4ever/veewee · GitHub:– https://github.com/jedi4ever/veewee

● 仮想マシンの雛形を作成するツール– Oracle VM VirtualBox– KVM– VMware

● Veeweeでvagrant boxをつくろう– http://www.sssg.org/blogs/hiro345/archives/15054.html

Page 4: 15分でCakePHPを始める方法(Nseg 2013-11-09 )

インストール● http://www.vagrantup.com/ からVagrantをダウンロード

してインストール● インストールウィザードにしたがってインストール● Vagrant同梱のRubyでveeweeをBundlerでインストール● 用意したGemfile

source "https://rubygems.org"gem 'veewee'

Page 5: 15分でCakePHPを始める方法(Nseg 2013-11-09 )

インストールまでの手順$ PATH=/Applications/Vagrant/bin:/Applications/Vagrant/embedded/bin:$PATH

$ export PATH

$ gem install bandler

$ mkdir -p $HOME/workspace/veewee

$ cd $HOME/workspace/veewee

$ bundle install --path=vendor/bundle

Page 6: 15分でCakePHPを始める方法(Nseg 2013-11-09 )

Boxを作成するまでのコマンド$ bundle exec veewee help

$ bundle exec veewee vbox templates

$ bundle exec veewee vbox templates|grep Cent

$ bundle exec veewee vbox define centos6 'CentOS-6.4-i386-minimal'

$ bundle exec veewee vbox build centos6

$ vagrant package --base centos6 --output centos6.box

上から順に、- ヘルプ表示- テンプレート一覧表示- Centという文字列が含まれるテンプレートの一覧表示- CentOS-6.4-i386-minimalというテンプレートを使って、centos6という名前の仮想マシン定義

- centos6構築(仮想マシンの作成とOSインストール)

- centos6.box というファイル名の Vagrant Box を作成

Page 7: 15分でCakePHPを始める方法(Nseg 2013-11-09 )

CakePHP2 Boxの構築● veeweeで下記を適用● 日本語キーボードの設定も必要● 残りはcentos6.boxをベースにvagrantでcent6-cakephp2.boxとして作成

yum -y updateyum -y groupinstall 'Development Tools'yum -y groupinstall "X Window System"yum -y groupinstall "Desktop"yum -y groupinstall "General Purpose Desktop"yum -y groupinstall "Internet Browser"yum -y groupinstall "Japanese Support" echo "" >> /home/vagrant/.bash_profileecho "LANG=ja_JP.UTF-8" >> /home/vagrant/.bash_profileecho "export LANG" >> /home/vagrant/.bash_profile

Page 8: 15分でCakePHPを始める方法(Nseg 2013-11-09 )

CakePHP2 Boxの構築 その2● veeweeで作ったマシンをベース● VagrantfileでGUI起動とホストオンリーネット

ワーク追加● remiリポジトリ追加● Apache,PHP,MySQLのインストールと設定● CakePHP2のサンプルインストール● CakePHP2開発用に共有フォルダを利用する設定

Page 9: 15分でCakePHPを始める方法(Nseg 2013-11-09 )

PHP環境構築の実行コマンドwget http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/i386/epel-release-6-8.noarch.rpmwget http://rpms.famillecollet.com/enterprise/remi-release-6.rpmsudo rpm -Uvh epel-release-6-8.noarch.rpm remi-release-6.rpmsudo yum -y --enablerepo=remi,epel install mysql-server mysql mysql-develsudo yum -y --enablerepo=remi,epel install \ php php-cli php-devel php-common php-pdo php-ldap php-gd php-mysql \ php-mbstring php-xmlrpc php-xml php-pear php-pear-DB php-pear-Net-URL \ php-pear-Mail-Mime php-pear-Net-Socket php-pear-Auth-SASL php-pear-Mail \ php-pear-MDB2 php-pear-HTTP-Request php-pear-File-Util php-pear-File-CSV \ php-pear-Net-SMTP php-pear-Log php-pear-File php-phpunit-PHPUnit

sudo sed -i 's/id:3/id:5/' /etc/inittabsudo sed -i '5s/enabled=0/enabled=1/' /etc/yum.repos.d/remi.reposudo sed -i '14s/enabled=0/enabled=1/' /etc/yum.repos.d/remi.reposudo sed -i 's/;date.timezone =/date.timezone = "Asia/Tokyo"/' /etc/php.ini

sudo chkconfig httpd onsudo chkconfig mysqld onsudo service httpd startsudo service mysqld start

Page 10: 15分でCakePHPを始める方法(Nseg 2013-11-09 )

PHPデバッグ環境用設定$ cat /etc/php.d/xdebug.ini

zend_extension=/usr/lib/php/modules/xdebug.so

xdebug.remote_enable = On

xdebug.remote_connect_back=On

xdebug.remote_handler=dbgp

xdebug.remote_mode=req

xdebug.remote_host=192.168.91.10

;xdebug.remote_port=9000

Page 11: 15分でCakePHPを始める方法(Nseg 2013-11-09 )

CakePHP2環境構築用シェル変数#!/bin/shv=2.4.2CAKEPHP_APP_DIR="cakephp2_apps"BASE_DIR="/var/www/${CAKEPHP_APP_DIR}/cakephp-${v}_apps"CAKEPHP_NAME="cakephp-${v}"CAKEPHP_ORG=cakephp-cakephp-f53efefBASE_DIR="/var/www/${CAKEPHP_APP_DIR}/${CAKEPHP_NAME}_apps"APP_NAME="user_app"APP_DIR=${BASE_DIR}/${APP_NAME}APP_LOCATION="/${CAKEPHP_APP_DIR}/${APP_NAME}"CAKEPHP_HTTP_CONF="/etc/httpd/conf.d/cakephp.conf"

# download cakephpwget https://github.com/cakephp/cakephp/zipball/${v} -O ${CAKEPHP_NAME}.zipmkdir -p ${BASE_DIR}unzip ${CAKEPHP_NAME}.zip -d ${BASE_DIR}/

Page 12: 15分でCakePHPを始める方法(Nseg 2013-11-09 )

CakePHP2サンプルアプリ生成# create user_appmv ${BASE_DIR}/${CAKEPHP_ORG} ${APP_DIR}for f in ${APP_DIR}/.htaccess ${APP_DIR}/app/.htaccess ${APP_DIR}/app/webroot/.htaccessdo echo "${f} replace" cat <<EOF > /tmp/tmp_sed.shsed -i 's%RewriteEngine on%RewriteEngine On%' ${f}sed -i 's%RewriteEngine On%RewriteEngine On\n\tRewriteBase ${APP_LOCATION}%' ${f}EOF bash /tmp/tmp_sed.shdonerm /tmp/tmp_sed.sh chmod -R a+w ${APP_DIR}chcon -R unconfined_u:object_r:httpd_sys_content_t:s0 ${APP_DIR} salt=`php -r '$num = "";for($i=0;$i<10;++$i){$num .= rand(100,999);} echo sha1($num);'`cipherSeed=`php -r '$num = "";for($i=0;$i<10;++$i){$num .= rand(100,999);} echo $num;'` echo "Configure::write('Security.salt', '${salt}');" >> ${APP_DIR}/app/Config/bootstrap.phpecho "Configure::write('Security.cipherSeed', '${cipherSeed}');" >> ${APP_DIR}/app/Config/bootstrap.php

Page 13: 15分でCakePHPを始める方法(Nseg 2013-11-09 )

Apacheの設定ファイル生成

cat <<EOF > ${CAKEPHP_HTTP_CONF}Alias ${APP_LOCATION} ${BASE_DIR}/${APP_NAME}/app/webroot<Directory ${APP_DIR}/app/webroot> AllowOverride All</Directory><Location ${APP_LOCATION}> Options Indexes FollowSymLinks Order allow,deny Allow from all</Location>EOF

service httpd restart

Page 14: 15分でCakePHPを始める方法(Nseg 2013-11-09 )

CakePHP2アプリ用MySQL DB作成

# mysqlmysql -u root << EOFDROP DATABASE IF EXISTS ${APP_NAME};CREATE DATABASE IF NOT EXISTS ${APP_NAME} DEFAULT CHARACTER SET utf8;GRANT ALL PRIVILEGES ON ${APP_NAME}.* TO ${APP_NAME}@localhost IDENTIFIED BY '${APP_NAME}_pass';FLUSH PRIVILEGES;use ${APP_NAME};CREATE TABLE IF NOT EXISTS users ( id int(11) NOT NULL AUTO_INCREMENT, username tinytext COLLATE utf8_unicode_ci NOT NULL, password tinytext COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;EOF

Page 15: 15分でCakePHPを始める方法(Nseg 2013-11-09 )

CakePHP2アプリ向け設定

cat <<EOF > /tmp/tmp_sed.shcat ${APP_DIR}/app/Config/database.php.default \ | sed -e "s%'login' => 'user'%'login' => '${APP_NAME}'%" - \ | sed -e "s%'password' => 'password'%'password' => '${APP_NAME}_pass'%" - \ | sed -e "s%'database' => 'database_name'%'database' => '${APP_NAME}'%" - \ | sed -e "s%//'encoding'%'encoding'%" - \ > ${APP_DIR}/app/Config/database.phpEOF

bash /tmp/tmp_sed.shrm /tmp/tmp_sed.sh

cd ${APP_DIR}/app./Console/cake bake all User

Page 16: 15分でCakePHPを始める方法(Nseg 2013-11-09 )

cent6-cakephp2の_Vagrantfile

$ cat $HOME/.vagrant.d/boxes/cent6-cakephp2/virtualbox/include/_Vagrantfile Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.network :private_network, ip: "192.168.91.10" config.vm.provider :virtualbox do |vb| vb.gui = true endend

*注意CentOSの場合は、ネットワークカードを追加してBoxを作る場合は、/etc/udev/rules.d/70-persistent-net.rules を削除し、NetworkManagerは停止、networkサービスを有効としておくこと

Page 17: 15分でCakePHPを始める方法(Nseg 2013-11-09 )

ユーザの実行コマンド

http://192.168.91.10/cakephp2_apps/user_app/http://192.168.91.10/cakephp2_apps/user_app/users/

共有フォルダにPHPファイルを用意するときは下記http://192.168.91.10/php/ 実体はVagrantfileがあるディレクトリの php ディレクトリ

$ vagrant box add cent6-cakephp2 $HOME/Downloads/cen6-cakephp2.box$ mkdir -p $HOME/workspace/vagrant/cent6-cakephp2$ cd $HOME/workspace/vagrant/cent6-cakephp2$ vagrant init cent6-cakephp2$ vagrant up

vagrantvagrantをインストールしてあれば、をインストールしてあれば、これだけ!これだけ!

URLへアクセスするとCakePHP2が動いている!

Page 18: 15分でCakePHPを始める方法(Nseg 2013-11-09 )

仮想マシンを使ったPHP開発

ホストマシン 仮想マシン

共有フォルダホストマシンで共有フォルダのファイルを編集すると仮想マシンへ反映される

    ↓

ローカルマシンに環境を用意したかのように使えて嬉しい! *ねこび〜ん: http://ja.netbeans.org/nekobean

Mac OS X Mac OS X ののNetBeansNetBeansで開発!で開発!CentOS CentOS の環境で動作確認!の環境で動作確認!

Page 19: 15分でCakePHPを始める方法(Nseg 2013-11-09 )

NetBeans + CakePHP2

● NetBeans はPHP開発に対応● NetBeans 7.4 からアクティベイトが必要● インタプリタはローカル環境になくてもよい

(あるとできることが多分増える)● リモートデバッグ可能● CakePHP2プラグインあり● NetBeansはHTML5アプリもサポート!

Page 20: 15分でCakePHPを始める方法(Nseg 2013-11-09 )

まとめ● VeeweeとVagrantで簡単に仮想マシンの用

意が可能● 仮想マシンにLinux環境を用意するとPHPの

学習に便利そう