朝霞市在住のWEB系エンジニアかあさんのPHPメインの雑記帳

ITかあさん

最新記事

WordPressのテストデータベースと本番環境データベースを分ける

WordPressのテストデータベースと本番環境データベースを分ける


CPIのレンタルサーバーに移転した話は前回のブログの通りなのですが、このCPIレンタルサーバー、テスト環境と本番環境の2つが予め用意されているんですね。

テストURLの例

http://(ユーザーアカウント).smartrelease.jp/

WordPressのWordPressのwp-config.phpにDBを複数記述する

CPIのレンタルサーバーだとテストサーバーからSmartReleaseというツールを使って本番環境にデプロイしていくのですが、何も設定しないと本番環境とテスト環境のデータベースは一緒なので、データベースを2つ用意してあげて、wp-config.phpにホストによってデータベースを切り替えられるように設定してあげればOKです。

wp-config.phpに記述するのが正しいフローなのかどうかは不明ですが、取り急ぎDBをHOSTで切り替える手段として。

ITかあさんをCPIレンタルサーバーに移転した話

明けましておめでとうございます!正月休みに移転完了


明けましておめでとうございます! ITかあさんです。
長年MicrosoftAzureを使ってきましたが、この度 レンタルサーバー、CPI のレンタルサーバーに移転させました。

サーバー運用コストの大幅削減に成功

クラウドサーバー運用時代と比べて運用コストが大幅にさがりました。
2コア、 メモり3.5GBで月額 1万ほどの設定の金額感のはずですが、
定期バックアップも含めると徐々にサイズを圧迫し、気づけば毎月 3万越え。
一方移転先では格安のレンタルサーバーが乱立する中でも3800円(税別)でお高めの価格設定でしたが、技術的なサポートを含め 電話サポートも対応しているし、

・git
・PHPのバージョン選択
・Ruby,Python対応
・テストサーバー完備
・テストサーバーからのデプロイ

など、ブログやちょっとしたアプリケーションを動かすにはエンジニアとしても申し分ない環境だと判断しました。
php.iniの変更ももちろんできましたので、WordPressを動かす分には今のところ不都合は一切感じていません。

SmartReleaseがお気に入り


特にありがたいのはテストサーバー、テストサーバーからのデプロイ。テスト用のURLがデフォルトで1つ割り当てられており、一通りテストサイトで確認をして問題なければSmartReleaseから一発デプロイ可能。もちろん、本番からテストへ同期を取ることもできます。

実際このITかあさんブログもテストサーバー、テスト用DBを立てて CPIのデプロイサービスを通してリリースしました。
事前に確認しながら運用できるので、もういちいちWordPressのプラグイン追加するたびにドキドキせず、事前に全く同じ環境で確認してから本番で追加すれば良いんで、そこも安心しています。

レンタルサーバーはもう7,8年近く使っていなかったので、どこまで活用していくかはまだ未定ですが少なくともITかあさんブログやまだ作ってない法人サイト、メールアドレスにしてもレンタルサーバーで良いかな、と思ってます。

クラウドサーバーは高い!っていう印象になってしまい、申し訳ないんですが、ようは住み分けの問題
。今後はうまく使い分けていければいいかな、と思います。

追記:(2018-01-09)マルチドメイン追加もテストURLが割り当てられた

24時間ほどのタイムラグが発生したのですが、契約ドメインとは別にマルチドメインを追加。マルチドメインにもテスト用URLが割り当てられました!
すごい!
これでいくつものサイトの運用がテスト環境の構築含めて対応してもらえるんで、めちゃくちゃコスパ最高ですぞ!!

複数ActiveRecord mergeメソッドでorder by

Post.joins(:entries).merge(Entry.order("entries.id DESC"))

mergeメソッドの中で orderの基準となるフィールド名を指定するんだけど、”id”はどちらのActiveRecord (Model)でもつかっている場合、どちらのActiveRecordのidか不明のため、その場合はテーブル名と合わせて指定する必要がある。(まあ、普通そうだよね。)

PHP: in_array() to Ruby

PHP

$array = array(‘foo’, ‘bar’, ‘baz’);
if(‘foo’, in_array($array)) {
 echo ‘配列にfooが含まれています’;
}

Ruby

array = [‘foo’, ‘bar’, ‘baz’];
if( array.include?(‘foo’) ) {
 puts ‘配列にfooが含まれています’;
}