Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

4,128 views

Published on

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

Published in: Technology
  • Be the first to comment

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

  1. 1. 15分でCakePHPを始める方法 hiro345@SSS(G)
  2. 2. ● 自己紹介 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 など
  3. 3. 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
  4. 4. インストール ● ● ● ● http://www.vagrantup.com/ からVagrantをダウンロード してインストール インストールウィザードにしたがってインストール Vagrant同梱のRubyでveeweeをBundlerでインストール 用意したGemfile source "https://rubygems.org" gem 'veewee'
  5. 5. インストールまでの手順 $ 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
  6. 6. 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 を作成
  7. 7. CakePHP2 Boxの構築 ● ● ● veeweeで下記を適用 日本語キーボードの設定も必要 残りはcentos6.boxをベースにvagrantで cent6-cakephp2.boxとして作成 yum -y update yum -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_profile echo "LANG=ja_JP.UTF-8" >> /home/vagrant/.bash_profile echo "export LANG" >> /home/vagrant/.bash_profile
  8. 8. CakePHP2 Boxの構築 その2 ● ● ● ● ● ● veeweeで作ったマシンをベース VagrantfileでGUI起動とホストオンリーネット ワーク追加 remiリポジトリ追加 Apache,PHP,MySQLのインストールと設定 CakePHP2のサンプルインストール CakePHP2開発用に共有フォルダを利用する設定
  9. 9. PHP環境構築の実行コマンド wget http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/i386/epel-release-6-8.noarch.rpm wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm sudo rpm -Uvh epel-release-6-8.noarch.rpm remi-release-6.rpm sudo yum -y --enablerepo=remi,epel install mysql-server mysql mysql-devel sudo 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/inittab sudo sed -i '5s/enabled=0/enabled=1/' /etc/yum.repos.d/remi.repo sudo sed -i '14s/enabled=0/enabled=1/' /etc/yum.repos.d/remi.repo sudo sed -i 's/;date.timezone =/date.timezone = "Asia/Tokyo"/' /etc/php.ini sudo chkconfig httpd on sudo chkconfig mysqld on sudo service httpd start sudo service mysqld start
  10. 10. 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
  11. 11. CakePHP2環境構築用シェル変数 #!/bin/sh v=2.4.2 CAKEPHP_APP_DIR="cakephp2_apps" BASE_DIR="/var/www/${CAKEPHP_APP_DIR}/cakephp-${v}_apps" CAKEPHP_NAME="cakephp-${v}" CAKEPHP_ORG=cakephp-cakephp-f53efef BASE_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 cakephp wget https://github.com/cakephp/cakephp/zipball/${v} -O ${CAKEPHP_NAME}.zip mkdir -p ${BASE_DIR} unzip ${CAKEPHP_NAME}.zip -d ${BASE_DIR}/
  12. 12. CakePHP2サンプルアプリ生成 # create user_app mv ${BASE_DIR}/${CAKEPHP_ORG} ${APP_DIR} for f in ${APP_DIR}/.htaccess ${APP_DIR}/app/.htaccess ${APP_DIR}/app/webroot/.htaccess do echo "${f} replace" cat <<EOF > /tmp/tmp_sed.sh sed -i 's%RewriteEngine on%RewriteEngine On%' ${f} sed -i 's%RewriteEngine On%RewriteEngine OnntRewriteBase ${APP_LOCATION}%' ${f} EOF bash /tmp/tmp_sed.sh done rm /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.php echo "Configure::write('Security.cipherSeed', '${cipherSeed}');" >> ${APP_DIR}/app/Config/bootstrap.php
  13. 13. 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
  14. 14. CakePHP2アプリ用MySQL DB作成 # mysql mysql -u root << EOF DROP 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
  15. 15. CakePHP2アプリ向け設定 cat <<EOF > /tmp/tmp_sed.sh cat ${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.php EOF bash /tmp/tmp_sed.sh rm /tmp/tmp_sed.sh cd ${APP_DIR}/app ./Console/cake bake all User
  16. 16. 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 end end *注意 CentOSの場合は、ネットワークカードを追加してBoxを作る場合は、 /etc/udev/rules.d/70-persistent-net.rules を削除し、NetworkManagerは停止、 networkサービスを有効としておくこと
  17. 17. ユーザの実行コマンド vagrantをインストールしてあれば、 vagrantをインストールしてあれば、 これだけ! $ 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 URLへアクセスするとCakePHP2が動いている! 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 ディレクト リ
  18. 18. 仮想マシンを使ったPHP開発 Mac OS X のNetBeansで開発! NetBeansで開発! ホストマシン ホストマシンで共有フォルダのファイルを 編集すると仮想マシンへ反映される     ↓ ローカルマシンに環境を用意したかのよう に使えて嬉しい! CentOS の環境で動作確認! 仮想マシン 共有フォルダ *ねこび〜ん: http://ja.netbeans.org/nekobean
  19. 19. NetBeans + CakePHP2 ● NetBeans はPHP開発に対応 ● NetBeans 7.4 からアクティベイトが必要 ● ● ● ● インタプリタはローカル環境になくてもよい (あるとできることが多分増える) リモートデバッグ可能 CakePHP2プラグインあり NetBeansはHTML5アプリもサポート!
  20. 20. まとめ ● ● VeeweeとVagrantで簡単に仮想マシンの用 意が可能 仮想マシンにLinux環境を用意するとPHPの 学習に便利そう

×