サーバネタから離れてAmazon Kindle Fire 7 2015にPlayストアを入れた話

 先日Amazonから発売された超低価格タブレットFire タブレットを購入したんでPlayストアを入れた話。
 プライム会員なら4980円で購入できる超低価格端末でありながらIPSディスプレイ、MTの
A7QuadCoreにMali450PでH265も再生支援できてAnTuTuベンチで23000くらい出る(Nexus7より上)遊べる実用タブレット。
 OSはFireOS5で、Android5.0ベースのカスタムOS。 ストアが標準ではAmazonしか入ってないけど、Root化とかせずにPlayストアを入れられたのでそのメモ。

 手順としては特に難しいことは無く、
1,別のAndroid端末にBluetooth App Senderをインストールして、Google Playストア・Google Play開発者サービス・Googleアカウントマネージャーアプリを転送する
(Xperia Z3 Android 4.4使用)
2,Fireの設定画面で、提供元不明のアプリを有効にする
3,FireでAmazonストアからESファイルエクスプローラをインストールして、1で転送したAPKを開いてインストールする
 これだけで完了。 完了後、ホーム画面に追加されたPlayストアを開いてGoogleアカウントを設定してやれば普通に導入できるようになった。
 Androidタブレットとの差異としては、ホームアプリ・ロックアプリの切り替えが出来ないため、ランチャー(ADWやGo Launcher等)をインストールしても、Fireランチャーから更に起動するしかなく、ホームボタンでは結局Fireランチャーに戻ってしまう位で、一般的なアプリは殆ど問題なく利用できた。
 Root不要でここまで出来れば、後は普通に遊びまくれるだろう。

(368)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

自宅に新品CISCOがやってきた

 これまで、自宅のCISCO機材は中古品とかばっかりで1812/2811、CAT2960/3750なんかだったんだけど、今回、新品のCISCOルータを購入してしまった。
 と言っても、特に高い物ではなくて、最近出たC841Mと言うルータ。 CISCOなんだけど、ちょっと大きいブロードバンドルータぐらいのサイズ。
datasheet-c78-732678_0
 値段はAdvanced Securityバンドルの2年保守で39800円と言う安さで、今はキャンペーンでNTT-Xさんで12000円引きクーポンやっていたので27800円で入手。
 この値段だと、高性能家庭用機材よりやや高く、業務用低価格機材より安いという絶妙な価格設定。
 スペック的には全ポートGbE、WANが2、LANがスイッチング4ポート、IPSecスループット350Mbps、IPv4ルーティング2.0Gbpsと言う事で、NECのIX2215/2105の中間程度の性能かな。 まぁ、家庭用回線の1Gフレッツ光にはちょうど良い性能。
 CISCO慣れしていない人も日本語GUI(CCP Express)で設定が出来る仕様だけど、従来CISCOユーザはシリアルケーブルでちゃんとセットアップできる、IOSが乗ってるちゃんとしたCISCOルータ。 WIMスロットもあって、海外じゃ3Gモジュールとか挿したモデルも出ている。
 この値段でこの性能のCISCOが出てくると各社の製品戦略に影響を与えてくる可能性もありそうだな。
 とりあえず、コンフィギュレーションを書こう。

(1124)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

今更ながらMariaDBに更新した

 サーバのミドルウェアとかって入れ替えるのは結構面倒くさいので、とりあえずパッケージマネージャでセキュリティ修正だけ適用して済ませていたんだけど、最近、WPが重いんでMySQLを入れ替えることにした。
 従来はMySQL5.5が入っていたけど、今回はMariaDB10.1にアップした。 CentOS5.5の古い環境・・・

  やってみればこれで全部終わった。 既存DBのダンプ実施、mysqld停止、設定バックアップ、yumリポジトリの追加、既存のmysqldをyumでアンインストール、そのままMariaDBを入れようとするとmysql-libsがコンフリクトしたのでmysql-libsをrpmで削除(yumだと依存でzabbixとか一式削除されそうだったためrpmで依存無視除去)、yumからMariaDBをインストール、コンフィグを戻し、mysqlをスタート(mysqldからmysqlに変わっている)、mysql_upgradeしてデフォルト起動をOnに設定。 一部のアカウントがOld-passwordになっていてsecure-authで蹴られて繋がらなくなってしまった。
この場合、管理ユーザでパスワードを再登録するところだけど、なんとrootがold passwordになっていて入れなかったので、/etc/my.cnf.d/server.cnfのmysqldセクションにskip-secure-authを記述して一時的に起動し、old_password=0にてPASSWORDを再登録してskip-secure-authを削除して再起動した。

 更新にあわせてデータフォーマットの変更、パラメータ調整などを実施したところ激重だったwpのstatpress処理時間が劇的に改善した(デフォルトでstatpressはmyisamなので、mysqldumpして定義部分をENGINE=INNODB ROW_FORMAT=DYNAMICに変更してインポート)

(535)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

FuelPHPでマイグレーション

 FuelPHPでデータベースを管理するときにマイグレーションを使うと便利だけど、細かいことはしないのでoil g migrateとoil r migrateで済ませていたけど、ちょいちょい開発でいじるために調べた内容をメモする。

 まず、マイグレーションは APPPATH/migrations/の下に「連番_名前.php」(ex.123_add_index.php)みたいなファイルを作る。
このファイルの中身は、

 みたいな、upとdownメソッドを持つクラスになっている。 ファイル名の名前にあわせてクラス名を設定する。
 upメソッドではマイグレーションを適用する処理を書く。 この場合は、parametersテーブルのkeyフィールドにUNIQ_KEYと言うUNIQUEキーを設定している。
 downメソッドではマイグレーションを取り消す場合の処理内容を書く。 この場合は、追加したキーを削除。

 マイグレーションを実行する場合は、通常 oil r migrate で実行するけど、開発では適用位置を調整したいのでオプションを使う。
oil r migrate:up
マイグレーションを1段階だけ実行する

oil r migrate:down
マイグレーションを1段階だけ取り消す

oil r migrate –version=12
マイグレーションを指定したバージョンにする(この場合は、012_hoge.phpマイグレーションの実行状態に移動する。 現在の適用状態が12未満なら進み、13以上なら巻き戻る)

 初期レコード投入や、そもそもDBの構造を操作せずにレコードを操作することも出来るので、コードリストなどを管理することも出来る。

(425)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

PHPで簡単にロックファイル管理

久しぶりにPHPネタ

 同時に実行されたら困るような処理を手軽に実装するときにロックファイルを利用するけど、何かで転けてファイルが削除されない場合とかに面倒(FATAL Errorだと終了処理になってしまいtry catchとかで削除処理を書いても処理が走らない)
 PHPでは、エラーでも何でも終了処理するときに実行されるコードを登録するのに、register_shutdown_functionと言うのがあるので、これを使ってやると都合が良い。

みたいな感じで実装する。

ロックファイルがあるか確認して、あれば異常終了する。
ロックファイルを作成する。
ロックファイルを削除する終了関数を登録する。
この手順以降では、エラー時にもexitとかで終了させても勝手にロックファイルが削除される。

(386)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

iproute2を使って複数経路を制御する

 とあるサーバを設置したときのこと、eth0を内部LAN(Internal)に、eth1をグローバル(External)に接続した上に、通常通信は内部LAN側のGWを使用したいときのメモ。
 通常、デフォルトゲートウェイはシステム全体で1個なので、route add default gw LAN1-GWみたいにすると、eth1から来た通信の応答もeth0経由のLAN1-GWから出て行こうとして通信が成立しなくなる。
 この場合、正しいインタフェイス、経路から出て行くためにはiproute2を利用する。 CentOSではiproute-2系パッケージである。
 ip route2ではポリシールート制御が可能なので、
/etc/sysconfig/network-scripts/route-eth1
0/0 via GlobalGW dev eth1 table 100

/etc/sysconfig/network-scripts/rule-eth1
from GlobalIP table 100 prio 100
iif eth1 table 100 prio 200

 GlobalGWは157.7.x.yみたいな、グローバル側のゲートウェイIP、GlobalIPも同様でeth1自体のIPを設定する。

0/0 via GlobalGW dev eth1 table 100
 この場合は、route-eth1の設定により0/0(デフォルト)のゲートウェイにGlobalGWを設定しeth1から出て行く。 この経路の識別子としてtable 100を設定。

from GlobalIP table 100 prio 100
 GlobalIPから送信するパケットはtable 100を適用する。
 
iif eth1 table 100 prio 200
eth1から入ってきたパケットをtable 100で処理させる。

 これによって、通常の通信は、既存のデフォルトゲートウェイで処理され、eth1で入ってきたパケットの応答のみグローバルで直接応答する。

(711)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

お名前VPSとOpenswan/IX2025/ZFSで重複除外ファイルサーバ構築

 クラウドストレージは便利だけど、直接PCで開くのにはやっぱりWindowsファイル共有が便利なんで、お名前.com VPS上にSambaを乗っけてファイル共有サーバに仕立てようかと思う。
 と言っても、Sambaを直接設置とかセキュリティ的に非常にアレなので、自宅のIX2025ルータとお名前VPS間にIPSec VPNを張って、VPN上だけファイル共有通信を可能にした。
 テスト環境は、お名前2GBプランのデフォルトCentOS6.5導入完了状態とIX2025ルータFW9.0.54、ローカル回線は光コラボのギガスマにフレッツ光対応、固定IPサービス「ZOOT NEXT for フレッツ光」サービスで相互固定IPなので、メインモードIPSecVPNになる。
 お名前VPSの初期導入が完了した状態からスタート。

 パッケージ導入、ZFS-fuse起動設定、fstabの/dataのマウント設定を削除、デフォルトの/dataを削除してzpoolを作成し、zpool/publicを重複除外有効にした。  ZFS-fuseではfstabマウントでは無く、ZFS-fuse側の設定でマウントする。
 通常、/zpool/zfsの位置にマウントされる(今回なら/zpool/public) マウント位置設定はzfs mountpoint=/data zpool/publicみたいにしてmountpointに設定する。

 次にIPSecの設定を行う。 設定ファイルの編集 /etc/ipsec.conf

 自宅のローカルは192.168.0.0/23でIX2025は192.168.0.1になっている。
 NAT_Traversal有効、トンネルタイプIPSecでIKE/ESP、プロポーザル設定等のごくごく基本設定。 今回はPSK認証なので/etc/ipsec.secretに共通シークレットを記述。

 あとは、カーネルパラメータを修正する必要があるので、/etc/sysctl.confを編集(上側の修正はipsec verifyコマンドの指示に従っている。 IP_ForwardはOnじゃないとトンネリング出来ない)

 編集後に適用

 あとは、iptablesに穴開けするため、/etc/sysconfig/iptablesを編集。

 IPSecに関係するUDP500とそのNAT Traversalである4500、そしてESPを許可する。
 また、Samba等の為にIPSecトンネルを越えてきた192.168.0.0/23からの接続を全て許可する。
 そして、IX2025のコンフィギュレーションに移って・・・

 プロポーザル関係の設定が中心。
 より強度の高い保護をする場合は、IKEの鍵認証にするとか、プロポーザルをAES/SHAの長いものにするなど、Openswanと共に設定すれば良い。
 とりあえず、これで設定完了なので、VPS側でサービスを起動する。

 数秒でネゴシエーションされて、IX2025のshow ike saでph1/ph2を確認する。
 VPS上にApacheを起動して、phpinfo()とかを設置したURLをローカルのクライアントから見ると、REMOTE_ADDRにLAN内IP(192.168.0.x)が表示されるので確認出来る。
 これで、ルータとVPS間が暗号トンネル上に乗っているので平文通信も気にせず行えるし、FWの穴開けなど気にせずに色々なサービスを動かすことが出来る。
 あとは、ごく普通のSamba設定。
 /etc/samba/smb.conf、pdbedit等やって/zpool/publicをpublic共有する。
 計測では、Samba経由の書き込みでは6MB/s位でZFS-fuseの負荷が1コア100%になって頭打ち。
 さすが、リアルタイムにハッシュを計算して照合してと言う処理が挟まるので負荷が高いな。
 ハッシュ計算のアクセラレーション命令セットを使わないと厳しそうだ。
 Dedup効率の確認は、zpool listを実行すると、DEDUP 3.14Xみたいな感じで表示される。 この数字は、重複除外前/重複除外後のサイズの比率なので、同じデータをコピーすれば2.00X、更にコピーすれば3.00xとなって表示される。
 データを入れるにつれて、データのハッシュデータベースが大きくなっていくためメモリ消費の増加と速度低下が発生するが、1.50x位であれば180GBの領域を使い切ってもメモリは大丈夫そうだった。
 デイリーで世代を取りつつドキュメントディレクトリをROBOCOPYするとか言うのには便利そうだな(この場合、ドキュメントを丸ごと圧縮するとアライメントずれとかで重複除去効率が低下するため、生ファイルをそのままコピーしておいた方が効率が良い)

(377)


カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | 1件のコメント