SVNマージの仕方
この手順でばっちりです。
2013年5月29日水曜日
2013年5月24日金曜日
[CakePHP]ブラウザを閉じでもログイン状態を保持する方法
このぺージを参考にさせて頂く。
自動ログイン2
ただし、自分のサイトの場合はもっとシンプルにした。
・passportsテーブルは作らず、Usersテーブルにpassportカラムを追加
→テーブル作る必要ない。
・有効期限カラムは必要ないと思う。
→Cookie自体に有効期限があるから、わざわざDBの値とチェックする必要ない。
・__passportDeleteや__passportWriteのメソッドは作らない。
→Auth->login()やAuth->logout()の直後に書けばよいだけ。
・cookieのチェックはapp_controllerのbeforeFilterにて行う。
→どのぺージにランディングされてもチェックしてくれるから。
UsersControllerのlogin()アクションあたり。当然この前に、$this->expire(cookieの有効期限)の設定やpassportカラムへSecurity::generateAuthKey()などを使った値の保存はしておく。
ちなみに、上記のサイトだと、「
以下のように、もしログインされていなかったら→Cookieにパスポートがあるか確認。
というのをどのぺージでもするように、app_controllerのbeforeFilterで以下をやる。
自動ログイン2
ただし、自分のサイトの場合はもっとシンプルにした。
・passportsテーブルは作らず、Usersテーブルにpassportカラムを追加
→テーブル作る必要ない。
・有効期限カラムは必要ないと思う。
→Cookie自体に有効期限があるから、わざわざDBの値とチェックする必要ない。
・__passportDeleteや__passportWriteのメソッドは作らない。
→Auth->login()やAuth->logout()の直後に書けばよいだけ。
・cookieのチェックはapp_controllerのbeforeFilterにて行う。
→どのぺージにランディングされてもチェックしてくれるから。
UsersControllerのlogin()アクションあたり。当然この前に、$this->expire(cookieの有効期限)の設定やpassportカラムへSecurity::generateAuthKey()などを使った値の保存はしておく。
ちなみに、上記のサイトだと、「
$this
->Cookie->write(
'User'
,
$cookie
, true,
"+ "
.
$this
->expires); 」となっていたが、"+"があるとうまく動作しなかったのではずした。Cakeのバージョン違いだろうか。
$this->Auth->login($user); if($this->Auth->_loggedIn){ $pass = array('Passport'=>$this->Auth->user('passport')); $this->Cookie->write('pass', $pass, true,$this->expires); }
以下のように、もしログインされていなかったら→Cookieにパスポートがあるか確認。
というのをどのぺージでもするように、app_controllerのbeforeFilterで以下をやる。
if(!$this->Auth->_loggedIn){ $cookiePassport=$this->Cookie->Read('pass'); if(!empty($cookiePassport)){ $cookieUser=$this->User->find('first',array('conditions'=>array( 'User.passport'=>$cookiePassport['Passport'] ))); if(!empty($cookieUser)){ $this->Auth->login($cookieUser); } } }
[CakePHP]'Security.cipherSeedには数字を設定しなきゃだめ。
$this->Cookie->write()メソッドを使用した際に以下のエラーが画面に表示された。
Security.cipherSeedにアルファベットが入っていたため。
srand() expects parameter 1 to be long
Security.cipherSeedにアルファベットが入っていたため。
srand() expects parameter 1 to be long
2013年5月16日木曜日
[AWS]RDSのmult-AZは無料使用枠に収まらない
ということなので、無料で使いたい人は、multi-AZは使用しないようにしましょう。
http://aws.amazon.com/jp/free/
また、AWSを使用する人は、価格が従量制であるが故、こまめにAccount Activityで値段を確認したほうがいいです。
750 時間の Amazon RDS Single-AZ マイクロ DB インスタンスの使用(MySQL、Oracle BYOL または SQL Server(SQL Server Express Edition を実行中)の実行用) - DB インスタンスを毎月継続的に実行するのに十分な時間
http://aws.amazon.com/jp/free/
また、AWSを使用する人は、価格が従量制であるが故、こまめにAccount Activityで値段を確認したほうがいいです。
2013年5月15日水曜日
[AWS]Route53とoutlook.comで独自ドメインメールを使う
outlook.comでは、google Apps等とは違い、独自ドメインでのメール利用を無料で提供できるので、使用した。
なお、同ドメインのWEBサーバはAWS上に配置しているので、DNSはRoute53を使用することにした。
※事前に独自ドメインを取得して下さい。
基本的には以下サイトに沿って進める。
1.【Google Apps(無償版)難民救済企画】Outlook.comで独自ドメインメールを無料運用してみたよ(Gmailへの転送もOK)
ただし、ムームーDNSの設定は行わずに、Route53で設定を行う。
以下サイトの<メールの設定>のみ行う。他の作業はしなくてよい。
2.Amazon Route53をWindows Live独自ドメイン用のDNSサーバーとして利用する ~基本設定~
この設定が終わったら、1のサイトの「ムームーDNS」設定後の作業から行えば、メールの送信が行えるようになる。
なお、同ドメインのWEBサーバはAWS上に配置しているので、DNSはRoute53を使用することにした。
※事前に独自ドメインを取得して下さい。
基本的には以下サイトに沿って進める。
1.【Google Apps(無償版)難民救済企画】Outlook.comで独自ドメインメールを無料運用してみたよ(Gmailへの転送もOK)
ただし、ムームーDNSの設定は行わずに、Route53で設定を行う。
以下サイトの<メールの設定>のみ行う。他の作業はしなくてよい。
2.Amazon Route53をWindows Live独自ドメイン用のDNSサーバーとして利用する ~基本設定~
この設定が終わったら、1のサイトの「ムームーDNS」設定後の作業から行えば、メールの送信が行えるようになる。
2013年5月8日水曜日
[AWS]CakePHP+Elastic Beanstalk+Route53+ムームードメインで独自ドメインを使用する方法
ムームードメインのDNSサーバを使用することもでるが、AWS内のサービスで完結できるものはしておいたほうが、よさそうなので、Route53を使うことにした。
あと、Route53だとwwwなしの短いURLアクセスできるようにできるとのこと。(こことここ参照)
・Elasctic Beanstalkでの環境構築
①Hosted Zoneの作成(Create Hosted Zoneボタンから)
②Record Setの作成(以下の2レコードを作成)
・www無し(Nameに何も入れない)
・www有り(Nameに'www'と入力)
※Alias Targetは対象環境のELBのA Recordを指定
③4つのネームサーバーを控えておく。
Record SetsのType列が'NS'である行の'Value列'に入った4つのサーバ名
これでRoute53側の作業は終わり
②「取得したドメインで使用する」を選択し、Route53で控えた4つのネームサーバを入力し保存する。
※注意点としてRoute53でコピーした段階ではネームサーバ名の最後にドットが付くが、本手順で 入力する際にはそのドットを削除すること。そうじゃないと、エラーとなって保存されない。
ex aaaa.awsdns-99.net. → aaa.awsdns-99.net
③ 15分程度待つと、あなたの独自ドメインにwww有りと無しの両方でアクセスできるようになる。
この段階では、www有りと無しの両方のURLでアクセスすることができる。しかし、SEO的にはどちらかに統一したほうがよいとされている。(こことかで)
個人的には短いほうがすきなので、www無しに統一する。
ということで、CakePHP内の.htaccessをいじる。
CakePHPのディレクトリ内には.htaccessがたくさんあるが、どれをいじればよいのかは、どうやら環境によって違うようだ。
参考URL7によると、DocumentRootが設定されている値に依存するようだ。
自分の場合は、[cakephpが入るフォルダ]/app/webroot/直下の.htaccessをいじったら、挙動が変化したので、これをいじっていった。 [cakephpが入るフォルダ]直下の.htaccessをいくらいじっても挙動は変わらなかった。
以下が変更後の状態。(当然mydomainやmydomain.jpはあなたのものに置き換えてね)
3~4行目は、URLにwwwがある場合は、 無しにする部分。
5~6行目は、 ElasticBeansTalkにデフォルトで付与されるURLにアクセスされた場合も、独自ドメインのURLに変更するようにした。
この設定の良いところは、本番環境以外では動作しないところ。つまり、本番環境と開発環境で同じソースを使用できる。開発環境では、www有りとか無しとか考えなくていいからね。
<豆知識>
'%1'はどうやら直近のRewriteCondで正規表現パターン(丸括弧でかこまれた部分)にヒットしたものが入るっぽい。
'$1'はおそらくRewriteRuleの一つ目の正規表現パターンにマッチした部分がはいるっぽい。'$2'は二目の正規表現パターンにマッチしたもの。
Apacheって奥深そう!
[参考URL]
1.Using Custom Domains with AWS Elastic Beanstalk
2.How to Create Alias Resource Record Sets
3.営業でも簡単!Route 53の基本設定
4.Elastic Beanstalkで立ち上げたアプリにRoute53経由で独自ドメイン(サブドメイン無し)を割り振る
5.How to make a 301 redirect for incomming requests from non-www to www in CakePHP
6.Generic non-www to www (and vice versa) 301 redirect using .htaccess
7.Redirect www to non-www
あと、Route53だとwwwなしの短いURLアクセスできるようにできるとのこと。(こことここ参照)
1.事前作業
・ムームードメインでの独自ドメインの取得・Elasctic Beanstalkでの環境構築
2.Route53での設定
参考URL1と2に書いてありますが、以下の流れ。①Hosted Zoneの作成(Create Hosted Zoneボタンから)
②Record Setの作成(以下の2レコードを作成)
・www無し(Nameに何も入れない)
・www有り(Nameに'www'と入力)
※Alias Targetは対象環境のELBのA Recordを指定
③4つのネームサーバーを控えておく。
Record SetsのType列が'NS'である行の'Value列'に入った4つのサーバ名
これでRoute53側の作業は終わり
3.ムームードメインでの設定(レジストラのネームサーバー情報を更新する)
①コンパネ→ドメイン操作→ネームサーバ設定変更というように遷移する。②「取得したドメインで使用する」を選択し、Route53で控えた4つのネームサーバを入力し保存する。
※注意点としてRoute53でコピーした段階ではネームサーバ名の最後にドットが付くが、本手順で 入力する際にはそのドットを削除すること。そうじゃないと、エラーとなって保存されない。
ex aaaa.awsdns-99.net. → aaa.awsdns-99.net
③ 15分程度待つと、あなたの独自ドメインにwww有りと無しの両方でアクセスできるようになる。
4.CakePHPの設定
ここからは参考URL5,6,7参照のこと。この段階では、www有りと無しの両方のURLでアクセスすることができる。しかし、SEO的にはどちらかに統一したほうがよいとされている。(こことかで)
個人的には短いほうがすきなので、www無しに統一する。
ということで、CakePHP内の.htaccessをいじる。
CakePHPのディレクトリ内には.htaccessがたくさんあるが、どれをいじればよいのかは、どうやら環境によって違うようだ。
参考URL7によると、DocumentRootが設定されている値に依存するようだ。
自分の場合は、[cakephpが入るフォルダ]/app/webroot/直下の.htaccessをいじったら、挙動が変化したので、これをいじっていった。 [cakephpが入るフォルダ]直下の.htaccessをいくらいじっても挙動は変わらなかった。
以下が変更後の状態。(当然mydomainやmydomain.jpはあなたのものに置き換えてね)
3~4行目は、URLにwwwがある場合は、 無しにする部分。
5~6行目は、 ElasticBeansTalkにデフォルトで付与されるURLにアクセスされた場合も、独自ドメインのURLに変更するようにした。
この設定の良いところは、本番環境以外では動作しないところ。つまり、本番環境と開発環境で同じソースを使用できる。開発環境では、www有りとか無しとか考えなくていいからね。
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] RewriteCond %{HTTP_HOST} ^mydomain\.elasticbeanstalk\.com$ [NC] RewriteRule ^(.*)$ http://mydomain.jp/$1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule>
<豆知識>
'%1'はどうやら直近のRewriteCondで正規表現パターン(丸括弧でかこまれた部分)にヒットしたものが入るっぽい。
'$1'はおそらくRewriteRuleの一つ目の正規表現パターンにマッチした部分がはいるっぽい。'$2'は二目の正規表現パターンにマッチしたもの。
Apacheって奥深そう!
[参考URL]
1.Using Custom Domains with AWS Elastic Beanstalk
2.How to Create Alias Resource Record Sets
3.営業でも簡単!Route 53の基本設定
4.Elastic Beanstalkで立ち上げたアプリにRoute53経由で独自ドメイン(サブドメイン無し)を割り振る
5.How to make a 301 redirect for incomming requests from non-www to www in CakePHP
6.Generic non-www to www (and vice versa) 301 redirect using .htaccess
7.Redirect www to non-www
登録:
投稿 (Atom)