儲かる気がしないスマホアプリ開発日誌

脱サラと儲けるのが目的でスマホアプリを一人で寂しく開発しております。 主に開発ネタと愚痴を中心に日々の日記を書きます。

カテゴリ: さくらインターネット

昨晩無事にリプレース作業のメンテナンスが完了しました。

今回メンテナンスで行ったこと、問題だったことを振り返ります。
メンテンスしたアプリはWebView形式のアプリなので、サーバーサイドはほとんどWEBサービスです。


1)リリース(デプロイ)環境を「deproyer」に変更

今までrsyncでコピーしていたけど、depoyerにした。(Deployer — Deployment Tool for PHP
デプロイの仕組みはpuppetやCapistranoが有名だけど、新しいこと、学習コストが低いこと、PHPで構成されていることの3点でdeployerに決めた。

デプロイ環境を構成することにより、プロダクション(本番)とステージング(リハーサル)環境へのリリースが捗ります。また複数サーバーになった場合のリリースもサーバーリストにサーバーを追加するだけなので楽になるのです。


2) メンテナンス画面の表示

アプリにメンテナンス中であることの表示の仕組みを準備していなかったので入れました。
あんまり時間をかけたくなかったので、プラグイン的な何かを探し求めたところピッタリなものを見つけました。

Maintenance plugin for CakePHP 1.3 

嬉しいことにCakePHP1.3系も用意してくれていたのでした。
ちなみにCakePHP2系がメインですね。

Maintenance plugin for CakePHP2.x 

実装方法などは別の投稿でやろうかと。


3) CakePHP1.3系のSessionが使えなくなった

メンテナンス中の動作確認で表示は問題なかったけど、データを投入するとCakePHPのセッションリダイレクトが使えずアプリが止まったようになってしまった。
ちゃんと開発環境やステージング環境で確認しておけばメンテナンス中にトラブルことはなかったのに・・・。
ステージング用のアプリを用意するのが面倒だったのが原因。
普通の会社の仕事ならありえない運用でこんなのやらかしたら始末書ものですね。
次回こうならないようにテストはちゃんと行おう。

原因としては旧環境がPHP5.4、新環境はPHP5.5によるCakePHPの挙動の違いでした。
これの詳細も別投稿で。


以上今回のリプレースメンテナンスのやったことと、振り返り(反省)でした。

 
このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr Clip to Evernote

「さくらのVPS 512」の解約ボタンをポチってきた。
解約ボタンポチるって新しいなw

1年プランなのでサーバー停止は12月31日だった。
今月末かと勘違いしていて焦ってリプレース作業を進めていたよ。
のんびりやろっと。

実は有料アプリのサーバーだから慎重にやる必要があるんだよね。

サーバー移転の手順とかテクニックはまた後日書こうかと思います。 
 
このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr Clip to Evernote

ネタがあるのでシリーズ化。

さくらからのリプレース先は、ServersMan@VPS です。
メモリ1GB、HDD50GBで467円!安い!貧乏スタートアップの味方!
値段だけで言うとさくらのVPSの同プランと比べて半額なのです。

アプリに人気出てサーバーの負荷が増えたらもちろんもっといいプランにするよ!
夢はAWSでクラスタ組みたいお。。

で、サクッとLAMP環境を作ってAPのプログラムを動かしてみたら、、
エラーが山盛り出て驚きを隠せない。
 
Strict Standards: Non-static method App::core() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/debugger.php on line 429

Strict Standards: Non-static method String::insert() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/debugger.php on line 398

Warning: Illegal string offset 'file' in /pub/www/html/cakephp/cake/libs/debugger.php on line 622

Warning: Illegal string offset 'line' in /pub/www/html/cakephp/cake/libs/debugger.php on line 622

Strict Standards: Non-static method App::core() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/debugger.php on line 429

Strict Standards: Non-static method String::insert() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/debugger.php on line 398

Strict Standards: Non-static method String::insert() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/debugger.php on line 398

Strict Standards: Non-static method String::insert() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/debugger.php on line 398

Strict Standards: Non-static method String::insert() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/debugger.php on line 398

Strict Standards: Non-static method String::insert() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/debugger.php on line 398

Strict Standards: Non-static method String::insert() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/debugger.php on line 398

Strict Standards: Non-static method String::insert() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/debugger.php on line 398

Strict Standards: Non-static method String::insert() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/debugger.php on line 398

Strict Standards: Non-static method String::insert() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/debugger.php on line 398

Strict Standards: Non-static method Configure::read() should not be called statically in /pub/www/html/cakephp/cake/basics.php on line 213

Strict Standards: Non-static method Configure::getInstance() should not be called statically in /pub/www/html/cakephp/cake/libs/configure.php on line 155

Strict Standards: Non-static method String::insert() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/debugger.php on line 657

Strict Standards: Non-static method String::insert() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/debugger.php on line 657

Strict Standards: Non-static method String::insert() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/debugger.php on line 668

Strict Standards: Non-static method String::insert() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/debugger.php on line 668

Strict Standards: Non-static method String::insert() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/debugger.php on line 673
Warning (2): strtotime() [function.strtotime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. [CORE/cake/libs/cache.php, line 597]
Strict Standards: Non-static method Configure::read() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/debugger.php on line 308

Strict Standards: Non-static method Configure::getInstance() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/configure.php on line 155

Strict Standards: Non-static method CakeLog::write() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/debugger.php on line 311

Strict Standards: Non-static method String::insert() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/debugger.php on line 311

Strict Standards: Non-static method CakeLog::getInstance() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/cake_log.php on line 230

Strict Standards: Non-static method App::import() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/cake_log.php on line 180

Strict Standards: Non-static method App::getInstance() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/configure.php on line 909

Strict Standards: Non-static method Cache::read() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/configure.php on line 982

Strict Standards: Non-static method Cache::getInstance() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/cache.php on line 345

Strict Standards: Non-static method Configure::read() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/cache.php on line 520

Strict Standards: Non-static method Configure::getInstance() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/configure.php on line 155

Strict Standards: Non-static method Inflector::underscore() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/cache.php on line 699

Strict Standards: Non-static method Inflector::getInstance() should not be called statically, assuming $this from incompatible context in /pub/www/html/cakephp/cake/libs/inflector.php on line 512

Notice: Trying to get property of non-object in /pub/www/html/cakephp/cake/libs/cache/file.php on line 248

Fatal error: Call to a member function cd() on a non-object in /pub/www/html/cakephp/cake/libs/cache/file.php on line 248;
さくらVPSの旧環境は、こんな感じ。
CentOS5
php5.4.36
mysql5.5.4-m3
apache2.2.27

 DTIの新環境は、こんな感じ。
CentOS6
php5.5.28
mysql5.6.26
apache2.2.31
 
この差分にエラーの謎の鍵があるはず。恐らく原因はPHPか。
しかしよく考えると俺っちの開発環境であるMBPR13US(注:Mac Book Pro 13インチ Retuna USキーボードモデル) は、PHPは5.5.26。

・・開発環境ではちゃんと動いている。もしかして過去に解決したっけ? 
core.phpの差分を見てみる。
 
diff -u core.php.production core.php.develop 
---
-	//date_default_timezone_set('UTC');
+	date_default_timezone_set('UTC');

ちゃんと解決してるじゃん!過去の俺っち!やるじゃん。
この通り修正したらちゃんと動いたよー!

あ、ちなみにAPはCakePHPの1.3系と言う技術負債的な環境ですw

時間できたらLaravel5にする予定です!

このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr Clip to Evernote

さくらからVPSの更新案内が来た。
これは4年前からレンタルしている、さくらインターネットの「さくらのVPS 512」の案内だ。
今となってはもう契約できない古いプラン。メモリ512MBだったけど1GBにしてくれている。

まあそれなりに役に立ったけど、今振り返ると赤字であったw
月1000円の費用で赤字かよって、どんだけしょぼいサービスなんだよって。
勉強代と思えば十分元は取れたけどね。

年払いにすると安くなるから、それで今日までやってきたけど、年払いだと解約のタイミングが年単位になって重いから解約しようかと考えた。(忘れちゃうし・・)

他社のVPS(DTIとか)も安くなったので、そっちにリプレースするつもり。

このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr Clip to Evernote

↑このページのトップヘ