cakephp install

cakephp install

ドットインストールで cake php のインストールが
あったので
vagrant の CentOS ではなく
Ubuntu 14.04 にインストール

今回は
/var/www/html

mkdir cakephp

でディレクトリを作成し、ここで実行

https://getcomposer.org/doc/00-intro.md#installation-linux-unix-osx
にやり方の載っているので
これを実践

curl -sS https://getcomposer.org/installer | php

で composer をインストール

次に cake php のインストール

php composer.phar create-project --prefer-dist cakephp/app myapp

でインストールします

ちなみに最後の myapp は作成するプロジェクト名です
インストールの途中で

Set Folder Permissions ? (Default to Y) [Y,n]?

というコメントがでてきます
フォルダの権限を設定しますか
ということなので
y
を押して設定します

これで cakephp が使えるので
フォルダの中身を確認
config が設定ファイル関連
src がソースコード関連

webrootはブラウザからアクセスしたときに見えるフォルダで
画像
css
javascript などを入れるところ
web 関連と考えておくとわかりやすいかも

これでブラウザからアクセスしたらエラー発生

bin/cake server -H 192.168.128.54 -p 8000/

を実行したけどエラー

AllowOverride を有効化していないためと思われるので

 sudo vim /etc/apache2/apache2.conf 

で設定ファイルを開き
/AllowOverride
で検索して
167行目あたりの

AllowOverride None

AllowOverride All

に変更し

sudo service apache2 restart

で apache2 を再起動して設定を反映します

これでブラウザからアクセスすると
Please be aware that this page will not be shown if you turn off debug mode unless you disable the NotFoundException in src/Template/Pages/home.ctp.
とでているけど
これはデバッグモードなのでそのままにしておきます

cake2

次に下にスクロールすると
Connection to database could not be established: SQLSTATE[28000] [1045] Access denied for user ‘my_app’@’localhost’ (using password: YES)
となっています

cake3

これはDBユーザ名などが違うためですので
設定ファイルを書き換えます

cd /var/www/html/cakephp/myapp/config/

として cakephp をインストールしたフォルダの中の
設定関連フォルダ config に移動します

次に

vim app.php

で設定を変更します

223行目あたりに

            'username' => 'my_app',
            'password' => 'secret',
            'database' => 'my_app',
            'encoding' => 'utf8',
            'timezone' => 'UTC',
            'flags' => [],
            'cacheMetadata' => true,
            'log' => false,

となっているので設定を変更します

変更するのは
DBユーザ名
DBパスワード
DB名
に該当する部分なので

            'username' => 'my_app',
            'password' => 'secret',
            'database' => 'my_app',

の部分を書き換えます

            'username' => 'DBユーザ名',
            'password' => 'DBパスワード',
            'database' => 'DB名',

となります

これで
CakePHP is able to connect to the database.
と表示されるようになります

cake4

sql ファイルを作成しておいた場合、それをみると簡単に
設定できるので
sql ファイルを作っておくことをおすすめします

CakePHP のファイルの置き場所

ようやく、CakePHP を使ったDBへの接続ができるようになりました
今回、基礎から学ぶ facebookアプリ開発
を購入し、アプリ作成の勉強をしていたのですが
CakePHP の導入でかなり手間をとってしまいました
ちなみに、画像入りだと

CakePHP を使って今回サンプルを実行したのですが
ファイルの置き場所について載っていなかったので
ちょっとメモしておきます
ubuntu の場合になりますが
cakephp 1.3系をダウンロードして
unzip コマンドで解凍
unzip cakephp-cakephp-1.3.14-0-g5ac77c2.zip
次に、解凍したディレクトリを
mv コマンドを使って
cakephp に名前を変更します
mv cakephp-cakephp-822a1e0 cakephp
次に、ドキュメントルートへ このディレクトリを移動
sudo cp -rp cakephp /var/www/
vim cakephp/app/config/core.php
で、
Security.salt の文字列を変更
Security.ciperSeed も 文字列を変更します
cp database.php.default database.php
で設定ファイルを作成し
vim database.php
CakePHP DB接続情報の設定
のときと同じように再度設定します
chmod -R 777 /var/www/cakephp/app/tmp/
でパーミッションを変更すれば
無事に使えるようになります
続いて、cakephp のファイルの置き場についてです
/var/www/cakephp/app/controller/

shoots_controller.php
を配置
mkdir /var/www/cakephp/app/view/shoots
でディレクトリ作成して
ここへ
savescore.ctp
を配置します
これで、ゲームを開始
スコアが新記録を更新すると、DBへ反映され、facebook のウォールへ
投稿しますか?
と聞かれます
ここで投稿すると、自分のウォールに投稿されるようになります
動作確認として
自分のfacebook のウォールで投稿メッセージの確認
そして
phpMyAdmin へログインして
DBの更新時間が変更されていれば成功です
今回は不本意ながら
ver 1.3x 系で行いました
スキルを上げ、ver2.0系でも再現できるようにしてみようと思います
サーバー構築やプログラミングを勉強する場合
最初のうちは再現性を保つため、書籍や資料などと同じ環境を
構築することをおすすめします
私自信、過去にかなりこれではまりましたので….

cakePHP 1.x と 2.x の違いについて

facebook アプリを作成するため、
CakePHP と enchant.js の勉強をしています
今日は、CakePHP についてはまったので
その解決のためのメモです
書籍によれば、CakePHP ver 1.3 を使っていたのですが
最新版になれたほうがいいかな? と思って 2.0 を使いました
そもそも、これがはまった原因ですが…
DB接続する処理がまったく行われていないため
検索してみた結果
どうやら ver 1.x 系と ver 2.x 系では異なる点が多くあるようです
参考サイトは
cakephpの2.0と1.3系違いを比較してみた
cakephp1.x系で作られたWebサイトをcakephp2.0系へ移植する際のまとめ
です
キャメル記法を使うこと
(最初の文字を大文字にすること、アンダースコアの直後1文字を大文字にすること)
e()関数が使えなくなり
echo関数を使うことになる
ほかにもいろいろありますが
変更点が多く、対処できないため、一度 ver 1.x 系に戻そうと思います

CakePHP DB接続情報の設定

DBを phpMyAdmin で作成したので
次に、DBへの接続情報の設定を行います
(本来は、SQLコマンドで作成できれば、のちのちsqlファイルから
コマンドで作成できるので、とても役立つのですが、これは今後の課題です)
とりあえず、それは置いておいて
必要なファイルを作成します
DBへの接続情報を設定するには
database.php に記述するのですが
初期の状態ではこのファイルは存在しません
そこで、database.php.default をコピーし
このファイルを作成する必要があります
cd /var/www/cakephp/app/Config/
で移動して
cp database.php.default database.php
でファイルを作成します
次に。vim database.php でファイルを開き

class DATABASE_CONFIG {
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'database_name',
'prefix' => '',
//'encoding' => 'utf8',
);
public $test = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'test_database_name',
'prefix' => '',
//'encoding' => 'utf8',

の部分を変更します
なお、パラメータについては
初心者のためのCakePHP2.0 プログラミング入門:
を参考にさせていただきました
ちなみに、変更するのは default 項目のみ

class DATABASE_CONFIG {
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'myapps_user',
'password' => 'phpMyAdminで決めたパスワード',
'database' => 'myapps',
'prefix' => '',
'encoding' => 'utf8',
);

というように変更します
変更したら、保存しファイルを閉じます
この状態でブラウザでアクセスしても
Your tmp directory is NOT writable.
となっているので、
次に
Your tmp directory is NOT writable.
の対処を行います
このメッセージは
tmp ディレクトリに書き込み権限がないことが原因です
試しに ls コマンドでパーミッションを調べてみます

ll ../../app/
合計 64
drwxrwxr-x 14 snowpool snowpool 4096 2012-02-05 16:03 ./
drwxrwxr-x  6 snowpool snowpool 4096 2012-02-05 16:03 ../
-rw-rw-r--  1 snowpool snowpool  141 2012-02-05 16:03 .htaccess
drwxrwxr-x  3 snowpool snowpool 4096 2012-02-24 22:58 Config/
drwxrwxr-x  4 snowpool snowpool 4096 2012-02-05 16:03 Console/
drwxrwxr-x  3 snowpool snowpool 4096 2012-02-05 16:03 Controller/
drwxrwxr-x  2 snowpool snowpool 4096 2012-02-05 16:03 Lib/
drwxrwxr-x  3 snowpool snowpool 4096 2012-02-05 16:03 Locale/
drwxrwxr-x  4 snowpool snowpool 4096 2012-02-05 16:03 Model/
drwxrwxr-x  2 snowpool snowpool 4096 2012-02-05 16:03 Plugin/
drwxrwxr-x  4 snowpool snowpool 4096 2012-02-05 16:03 Test/
drwxrwxr-x  2 snowpool snowpool 4096 2012-02-05 16:03 Vendor/
drwxrwxr-x  9 snowpool snowpool 4096 2012-02-05 16:03 View/
-rw-rw-r--  1 snowpool snowpool  642 2012-02-05 16:03 index.php
drwxrwxr-x  6 snowpool snowpool 4096 2012-02-05 16:03 tmp/
drwxrwxr-x  6 snowpool snowpool 4096 2012-02-05 16:03 webroot/

みてのとおり、wの権限がないため、書き込みできません
このため、この権限を変更します
chmod -R 777 /var/www/cakephp/app/tmp/
これで、権限が変更され、再度
http://localhost/cakephp
へアクセスすると、すべてオールグリーンとなり
使用可能となります

CakePHP DB設定

引き続き、CakePHP の設定となります
CakePHP のDB設定を行います
書籍を見ると、phpMyAdmin を使っているので
ここは同じように行います
ちなみに、参考書籍は基礎から学ぶ facebookアプリ開発

書籍ではWindows での XAMPP ですが
私の環境は ubuntu なので
Ubuntu(11.04)でLAMPP(Linux Apache MySQL PHP PHPMyAdmin)を構築!インストールと設定
を参考に設定します
いくつか必要なものもあるので
apt-get install php5-gd phpmyadmin
でインストールしました
インストールしている途中で MySQL の rootパスワードを聞かれるので
入力します
失敗しても、再度設定するか聞かれるので
とくに問題にはならないと思います
続いて
phpMyAdmin へアクセスします
http://localhost/phpmyadmin
でアクセスし
初期状態なら
ユーザ名 root
パスワード 設定したパスワード
としログインします
ログインしたら、データベースタグをクリックし
新規データーベース作成のところで
myapps と入力し作成をクリックします
次に、特権タブをクリックし。新しいユーザを追加する をクリック
ユーザ名 myapps_user
パスワード 任意のパスワード
で設定
上に sql コマンドがでるけど
たぶんこれは
実行結果だと思う
CREATE USER ‘myapps_user’@’%’ IDENTIFIED BY ‘***’;
GRANT USAGE ON * . * TO ‘myapps_user’@’%’ IDENTIFIED BY ‘***’ WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
GRANT ALL PRIVILEGES ON `myapps` . * TO ‘myapps_user’@’%’;
次は作成したDBを設定ファイルへ書き込みを行います

CakePHP 初期設定

CakePHP を使うため、初期設定を行います
download 完了後、
unzip コマンドで解凍
unzip cakephp-cakephp-2.0.6-0-g5886b25.zip
次にディレクトリの名前が非常に長いため
mv cakephp-cakephp-4ed3d35 cakephp
で名前変更
このままでは使えないため、初期設定を行います
参考サイトは
cakePHPの初期設定【オールグリーンにする方法】

cakePHPの初期設定【オールグリーンにする方法】


そして
CakePHP インストール

CakePHP インストール


設定ファイルを変更し。セキュリティを固めないとダメみたいなので
vim cakephp/app/Config/core.php

/.salt で検索し
187行めの
Configure::write(‘Security.salt’, ‘DYhG93b0qyJfIxfs2guVoUubWwvniR2G0 FgaC9mi’);
の部分で 英数字の部分
DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi
を変更します
どれか1文字変更でもOK
また
Configure::write(‘Security.cipherSeed’, ‘76859309657453542496749683645’);

76859309657453542496749683645
の数字を変更し保存します
ここまで完了したら
この cakephp ディレクトリを
web サーバーのルート直下にアップロードします
とはいっても、ファイルコピーするだけですが
cp -rp cakephp /var/www/
この状態でアクセスすると
URL rewriting is not properly configured on your server.
と真っ赤に表示されている
対策は
Ubuntu11.04のapache2、PHP5、cakePHPのインストールについて(備忘録)
http://tyukudiary.at.webry.info/201109/article_6.html
を参考に
sudo a2enmod rewrite
で rewrite を有効化
次に
sudo vim /etc/apache2/sites-available/default
で開いて

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

へ変更
最後に
sudo /etc/init.d/apache2 restart
で設定反映
次にDB設定が必要
これは、また明日

CakePHP の基礎知識

CakePHP について調べてみました
CakePHP は
OSSのPHPフレームワーク
Ruby on rails の概念を取り入れたMVC」アーキテクチャのFW
CakePHPを使うと
記述するコード格段に減らせるらしい
MVC ATはappの構造を 
model
view
Controller
3つの要素に分割して実装する
というプログラミング技法のこと
model は
データ操作(入手流直や整形加工)
veiw は
データの出力
controller は
model と view の制御を行う
ちなみに、model は データベースと呼ばれる低レベルレイヤーでDBと対話を行う
これにより、どの種類のDBでm、お同じ記述でアクセス可能になるというものです
ダウンロードは
http://cakephp.jp/
からとなります
今回は、最新の安定版になる
2.0.6 安定版をダウンロードしました
もし、不具合がありそうなら
1.3.14 安定版を使ってみます