2013年10月4日金曜日

AndroidでParse.comのプッシュ通知サンプルアプリを作成


MBaaS【Mobile Backend as a Service】と呼ばれるクラウドサービスが、去年辺りから盛り上がっているようです。

米国のParse(www.parse.com)が、無料トライアル可能なので、『Android + Parseによるプッシュ通知』を作成してみました。


Parse に登録したプッシュ通知アプリから、Androidモバイルアプリにメッセージを送信します。
  • Parse にサインイン (メールアドレス、GitHubアカウント、FacebookアカウントでOK)
  • Parse にアプリを登録 (アプリ名のみでOK)
  • ローカル環境(ADTなど)で、Androidプロジェクトを作成 (デフォルトのHello World! でOK)
  • Parse から SDK をダウンロードし、作成したAndroidプロジェクトの libs に配置
  • Parse の Start Guide 通りに Androidソースに追記
  • Parse に登録したアプリから、Androidアプリにプッシュ通知

こちらの書籍を参考にさせて頂きました
>『Effective Android』 http://techbooster.org/event/16422/


1.Parse にサインイン(同時にアプリ登録も行われます)


Parse(www.parse.com)

PA000039

中央にある『Try it for free』をクリック

PA000040

GitHubアカウントでログインすることにしたので、左下の『Log in with GitHub』をクリック

PA000041

GitHubのサイトに遷移し、Parseと連携する許可を求められるので、

PA000042

下にスクロールして、『Allow access』をクリック

PA000043

GitHubアカウントのパスワードを入力して、

PA000044

Sign up 完了です。

作成するアプリケーション名を入力して、『Start using Parse』へ

(ちなみに Company type は、individual developer を選択しました)


PA000045

PA000046

 

2.Parse の Push QuickStart Guide の開始


  ※あらかじめ、Androidプロジェクトを作成しておきます

上記 Welcome to Parse の Start sending push with Parse を開始します。

PA000047

(1) platform は、Android を選択。

(2) は、Sign up 時に登録したアプリが選択済みとなっています。

(3) 1. SDKをダウンロード&展開し、2. ローカルに作成したAndroidプロジェクトの “libs” フォルダに Parse-1.3.5.jar (※2013/10/4現時点) を、配置します。

PA000049

(3) 3. Androidプロジェクトの MainActivity に追記していきます

 表示されている source のコピー&ペーストでOK

 (※自分が登録したParseアプリの application id と client key が既にセットされている)
PA000050


(4) 『uses-permission』 を、AndroidManifest.xml へ追記

PA000051

(5) プッシュ通知を解析したい場合、MainActivityに追記

(6) AndroidManifest.xml へ追記

 ※この状態で、一度Androidアプリを実行します (実機デバッグでもエミュレータでもOK)

 

3.Parse の ダッシュボードを確認

Push Start Guide のページは、そのままにしておいて、右上ユーザネームにフォーカスし、Dashboard を別タブで開きます。

PA000052

登録したアプリが表示されているので、Data Browser を選択します。

PA000056

ここにデバイスが登録されていれば、Parseからのプッシュ通知が可能です。

4.Parse に登録したアプリから、Androidアプリにプッシュ通知

Push Start Guide のページから、テスト通知が行えます。

ページ最下段の Test the SDK で、

PA000055

『Send Test Push』 をクリック

PA000057

上記のようなメッセージが表示されます。

Androidアプリをデバッグ実行させていた Nexus7 に、メッセージが届きました。

(※2段目がメッセージ内容です)

device-2013-10-04-114151



Parse のダッシュボードから、任意のメッセージをプッシュ通知してみます。

PA000059

Push Notifications タブの 『+ Send a push』 をクリック

PA000061

プッシュ通知するメッセージを入力し、『Send Notification』 をクリック

device-2013-10-04-114904

日本語も問題なくプッシュ通知されました。

2013年9月18日水曜日

Google Maps Android API v2 のサンプルを実機(Nexus7)で動かす。


公式サイト(https://developers.google.com/maps/documentation/android/start)のサンプルを、eclipse ADT (Build: v22.0.5) で作成しました。

上記サイトの手順通り進めて、実機(新Nexus7 Android 4.3)をUSBデバッグモードにて、テストしたところ、サンプルアプリは起動したのですが、画面がグレーとなってMAPが表示されません。


エラーログは、以下が表示されるため、

 Failed to load map. Error contacting Google servers. This is probably an  authentication issue (but could be due to network errors).

 訳:マップのロードに失敗しました。 Googleのサーバに接触しエラーが発生しました。これはおそらく、認証の問題(ただし、ネットワークエラーが原因である可能性があります)。


検索したところ、stackoverflow に解決策が掲載されていました。

http://stackoverflow.com/questions/17491400/failed-to-load-map-error-contacting-google-servers-issue-with-android-google-ma


【対応内容】

AndroidManifest.xml に以下を追記。

      <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>


再度デバッグ実行したところ、無事にMAPが表示されました。

device-2013-09-18-115218


尚、eclipse ADT のエミュレータでは、別の問題で表示が出来ていません。

対応策が分かったら、Blogに書きたいと思います。

以上です。

2013年8月1日木曜日

CakePHP-2.3.8 にBoostCakeを導入する。

 

CentOS + Apache + MySQL + PHP & CakePHP-2.3.8 に、プラグイン「BoostCake」 を導入する。

CakePHPへ「Twitter Bootstrap 2.3.2 & 3.0.0 に対応したプラグイン BoostCake」を導入します。
  ※1:CakePHP-2.3.8 の導入方法は、こちらの記事参照→CakePHP-2.3.8のセットアップ
  ※2:CakePHP-2.3.8 は、/var/www/html/cakephp238/ にセットアップされています。
  ※3:CakePHP公式サイトの「ブログチュートリアル」を試しています。
    → http://book.cakephp.org/2.0/ja/getting-started.html#id2
  ※4:参考にさせて頂いた BoostCake 作成者様のサイト
  WS000001

 

1.Twitter Bootstrap v2.3.2 を、ダウンロード後、解凍し、各フォルダへ配置する


 ・http://getbootstrap.com/2.3.2/
   → 今回は、TwitterBootstrap の version は、2.3.2 にしました。
    ※上記の各js、css、img を、app/webroot 配下の js、css、img に配置しました。

2. Composer の導入


 ・github(https://github.com/slywalker/cakephp-plugin-boost_cake)には、『BoostCake のインストールは、Composer で』と書いてあるので、まずはComposer から導入します。

  WS000072

 ・「venderディレクトリを作成するルートディレクトリ」で、curl コマンドで Composer をインストール
   →[ユーザ名@ホスト名 app]$ curl -s http://getcomposer.org/installer | php

   CakePHP-2.3.8-Screenshot009

3. composer.json ファイルを作成し、boost_cake をインストールする


 ・以降、こちらのサイト(http://slywalker.github.io/cakephp-plugin-boost_cake/)の手順通りに進めます。
 ・app/composer.json を作成
 {
   "require":{
    "slywalker/boost_cake": "*"
   }
 }

 ・composer の実行
   →[ユーザ名@ホスト名 app]$ php composer.phar install


    CakePHP-2.3.8-Screenshot010

   →無事 BoostCake は、app/Plugin 下にセットアップされました。

4. プラグインの読み込みを追記する


 ・cakephp238/app/Config/bootstrap.php へ、BoostCake の情報を追記  
 CakePlugin::load(‘BoostCake’);


5. ヘルパー、Authコンポーネントへの追加


 ・app/Controller/AppController.php へ、以下を追加。
  public $components = array(
    'Acl',
    'Auth' => array(
       'authorize' => array(
           'Actions' => array('actionPath' => 'controllers')
       ),
       'flash' => array(
           'element' => 'alert',
           'key' => 'auth',
           'params' => array(
               'plugin' => 'BoostCake',
               'class' => 'alert-error'
           )
       )
    ),
    'Session',
    'DebugKit.Toolbar'
 );
 public $helpers = array(
    'Session',
    'Html' => array('className' => 'BoostCake.BoostCakeHtml'),
    'Form' => array('className' => 'BoostCake.BoostCakeForm'),
    'Paginator' => array('className' => 'BoostCake.BoostCakePaginator'),
 );

6. ACLの登録(ACLを使用している場合)


 ・Plugin-ACLを使用している場合、アクションへの権限を許可しておくと、WEBブラウザで、ホスト名/cakephp238/boost_cake にアクセスして、各リファレンスが確認出来ます。

 ※Plugin-Acl の導入についてはこちら→CakePHP-2.3.8 に Plugin–Acl を導入する。

WEBブラウザで、ホスト名/cakephp238/admin/acl/acos にアクセスし、Sychronaize ACOs をクリック
  CakePHP-2.3.8-Screenshot011

BoostCakeのアクションが追加される。

  CakePHP-2.3.8-Screenshot012

権限を付与

  CakePHP-2.3.8-Screenshot014

7. default.ctp へ適用してみる


 ・CakePHP の View に適用される default.ctp へ、BoostCake を適用します。
    → app/View/Layouts/default.ctp を編集

 編集前の「Posts index」表示:

  boostcake-Screenshot001


  • head の修正(script の追記、css の追記)
 <head>
     <?php echo $this->Html->charset(); ?>
     <title>
        <?php echo $cakeDescription ?>:
        <?php echo $title_for_layout; ?>
     </title>
     <?php
        echo $this->Html->meta('icon');

        echo $this->Html->script('jquery-1.7.2.min');
        echo $this->Html->script('bootstrap');

        echo $this->Html->css('cake.generic');
        echo $this->Html->css('bootstrap');
        echo $this->Html->css('bootstrap-responsive');

        echo $this->fetch('meta');
        echo $this->fetch('css');
        echo $this->fetch('script');
     ?>
 <style>
   body {
      padding-top: 60px;
   }
   .affix {
      position: fixed;
      top: 60px;
      width: 220px;
   }
   </style>

 </head>

  • body の修正( boostCake の ナビを追記)
 <body>

   <div class="navbar navbar-fixed-top">
      <div class="navbar-inner">
         <div class="container">
            <?php echo $this->Html->link('Posts', array(
                'plugin' => 'BoostCake',
                'controller' => 'posts',
                'action' => 'index'
             ), array('class' => 'brand')); ?>
         </div>
      </div>
   </div>
編集後の「Posts index」表示:

   boostcake-Screenshot006

8. BoostCake導入後のForm


 ・編集前の「login」ページ:ホスト名/cakephp238/users/login

   boostcake-Screenshot002

 ・編集後の「login」ページ:ホスト名/cakephp238/users/login

    boostcake-Screenshot007

9. 表示が崩れてしまったページの対応


 ・各Viewページが、崩れてしまっていました。

 ・編集前の「Posts View」ページ:ホスト名/cakephp238/posts/view

  boostcake-Screenshot003

 ・編集後の「Posts View」ページ:ホスト名/cakephp238/posts/view

  boostcake-Screenshot008

 ・デフォルトの「dl、dt、dd」 タグ を、無効にすることで、回避しました。
  /** Scaffold View **/
  /*dl {
     line-height: 2em;
     margin: 0em 0em;
     width: 60%;
  }
  dl dd:nth-child(4n+2),
  dl dt:nth-child(4n+1) {
     background: #f4f4f4;
  }

  dt {
     font-weight: bold;
     padding-left: 4px;
     vertical-align: top;
     width: 10em;
  }
  dd {
     margin-left: 10em;
     margin-top: -2em;
     vertical-align: top;
  }
  */
boostcake-Screenshot009
 ※とりあえず、この方法で対応しましたが、CSSのコメントアウト以外でどうにかしたいものです。

 ・詳細な編集については、http://slywalker.github.io/cakephp-plugin-boost_cake/bootstrap2.html を参考に。


以上です。

2013年7月25日木曜日

CakePHP-2.3.8 に Plugin–Acl を導入する。

 

CentOS + Apache + MySQL + PHP & CakePHP-2.3.8 に、プラグイン「Plugin Acl」 を導入する。


※※2013/8/22 7.(6)追記:app/Controller/AppController.phpの編集が漏れていたため

CakePHPのアクセス制御リスト「ACL(Access Control List)」を、GUIで操作できるプラグインを導入します。
  ※1:CakePHP-2.3.8 の導入方法は、前々回記事参照→CakePHP-2.3.8のセットアップ
  ※2:CakePHP-2.3.8 は、/var/www/html/cakephp238/ にセットアップされています。
  ※3:CakePHP公式サイトの「ブログチュートリアル」を試す予定です。
    → http://book.cakephp.org/2.0/ja/getting-started.html#id2
  ※4:参考にさせて頂いたサイト
 

1.プラグインダウンロードサイトから、ZIPファイルをダウンロードし、解凍

http://www.alaxos.net/blaxos/pages/view/download_plugin_acl_2.0 
   →2012-09-24 : Download ACL Plugin 2.2.0 をダウンロードします。
    ※上記バージョンで、2.3.8 で無事に実行出来ました。
 

2. フォルダ名のリネーム&アプリケーションのフォルダに移動

・解凍したフォルダ名を 「Acl」 に変更します。
  ・以下のフォルダ配下に移動します。
   →/var/www/html/cakephp238/app/Plugin/
 

3. プラグインの読み込みを追記、core.phpの確認

・cakephp238/app/Config/bootstrap.php へ、Aclの情報を追記  
   最下段: CakePlugin::load(‘Acl’);
  
  ・cakephp238/app/Config/core.php の、Routing.prefixes を有効化
   124行目: Configure::write(‘Routing.prefixes’, array(‘admin’));
  
  ・cakephp238/app/Config/core.php の、Acl関連 を有効化
   235行目: Configure::write(‘Acl.classname’, ‘DbAcl’);
   236行目: Configure::write(‘Acl.database’, ‘default’);

4. ACL用のテーブルを作成

・ユーザ情報テーブル:users を作成する。SQLは以下の通り。
    CREATE TABLE `users` (
      `id` int(11) NOT NULL auto_increment,
      `username` varchar(50) default NULL,
      `password` varchar(50) default NULL,
       `group_id` int(11) NOT NULL,
       `created` datetime default NULL,
       `modified` datetime default NULL,
       PRIMARY KEY  (`id`)
   ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

  
  ・グループ情報テーブル:groups を作成する。SQLは以下の通り。
   CREATE TABLE `groups` (
     `id` int(11) NOT NULL auto_increment,
     `name` varchar(50) NOT NULL,
     `created` datetime default NULL,
     `modified` datetime default NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

 

5. MVCを作成(CakePHPのbakeを使用)

・以下のコマンドを実行します。(※今回の環境では、/var/www/html/cakephp238/app/)
    [ユーザ名@ホスト名 app]$ php Console/cake.php bake all
     → users と groups の Model / View / Controller が作成されます。
   
    ※bake については、こちら:
              →http://book.cakephp.org/2.0/ja/console-and-shells/code-generation-with-bake.html

6. ACL関連テーブルの作成

・以下のコマンドを実行します。(※今回の環境では、/var/www/html/cakephp238/app/)
    [ユーザ名@ホスト名 app]$ php Console/cake.php schema create DbAcl
    
    → テーブルacos 、 aros 、 aros_acos が作成されます。

  • ARO:Access Request Object - オブジェクトを呼び出す側(使用する側)が登録されるtable
  • ACO:Access Control Object - 呼び出される(使用される)オブジェクトが登録されるtable
  • aros_acos: 上記2ファイルの権限設定が登録されるtable


7.  ACLの有効化、グループとユーザを登録するため Model / View / Controller 修正

(1) app/Model/User.php
   ・追記:
    App::uses(‘AuthComponent’, ‘Controller/Component’);
   ・class User extends AppModel { 内に以下を追記:
    public $actsAs = array('Acl' => array('type' => 'requester'));

    public function parentNode(){
         if(!$this->id && empty($this->data)){
             return null;
         }
         if(isset($this->data['User']['group_id'])){
             $groupId = $this->data['User']['group_id'];
          } else {
             $groupId = $this->field('group_id');
          }
         if(!$groupId){
             return null;
          } else {
              return array('Group' => array('id' => $groupId));
          }
    }


    public function beforeSave($options = array()){
         $this->data['User']['password'] = AuthComponent::password($this->data['User'][‘password’]);
        return true;
    }

        ※$belongsTo に ‘Group’ が設定されていること

  (2) app/Model/Group.php
   ・class Group extends AppModel { 内に以下を追記:
       public $actsAs = array('Acl' => array('type' => 'requester'));

      public function parentNode(){
           return null;
       }

     ※$hasMany に ‘User’ が設定されていること

  (3) app/View/Users/login.ctp を作成
   <?php
       echo $this->Form->create('User',array('action' => 'login'));
        echo $this->Form->inputs(array(
           'legend' => __('Login'),
            'username',
            'password'
        ));
        echo $this->Form->end('Login');
   ?>


  (4) app/Controller/UsersController.php
   ・class UsersController extends AppController { 内に以下を追記:
    public function beforeFilter(){
          parent::beforeFilter();
          $this->Auth->allow();
    }

    ※function beforeFilter() は、全てのアクションを開放するメソッドなので、Group/User 登録後に削除する
    public function login(){
          if($this->request->is('post')){
              if($this->Auth->login()){
                  $this->redirect($this->Auth->redirect());
              } else {
                  $this->Session->setFlash('Your username or password miss mach.');
              }
          }
     }

    public function logout(){
          //empty
    }


 (5) app/Controller/GroupsController.php
   ・class GroupsController extends AppController { 内に以下を追記:
    public function beforeFilter(){
          parent::beforeFilter();
          $this->Auth->allow();
    }

    ※function beforeFilter() は、全てのアクションを開放するメソッドなので、Group/User 登録後に削除する

 (6) app/Controller/AppController.php ※2013/8/22 追記(漏れてました)
   ・class AppController extends AppController { 内に以下を追記:
    public  $components = array(
'Acl',
'Auth' => array(
'authorize' => array(
'Actions' => array('actionPath' => 'controllers')
),
'flash' => array(
'element' => 'alert',
'key' => 'auth',
'params' => array(
'class' => 'alert-error'
)
)
),
'Session',
);

public $helpers = array(
'Session',
'Html' ,
'Form' 
);

public function beforeFilter() {
$this->Auth->loginAction = array('controller' => 'users','action' => 'login');
$this->Auth->logoutRedirect = array('controller' => 'users','action' => 'login');
$this->Auth->loginRedirect = array('controller' => 'posts','action' => 'index');

}

8. グループの登録

・WEBブラウザで、ホスト名/cakephp238/groups/add にアクセス
CakePHP-2.3.8-Screenshot005
  グループを登録します。
   登録例):administrators, managers, users
 ※正常に登録されたら、aros テーブルに Group が登録されていることを確認してください。
  → 私は初め、7. の修正内容が誤っていたため、aros テーブルに登録されず、このあとの ユーザ登録でエラーが発生し、丸1日ハマりました・・・

9. ユーザの登録

・WEBブラウザで、ホスト名/cakephp238/users/add にアクセス
CakePHP-2.3.8-Screenshot006
  ・ 8. で登録した各グループに、ユーザを登録します。
   登録例):adminuser, manageuser, useruser
 ※正常に登録されたら、aros テーブルに User が登録されていることを確認してください。

10. Plugin Acl のbootstrap.php を修正する

・app/Plugin/Acl/Config/bootstrap.php
   14行目 Role を Group に変更:Configure :: write('acl.aro.role.model', 'Group');
   21行目 id を 追記:Configure :: write('acl.aro.role.primary_key', 'id');
   28行目 group_id を 追記:Configure :: write('acl.aro.role.foreign_key', 'group_id');
   33行目 追記なし:Configure :: write('acl.aro.user.model', 'User');
   40行目 id を 追記:Configure :: write('acl.aro.user.primary_key', 'id');
   45行目 追記なし:Configure :: write('acl.aro.role.display_field', 'name');
   51行目 追記なし:Configure :: write('acl.role.access_plugin_role_ids', array());
   57行目 追記なし:Configure :: write('acl.role.access_plugin_user_ids', array(1));
   63行目 追記なし:Configure :: write('acl.user.display_name', "User.username");
   68行目 追記なし:Configure :: write('acl.check_act_as_requester', true);
   73行目 追記なし:App :: build(array('locales' => App :: pluginPath('Acl') . DS . 'locale'));
   78行目 追記なし:Configure :: write('acl.gui.roles_permissions.ajax', true);
   83行目 追記なし:Configure :: write('acl.gui.users_permissions.ajax', true);
        ※この後、Plugin Acl のGUI が機能しない場合、上記を app/Config/bootstrap.php に追記してください。

 

11. Plugin Acl の各Controller を修正する

・アクセス権限を、一時的に開放します。
  (1) app/Plugin/Acl/Controller/AclAppController.php
   function beforeFilter() { 内に追記: $this->Auth->allow();

  (2) app/Plugin/Acl/Controller/AclController.php
   追記:
    public function beforeFilter(){
        parent::beforeFilter();
         $this->Auth->allow();
    }


  (3) app/Plugin/Acl/Controller/AcosController.php
   追記:
    public function beforeFilter(){
        parent::beforeFilter();
         $this->Auth->allow();
    }


  (4) app/Plugin/Acl/Controller/ArosController.php
   function beforeFilter() { 内に追記: $this->Auth->allow();

 

12. Plugin Acl で、ACO を登録する

・WEBブラウザで、ホスト名/cakephp238/admin/acl/acos にアクセス
  ・未登録の各アクションが一覧で表示され、ページ下部に 「Synchronize ACOs」があるので、クリックします。
CakePHP-2.3.8-Screenshot007
ACL plugin のGUI画面が表示されたら、OKです。
各グループ単位、ユーザ単位に、各アクションの権限付与がGUIで操作できます。

以上です。

CakePHP-2.3.8 にPlugin - DebugKit を導入する。


CentOS + Apache + MySQL + PHP & CakePHP-2.3.8 に、プラグイン「DebugKit」 を導入する。

※CakePHP-2.3.8 の導入方法は、前回記事参照→CakePHP-2.3.8のセットアップ
CakePHP-2.3.8-Screenshot002
上記スクリーンショットで、黄色で表示されているプラグイン「DebugKit」を導入します。
※1:CakePHP-2.3.8は、/var/www/html/cakephp238/ にセットアップされています。
※2:WEBブラウザで、ホスト名/cakephp238 にアクセスしています。

1. githubから zip をダウンロードし、解凍

・以下のサイトにある Download ZIP で、zipファイルをダウンロードし、任意のフォルダに解凍します。
   →https://github.com/cakephp/debug_kit

2. フォルダ名のリネーム&アプリケーションのフォルダに移動

・解凍したフォルダ名を 「DebugKit」 に変更します。
  ・以下のフォルダ配下に移動します。
   →/var/www/html/cakephp238/plugins/

3. プラグインの読み込みを追記、デバッグレベルを設定

・cakephp238/app/Config/bootstrap.php へ、DebugKitの情報を追記
   ※編集前にバックアップを取る(ファイルをコピーしておく)
   最下段: CakePlugin::load(‘DebugKit’);
  ・cakephp238/app/Config/core.php の debug モードを設定
   ※編集前にバックアップを取る(ファイルをコピーしておく)
   36行目: Configure::write(‘debug’, 2);

4. アプリケーションコントローラーで、DebugKitを読み込む

・cakephp238/app/Controller/AppController.php に追記
   class AppController extends Controller {
     public $components = array(‘DebugKit.Toolbar’);
   }

5. 標準のデバッグ機能で出力されるSQL結果を、非表示に変更

・cakephp238/app/View/Layouts/default.php から、以下の行を削除
     59行目:<?php echo $this->element(‘sql_dump’); ?>

6.WEBブラウザで、http://ホスト名/cakephp238 へアクセス

CakePHP-2.3.8-Screenshot004
DebugKit plugin が 緑になりました。
以上です。

CakePHP-2.3.8のセットアップ

PHP+MySQLのフレームワーク『CakePHP』、平成25年7月24日時点の最新版『2.3.8』を以下の環境にセットアップしました。

【作業環境:Windows7 64bit にインストールした VMPlayer 上に構築】
  •  OS : CentOS 6.4
  •  WEB-Server : Apache 2.2.15
  •  DB : MySQL 5.1.69
  •  PHP : PHP 5.3.3
※以前、学習用に CakePHP-2.1.0 をセットアップ済なので、PHP-MySQL で必要な環境は揃っている状態

1.CakePHP-2.3.8 を取得

・以下のサイトから、zipファイルをダウンロードし、全て展開する
  →https://github.com/cakephp/cakephp/releases/tag/2.3.8
 

2.WEBサーバのドキュメントへコピー

・CentOS 6.4 のドキュメントフォルダ(/var/www/html/)にフォルダ(cakephp238)を作成して、WinSCP でコピー
  → /var/www/html/cakephp238
  ※所有者を変更する # chown –R ユーザ名. /var/www/html/cakephp238
 

3.httpd.conf の修正

・cakephp238フォルダのredirectを有効にする。
    編集するファイル→ /etc/httpd/conf/httpd.conf
    ファイルの最後に以下を追記する
     <Directory “/var/www/html/cakephp238”>
                 AllowOverride All
     </Directory>
      ※編集が終わったら、サービスを再起動しておく(# service httpd restart
 

4.database、tableの作成

・MySQL に database と user を作成
     detabase 例): blog_sample
     user 例): bloguser / password
  ・上記MySQL database に table を作成
     table 例): posts
           ※今回は、CakePHP公式サイトの「ブログチュートリアル」を試す予定です。
     → http://book.cakephp.org/2.0/ja/getting-started.html#id2
  ・cakephp238/app/Config/database.php の内容を 上記 database 情報に変更する
   ※編集前にバックアップを取る(ファイルをコピーしておく)
    ‘login’ => ‘bloguser’,
    ‘password’ => ‘password’,
    ‘database’ => ‘blog_sample’,
         ‘encoding’ => ‘utf8’,  ※コメントを解除する
 

5.CakePHP定義ファイルの修正

    ・cakephp238/app/Config/core.php の セキュリティ情報を修正
   ※編集前にバックアップを取る(ファイルをコピーしておく)
   ・197行目:Configure::write(‘Security.salt’, ‘ここの文字列を推測されない値に編集’);
   ・202行目:Configure::write(‘Security.cipherSeed’, ‘ここの数字を、推測されない値に編集’);
 

6.tmpフォルダの権限修正

    ・書き込み権限を与える # chmod -R 0777 /var/www/html/cakephp238/app/tmp
 
7.WEBブラウザで、http://ホスト名/cakephp238 へアクセス
CakePHP-2.3.8-Screenshot002
以上です。

2013年7月12日金曜日

LAMPで開発することになりました。


前回のBlog更新(5/3)から、2ヶ月経つ間に、環境が激変しました。
これまで、派遣時代を含めて14年間常駐した会社との契約が6月末で終了となり、他の会社で新たに「LAMP開発」に携わることになったのです。
(LAMPによる業務システム開発プロジェクトに、フリーランスとして参加します)
5月中旬に契約することが確定したため、以降は引き継ぎなどで忙しく、セットアップしたXAMPPも使わないまま・・・
7月から、ローカル環境構築や、PHPフレームワーク(CakePHPです)などの開発技術習得で、早くも2週間が過ぎてしました。
環境構築は、以下の通り。(本当は細かくBlogに残せれば良かったのですが。)
  • VMware Player (無償版) :テスト用仮想環境構築
  • CentOS 6.4 :OS
  • Apache :WEBサーバ
  • MySQL :データベース
  • CakePHP :PHPフレームワーク
今後、なるべくBlogに残して行きたいと思います。